插入
命令 |
说明 |
i |
光标前插入 |
a |
光标后插入 |
I |
当前行首插入 |
A |
当前行尾插入 |
O |
当前行之前插入新行 |
o |
在当前行之后插入新行 |
当前行的光标操作
命令 |
说明 |
fx |
移动到当前行的下一个x,x可以是一个字符 可以使用 ; 来重复你的上一个 f 命令 |
FX |
移动到当前行的上一个x,x可以是一个字符 |
w |
移动光标到后一个单词 |
b |
移动光标到前一个单词 |
0 |
移动光标到当前行首 |
^ |
移动光标到当前第一个字母位置 |
$ |
移动光标到当前行尾 |
整个文件的光标操作
命令 |
说明 |
gg |
到整个文件的第一行 |
#gg 或 #G |
到整个文件的第#行 |
G |
到整个文件的最后一行 |
<c, f> |
向后移动一屏 |
<c, b> |
向前移动一屏 |
H |
移动光标到屏幕上面 |
M |
移动光标到屏幕中间 |
L |
移动光标到屏幕下面 |
* |
读取光标处的字符串,并且移动光标到后面出现的地方 |
# |
读取光标处的字符串,并且移动光标到前面出现的地方 |
/text |
从光标处开始往下查找text文本,可以使用n查找下一个 |
?text |
从光标处开始往上查找text文本,可以使用n查找上一个 |
`. |
回到你上次编辑文件的地方 |
ma |
在当前光标处标记添加书签a,书签只能是小写 |
`a |
跳到书签a处 |
关键词自动完成
命令 |
说明 |
<c, n> 或 <c, p> |
关键词自动完成 |
复制、粘贴
命令 |
说明 |
Y or yy |
复制当前行 |
#yy |
复制从光标所在行往下的#行 |
yw |
将光标所在之处到字尾的字符复制 |
#yw |
复制#个字 |
p |
粘贴 |
l1, l2 co l3 |
复制第l1行到第l2行之间的内容到第l3行后面 |
删除
命令 |
说明 |
dd |
删除光标所在行 |
#dd |
从光标所在行开始删除#行 |
:l1,l2 d |
将l1,l2行之间的内容删除 |
dgg |
删除到首行 |
dG |
删除到尾行 |
X |
删除光标所在位置的前面一个字符 |
x |
删除光标所在位置的后面一个字符 |
#x |
删除光标所在位置后面#个字符 |
d^ |
删除到行首 |
D or d$ |
删除到行尾 |
dw |
删除一个单词/光标之后的单词剩余部分 |
d#w |
删除#个单词 |
diB |
删除{}中的内容 |
daB |
删除{}及其内的内容 |
:% g/^$/d |
删除空行 |
:% g/pattern/d |
删除包含特定字符的行(全局删除匹配行) |
:% 1,3g/pattern/d |
删除包含特定字符的行(删除第1-3行里的匹配行) |
:% v/pattern/d 或 :% g!/pattern/d |
删除不包含指定字符的行 |
多行操作
命令 |
说明 |
:%s/^/要添加的内容 |
在每行行首添加相同的内容 |
:%s/$/要添加的内容 |
在每行行尾添加相同的内容 |
:1,$j |
多行转一行 |
:%j 或者 :%j!(此法不会再行尾添加空格) |
多行转一行 |
:%s/XXX/^M/g |
一行转多行,^M为先按ctrl+v,再按ctrl+m出来的,不是字符串^M |
:1,$s/.$// |
$代表行末或者最后一行。1,$表示全文,也可用%表示。s表示替换, /.$//:正则,把最后一个字符替换为空 |
:set nu |
显示行号 |
:set nonu |
取消显示行号 |
常用方法
执行命令
> :w !{cmd}
在vim保存时获得sudo权限
> :w !sudo tee %
在每1000行后添加数据
$ awk '{if(NR%1000==0) {print "aaaaaaa"$0} else print}'
参考
https://linuxtoy.org/archives/efficient-editing-with-vim.html
https://coolshell.cn/articles/5426.html
https://segmentfault.com/q/1010000000151086
网友评论