插入
命令 | 说明 |
---|---|
i | 光标前插入 |
a | 光标后插入 |
I | 当前行首插入 |
A | 当前行尾插入 |
O | 当前行之前插入新行 |
o | 在当前行之后插入新行 |
光标操作
命令 | 说明 |
---|---|
fx | 移动到当前行的下一个x,x可以是一个字符 可以使用 ; 来重复你的上一个 f 命令 |
FX | 移动到当前行的上一个x,x可以是一个字符 |
w | 移动光标到后一个单词 |
b | 移动光标到前一个单词 |
0 | 移动光标到当前行首 |
^ | 移动光标到当前第一个字母位置 |
$ | 移动光标到当前行尾 |
gg | 到整个文件的第一行 |
#gg 或 #G | 到整个文件的第#行 |
G | 到整个文件的最后一行 |
向后移动一屏 | |
向前移动一屏 | |
H | 移动光标到屏幕上面 |
M | 移动光标到屏幕中间 |
L | 移动光标到屏幕下面 |
* | 读取光标处的字符串,并且移动光标到后面出现的地方 |
# | 读取光标处的字符串,并且移动光标到前面出现的地方 |
/text | 从光标处开始往下查找text文本,可以使用n查找下一个 |
?text | 从光标处开始往上查找text文本,可以使用n查找上一个 |
`. | 回到你上次编辑文件的地方 |
ma | 在当前光标处标记添加书签a,书签只能是小写 |
`a | 跳到书签a处 |
复制、粘贴
命令 | 说明 |
---|---|
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 |
:%s/; /;\r/g | 一行转多行,;为分隔符 |
:1,$s/.$// | $代表行末或者最后一行。1,$表示全文,也可用%表示。s表示替换, /.$//:正则,把最后一个字符替换为空 |
:%s/ *$//g | 删除行尾空格(注意:/和*中间有一个空格) |
: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