在日常使用经常用的vim命令总如下:
1.导航键:
屏幕下滚一行:CTRL + e
屏幕上滚 一行:CTRL + y
屏幕下滚半屏: CTRL + d
屏幕上滚半屏:CTRL + u
回到上次的位置:
'' (two apostrophes)
or
``(two backticks)
backtick 回到行内的同样位置, apostrophe回到行的开始
2.打开时跳转:
跳转到某行: vim +行号 文件名
$ vim +546 file
跳转到某个函数: vim +/函数名 文件名
$ vim +/function_name file
选择:
virtual模式:v
virtual block模式: Ctrl-v
virtual line模式: Shift-v
virtual block 可以在前面添加字符,然后应用到所以block。virtual line不行。
选择相关的操作:
The objects that can be used are:
aw a word (with white space)
iw inner word
aW a WORD (with white space)
iW inner WORD
as a sentence (with white space)
is inner sentence
ap a paragraph (with white space)
ip inner paragraph
ab a () block (with parenthesis)
ib inner () block
aB a {} block (with braces)
iB inner {} block
a< a <> block (with <>)
i< inner <> block
a[ a [] block (with [])
i[ inner [] block
编辑:
复制12行到18行 : 12,18y
删除到文件末尾: dG
删除到文件开始: dgg
删除12行到18行:12,18d
删除从当前行到N行之间的行: dNG
块缩进: CTRL + v然后选定块,按I,按tab,space等键, 最后按ESC键;或者选定块后,按<<, >>然后 ESC键
查找:
查找光标所在词, 前向查找:星号"*",后向查找:井号"#"
搜索整个词, \<代表词的开始, \>代表词的结尾: \<i\>
搜索以i为开始的词:\<i
查找重复的词, \( \)代表group, \<\w\+\>(词开始\<, 一个或多个词\w, 词结束\>)就是搜索整个词, 然后搜索任意数量的空格(\_s*, \s代表space或者tab,\_s代表space, tab或者换行),最后\1代表在group 1中的词:
\(\<\w\+\>\)\_s*\<\1\>
查找这个或者那个, \| 代表或者的意思:red\|green\|yellow
以下是正则规则:
\ 取消后面所跟字符的特殊含义。比如 \[vim\] 匹配字符串"[vim]"
\] 匹配其中之一。比如 \[vim\] 匹配字母"v"、"i"或者"m",\[a-zA-Z\] 匹配任意字母
\[\^\] 匹配非其中之一。比如 \[\^vim\] 匹配除字母"v"、"i"和"m"之外的所有字符
. 匹配任意字符
\* 匹配前一字符大于等于零遍。比如 vi\*m 匹配"vm"、"vim"、"viim"......
\\+ 匹配前一字符大于等于一遍。比如 vi\\+m 匹配"vim"、"viim"、"viiim"......
\\? 匹配前一字符零遍或者一遍。比如 vi\\?m 匹配"vm"或者"vim"
\^ 匹配行首。例如 /\^hello 查找出现在行首的单词 hello
$ 匹配行末。例如 /hello$ 查找出现在行末的单词 hello
\\(\\) 括住某段正规表达式
查找并删除:
查找所有含有George Bush的行并删除 :g/George Bush/ d
查找所有含有George Bush的行并删除它后面的5行 :g/George Bush/ .+5 d
查找所有含有Bush的行并删除它和后面的5行 :g/Bush/ .,+5 d
特殊字符转义:
用back slash来转义特殊字符, 如搜索字符串"/letv/fet":/\\/letv\\/fet
Note: :g (:global)命令非常有用,它可以对每一行运行任意的:ex 命令去匹配正则表达式。
查找并替换:
在所有行里查找foo,并且替换为bar :%s/foo/bar/g
**在所有行里查找foo,并且替换为bar,但是需要确认**:%s/foo/bar/gc
仅仅查找整个词foo并替换 :%s/\\\