查找字符,标点

t{char} - Move forward until the next occurrence of the character.
f{char} - Move forward over the next occurrence of the character.
T{char} - Move backward until the previous occurrence of the character.
F{char} - Move backward over the previous occurrence of the character.
%       - 括号匹配

指出查找次数

3fa  - 在当前行查找第三个出现的a

查找词(word)

/{pattern} - 向后搜索pattern
?{pattern} - 向前搜索pattern
*          - 向后搜索当前光标所在的字
#          - 向前搜索当前光标所在的字
gd         - 跳到光标所在位置词(word)第一次出现的位置 g(o)d(efine)

在移动时进行复制,删出,修改

几乎所有移动都可以与v, y, d配合使用

ve              - 选定一个词
ye              - 复制一个词
de,(dw)         - 删除一个词
dt"             - 删除所有内容,直到"
yw (yank word)  - 复制当前光标下的词
0y$             - 从行头拷贝到行尾
200ggv541gg     - 从200行选择到541行
y/{pattern}<Enter>
y?{pattern}<Enter>
d/{pattern}<Enter>
d?{pattern}<Enter>
c/{pattern}<Enter>
c?{pattern}<Enter>

还可以与重复配合,如:

y2/foo - 拷贝2个`foo`之间的字符串

以上的d,v,y可自由替换,均有作用

查找替换

vim的替换命令为:

:[range]s/{pattern}/string/[c,e,g,i]
  • range表示范围,.表示当前行,$表示最后一行,%表示整个文件
  • s表示substitute
  • pattern为匹配的模式
  • string将会取代{pattern}
  • c表示confirm
  • e不显示error
  • g表示globe,整行替换
  • i表示ignore,不区分大小写

常用:

:s/a/b/g      - 当前行,用b替换a
:n1,n2s/a/b/g - 从n1行至n2行,用b替换a
:%s/a/b/g     - 当前缓冲区用b替换a
:%s/a/b/gc    - 当前缓冲区替换(进入选择模式)
:%s/^/b/g     - 当前缓冲区在开头加b
:%s/$/b/g     - 当前缓冲区在结尾加b