vim常用命令
命令 | 作用 |
---|---|
:set number 回车 | 显示行号 |
:1d | 删除第一行 |
:u | 撤销 |
:r | 重做 |
:%s/^”//g | 删除每行行首的”号 |
:%s/”/#/g | 将双引号 ‘”’ 替换为 ‘#’ |
:11,20s/^/#/g | 将第11行至20行注释掉,(操作完成后可能会有黄色底色,使用:noh取消黄色底色(highlight)) |
:%s/(#.*$)/\n\1/g | 在每行的中间插入,使用分组来引用原来的文字 |
:747,764s/^\d{3}(.*)$/\1/g | 把第747行至762行前面的数字删除(在这里是因为拷贝导致前面带了数字,只需要删除数字,后面的代码要保留,在替换里面使用了组来代替,回头有更好的处理方式再来补充。) |
vim中的剪切复制粘贴
首先,可以在命令模式下输入v进入自由选取模式,选择需要剪切的文字后,按下d就可以进行剪切了。
对于复制命令,和剪切命令大体相似,就是把相应的d换成y即可:
至于粘贴命令最简单,在需要粘贴的光标处按下p即可。
yy:复制当前行
nyy:n表示大于1的数字,复制n行
vim中的删除
删除行
按ESC键退出编辑后,按 “: 起始行号,结束行号d回车”即可删除,示例:
:1,19d #删除第1到19行
列模式下的删除
按ESC键退出编辑;
将光标定位子想要删除的起始列;
ctrl+v进入列编辑模式;
移动光标至结束列;
按d键删除(注意不是delete键哦);
注意克服windows下的一些习惯,用光标而不是鼠标,按d字母按键而不是delete键。
(直接通过移动光标选中,对列不对齐时,可能比较长的行,无法全部选中,尤其是需要一直删除到行末,按end可直接到达,在列不对齐情况下也可将内容全部选择)
批量注释
插入注释:
1).用v进入virtual模式
2).用上下键选中需要注释的行数
3).按Control+v(win下面ctrl+q)进入列模式
4).按大写“I”进入插入模式,输入注释符“#”或者是”//”,然后立刻按下ESC(两下)
一些正则表达式的相关应用
替换[ -z ${variable} ]为[ -z “${variable}” ]
:s/\(-z\s\+\)\(\${.\+}\)/\1"\2"/
在本例中需要注意的是实际上行是这样的:
[ -z ${host} ] || echo ${host}
在匹配的时候* 贪婪匹配,所以会变成
[ -z "${host} ] || echo ${host}"
所以要修改一下:
:s/\(-z\s\+\)\(\${.\{-1,}}\)/\1"\2"/
这样的结果就是想要的了:
[ -z "${host}" ] || echo ${host}
查找下一个,然后替换
:s/pattern/replacestr/回车 #在这里,从当前行开始查找,如果当前行匹配,则替换,否则报找不到pattern的错误
/回车 #查找下一个匹配行
& #替换
标示符 | 说明 |
---|---|
数字 | 行号 |
. | 当前行 |
$ | 文件的最后一行 |
% | 整个文件,与1,$相同 |
‘t | 标记t |
/pattern[/] | pattern的下一个匹配行 |
?pattern[?] | pattern的上一个匹配行 |
\/ | 最近一个搜索pattern的下一个匹配行 |
\? | 最近一个搜索pattern的上一个匹配行 |
\& | 最近一个替换pattern的下一个匹配行 |
如果没有指定行,操作只针对当前行。