修改 查找 替换
大小写的转换
~
- 转换当前光标所在的字符( 如果是小写就转为大写, 反之转为小写, 下同 )g~w
- 当前光标之后的一个单词转换大小写 这里同样是 操作+动作 的组合方式
比如g~$
就是对当前位置到行尾进行大小写转换
~
表示的是小写转大写, 大写转小写
如果要全部转大写, 就是U
, 全部转小写, 就是u
比如gU$
就表示从当前位置到行尾全部转大写gu$
就表示从当前位置到行尾全部转小写
按下
.
就是重复上一个修改操作
比如上一个操作是执行了g~w, 按下.
就是再次执行转换单词的大小写
查找
/{string}
是用于查找指定字符串
如果设置了ignorecase , 查找时会忽略大小写
如果设置了hlsearch, 会同时高亮所有匹配的位置
之后按Enter
再按n
, 就可以将光标切换到下一个匹配的位置N
是切换到上一个匹配的位置
替换(substitute)
替换需要使用命令模式执行, 也就是先输入:
格式统一为[range]s/from/to/[flags]
range是搜索范围
1,10
- 表示1到10行10
- 只有第10行%
- 所有整篇文档10,$
- 从第10行到文档末尾
flags是替换方式的标识
c
confirm 每次替换都询问e
error 不显示错误g
global 在当前指定的范围内全局替换i
ignore case 忽略大小写
例如
- s/str1/str2/g - 将当前行中的str1替换为str2
- %s/str1/str2/g - 将整篇文档所有的str1替换为str2
from的位置是可以使用正则表达式的
与通用的正则元字符基本相同, 但是大部分要加\
转义
比如\d+
在通用的正则结构当中表示匹配至少1个的数字
在vim当中要写作\d\+
除了[]不需要,\d\+
同样可以写作[0-9]\+
缓冲区
缓冲区是vim进行多文件编辑的一个基础功能
所有的文本编辑器在对文件进行编辑的时候, 都是先把文件的内容读到内存当中
只有在进行修改后保存时才写入到磁盘
缓冲区中的就是此时读取到内存的文件
我们可以使用vim命令同时打开多个文件
比如vim buf-*.txt
或者是vim buf-1.txt buf-2.txt buf-3.txt
此时主界面显示出的是其中的第一个文件
执行:ls
或者:buffers
或者:files
可以查看缓冲区当中的文件
其中的 %a 是缓冲区的标记
有以下几种
a
- 激活的 ( active )h
- 隐藏的 ( hidden )%
- 当前#
- 交换=
- 只读+
- 已经更改的-
- 不可更改的
其中交换代表的意思就是当前缓冲区的上一个
比如从第二个切换到了第三个, 那么当前的是第三个, 交换是第二个
缓冲区切换
:bp
- 上一个 ( buffer previous ):bn
- 上一个 ( buffer next ):bf
- 第一个 ( buffer first ):bl
- 最后一个 ( buffer last ):b {序号}/{文件名}
- 切换到指定缓冲区:ball
- 同时激活所有缓冲区:b#
- 切换到交换缓冲区
缓冲区列表操作
添加文件到缓冲区 ( buffer add ):badd {文件名}
( 这个文件不是必须存在, 不存在的话相当于创建新文件 )
删除缓冲区中的文件 ( buffer delete ):bd {序号}/{文件名}
:qall
- 退出全部缓冲区:wall
- 写入全部缓冲区:bufdo {命令}
- 对所有缓冲区执行该命令, 比如 :bufdo set number
( 所以退出全部缓冲区也可以写:bufdo q
)
分屏
只有缓冲区的操作, 毕竟一次只能看到一个文件
vim还提供了分屏的支持
使用参数-O/o
,分别代表竖直分屏和水平分屏
1 | vim -O buf-1.txt buf-2.txt |
添加分屏
:sp
- 添加水平分屏:vsp
- 添加竖直分屏
此时分屏出来的窗口当中打开的还是同一个缓冲区
之后可以通过缓冲区切换来打开不同的缓冲区
焦点切换
ctrl+w h
跳转到左边的窗口ctrl+w j
跳转到下面的窗口ctrl+w k
跳转到上面的窗口ctrl+w l
跳转到右边的窗口
ctrl+w t
跳转到最顶上的窗口ctrl+w b
跳转到最底下的窗口
调整大小
高度调整ctrl+w {数字}+
增大当前窗口的高度(行数), 默认是1ctrl+w {数字}-
减小当前窗口的高度(行数), 默认是1
宽度调整ctrl+w {数字}>
增大当前窗口的宽度(列数), 默认是1ctrl+w {数字}<
减小当前窗口的宽度(列数), 默认是1