每行的行首都添加一个字符串:%s/^/要插入的字符串
每行的行尾都添加一个字符串:%s/$/要插入的字符串
gU
(变大写)gu
(变小写)
复制、删除与粘贴:
x 删除当前光标所在字符
X 删除当前光标所在前一个字符
yy 拷贝光标所在行.
dd 删除光标所在行.
D 删除从当前光标到所在行尾的内容.
在vim中,很多命令可以和联合使用,上面删除命令可以联合移动命令,还可以加计数前缀,这样可以组合出很多命令,只要你熟悉了这些,很多命令都可以猜得出来,比如:
4x 删除当前光标开始后面4个字符
dw 删除当前单词光标所在位置到结尾处
d2w 删除两个单词
daw 删除当前单词
d$ 删除从当前光标到所在行尾的内容(同D).
w 拷贝从当前光标到光标所在单词结尾的内容.
y0 拷贝从当前光标到光标所在行首的内容.
d0 删除从当前光标到光标所在行首的内容.
y$ 拷贝从当前光标到光标所在行尾的内容.
d$ 删除从当前光标到光标所在行尾的内容.
yfa 拷贝从当前光标到光标后面的第一个a字符之间的内容.
dfa 删除从当前光标到光标后面的第一个a字符之间的内容.
:12,24y 拷贝第12行到第24行之间的内容.
:12,y 拷贝第12行到光标所在行之间的内容.
:,24y 拷贝光标所在行到第24行之间的内容.删除类似.
有没有发现很多命令你都可以猜出来,是不是很灵活啊,有木有!!
替换:
Vim的替换相当高效
:%s/aa/bb/g 在全文中将出现aa的地方替换为bb
(%表示范围为所有行,g表示替换所有匹配点。)下面可以扩展一下这个命令:
:s/aa/bb/g 将光标所在行出现的所有包含 aa 的字符串中的 aa替换为 bb
:12,23s/aa/bb/g 将从12行到23行中出现的所有包含 aa 的字符串中的 aa替换为 bb
(g表示全部替换,还是可以使用c,表示确认替换,此时会询问您是否替换)
可以在符合模式的范围中替换,比如想在两个以hello的开头的行之间做将123替换为111,
可以使用命令:?^hello?,/^hello/s/123/111/g
:.+3,$-5 //这指定当前行下面第三行到文件末倒数第五行的范围。(.表示当前行)
如果你想替换单词,而不是出现指定字符串就替换,可以使用命令:
:%s/\<aa\>/bb/g 在全文中将单词aa替换为单词bb
该命令可同行上进行扩展。
删除行尾空格::%s/\s\+$//(很常用,尤其对代码有洁癖的程序员)
其中%s表示整个文件,\s表示空格, $表示行尾
删除行首空格:%s/^\+\s// (很少用)
其实为了避免斜杠的使用混淆,可以使用"="代替"/"
删除vim打开文件行尾出现的^M:
:%s//^M//g (注,其中"^M"的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的)
:/aa 向下查找字符串aa
:?aa向上查找字符串aa
每行的行首都添加一个字符串:%s/^/要插入的字符串
每行的行尾都添加一个字符串:%s/$/要插入的字符串
gU
(变大写)gu
(变小写)
查看函数man信息:把鼠标移到对应的函数名上然后输入
K
Vim 会在对应的单词上执行外部命令: man
:grep “hello” *.c
这会使 Vim 在所有指定的文件 (*.c) 中查找 "error_string"。Vim 会打开第一个匹配的文件并将光标定位在第一个匹配行。要到下一个匹配行 (无论在哪个文件),可以执行"cnext" 命令。要回到上一个匹配行,可以用 ":cprev" 命令。使用 "clist" 可以看到所有的匹配点。