删除
以下所有输入均在命令模式下:
- 1.删除光标位置到本行开头
d0 - 2.转到文件结尾
G
或转到第9行
9G - 3.删除所有内容(先用G转到文件尾) ,使用:
:1,.d
或者删除第9行到第200行的内容(先用200G转到第200行) ,使用
:9,.d - 4.删除光标所在处字符
x - 5.删除光标所在前字符(大写 X )
X - 6.删除到下一个单词开头
dw - 7.删除到本单词末尾
de - 8.删除到本单词末尾包括标点在内
dE - 9.删除到前一个单词
db - 10.删除到前一个单词包括标点在内
dB - 11.删除一整行
dd - 12.删除光标位置到本行结尾
D d$
移动
- 跳到文件的第一行:
:0 或者 :1
gg - 跳到文件最后一行:
:$
G - 移动光标至行首
home键
数字0
^ - 移动光标至行尾
end键
$ 快捷键”$”前可以加上数字表示移动的行数。例如使用”1$”表示当前行的行尾,”2$”表示当前行的下一行的行尾。
替换命令
语法
1 | :[range]s/source/target/[option] |
range表示要替换的范围,想要全局替换的话,可以使用一个百分号
1 | :%s/xxx/xxxx |
另外,小数点表示当前行,美元符号表示最后一行,数字表示范围
1 | :1,.s 替换第一行到当前行 |
source(源字符) target(目标字符串)
1 | :1,.s/123/456 |
表示把第一行到当前行的首次出现的123替换成456,注意是首次出现,如果要替换某一行全部源字符串需要在后面加上 /g
另外,对于一些特殊字符比如小数点,斜杠,双引号等需要转义,方式是使用反斜杠,在需要转义的字符面前加一个反斜杠 如把”123//“替换为’123\‘
1 | :s/\"123\/\/\"/\'123\\\\\'/g |
“123//“ 中
“ 转义为 "
/ 转义为 /
‘123\‘ 中
‘ 转义为 '
\ 转义为 \
option选项
/g 全局替换
/c 确认
/p 替换结果逐行显示
组合选项的形式是gc
当前行.与接下来两行+2:
1 | :.,+2s/foo/bar/g |
全局替换
1 | :%s/source/target/g |
局部替换
1 | :n,ms/source/target |
查找
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。
Vim查找支持正则表达式,例如/vim$匹配行尾的”vim”。 需要查找特殊字符需要转义,例如/vim$匹配”vim$”。
注意:查找回车应当用\n,而替换为回车应当用\r(相当于
- 大小写敏感查找
在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:
1 | /foo\c |
- 大小写敏感配置
1 | " 设置默认进行大小写不敏感查找 |
排序
Vim内置了针对文本进行排序的:sort命令。你可以使用:help :sort命令,查看详细的帮助信息。
请注意,Vim内置的sort命令与Linux系统下的!sort命令并非完全一致。
文本行排序
使用以下命令,可以针对指定行范围内的文本进行排序:
1 | :3,16sort |
在可视化模式下选中文本,然后执行以下命令可以对选择的文本进行排序:
1 | :'<,'>sort |
使用以下命令,将在排序时去除重复的行。对于重复的多行,将仅仅保留第一行,而其它的行将被删除。
1 | :%sort u |
使用以下命令,可以针对所有文本进行倒序排序:
1 | :%sort! |
使用以下命令,将按照数字进行排序:
1 | :%sort n |
组合以上命令,则可以按照数字倒序排序:
1 | :%sort! n |
文本块排序
假设我们需要对以下文本进行排序。其中,每个条目是被“.KS”和“.KE”包围的文本块;而其定义的每个术语则是以“.IP”开头的多行文字。
如果我们希望按术语进行排序,那么可以通过合并行将文本块整合为一个整体,然后进行排序;稍后再重新拆分行,来恢复原有的文本格式。具体步骤如下:
1)将换行符替换为“@@”字符:
1 | :g/^\.KS/,/^\.KE/-1s/$/@@/ |
2)以“.KS”和“.KE”作为首尾标记来合并行:
1 | :g/^\.KS/,/^\.KE/j |
3)对文本排序:
1 | :%sort |
4)将“@@ ”字符重新替换为换行符,以恢复原有格式:
1 | :%s/@@ /^M/g |
通过以上全局替换命令和排序命令,对文档中的特定术语进行了排序,而且保持格式不变。请注意:
为了缩短实例文字的长度,我们使用“…”来表示省略的文字;
在第2步使用j命令合并行时,自动新增了一个空格;所以在第3步的替换命令中,需要查找“@@”字符以及紧随其后的一个空格;
第4步命令中的“^M”,是使用Ctrl-V和Ctrl-M键输入的;如果Ctrl-V键已经被占用,那么可以使用Ctrl-Q键来替代。
原文链接:https://zhuanlan.zhihu.com/p/110650001