原文地址:LoveDev
VIM == "编辑器之神"
移动
单词移动
Command |
Alias |
W w |
移动到下一个单词开头 |
E e |
移动到下一个单词结尾 |
B b |
倒退到上一个单词开头 |
整行移动
Command |
Alias |
0 |
移动到行首 |
$ |
移动到行末 |
+ |
移动到下一行开头 |
- |
移动到上一行开头 |
根据行号来移动
Command |
Alias |
Ctrl+g |
显示当前行信息 |
nG |
转至第n行 |
G |
转至文本末尾 |
gg |
移至文本开头 |
行位置插入
Command |
Alias |
A |
在一行的结尾处追加 |
I |
在一行的开头处插入 |
o |
在光标所在位置的下一行打开新行插入 |
O |
在光标所在位置的上一行打开新行插入 |
tips1:10I*<Esc>先输入10,然后输入i,接着输入*号,最后按<Esc>
这样就可以在一行开头输入十个*
tips2:同样,5o###<Esc>先输入5,然后输入o,接着输入###,最后按<Esc>
这样就可以在下列5行中每一行开头插入###
插入
字符位置插入
Command |
Alias |
i |
在光标之前插入 |
a |
在光标之后追加 |
删除
字符删除
Command |
Alias |
x |
删除光标所在处字符 |
X |
删除光标所在前字符 |
单词删除
Command |
Alias |
dw |
删除到下一个单词开头 |
de |
删除到本单词末尾 |
dE |
删除到本单词末尾包括标点在内 |
db |
删除到前一个单词 |
dB |
删除到前一个单词包括标点在内 |
行删除
Command |
Alias |
dd |
删除一整行 |
3dd |
删除三整行 |
D d$ |
删除光标位置到本行结尾 |
d0 |
删除光标位置到本行开头 |
复制
行复制
Command |
Alias |
y^ |
复制至行首 |
y$ |
复制至行尾 |
yy |
复制整行 |
yH |
从当前行复制到屏幕顶端 |
yL |
从当前行复制到屏幕低端 |
单词和字符复制
Command |
Alias |
ynl |
向右复制n个字符 |
ynh |
向左复制n个字符 |
ynw |
向前复制n个单词 |
ynb |
向后复制n个单词 |
修改
字符替换
Command |
Alias |
r |
单个字符替换 |
R |
连续替换 |
~ |
更改大小写 |
单词修改
Command |
Alias |
cw |
从光标处修改到单词结尾 |
cb |
从光标处修改到单词开头 |
行修改
Command |
Alias |
c$ |
从光标修改到本行末尾 |
C |
功能同上 |
c0 |
从光标修改到本行开头 |
cc |
删除整行从头修改 |
S |
功能同上 |
s |
删除光标所在位置的字符,然后插入 |
合并行
多行合并成一行
AAAAA
BBBBB
CCCCC
合并为:
AAAAA BBBBB CCCCC
方法1: normal状态下 3J 其中的3是范围,可以是书签或者搜索位置等方式实现,J为合并
注: 如果改为3gJ的话,则合并时各行没有空白AAAAABBBBBCCCCC, 下面方法类似,不再重复这两种合并方式的区别.
方法2: 命令状态下 :1,3 join 或 :1,3 j
方法3: 传统一点的,替换换行符的方式,为避免最后一行也被换掉,范围缩小了,命令状态下 :1,2s/\n/ /
隔行合并
AAAAA
BBBBB
CCCCC
DDDDD
合并为:
AAAAA BBBBB
CCCCC DDDDD
方法1: 借用一下宏录制功能, normal状态下 qaJjq 实现录制, 然后在合适的区域重复执行n遍,这里2遍即可,normal状态下2@a
方法2: 命令状态下 :1,4g/^/ join 增加了g过滤后,合并变成了隔行处理
恢复
Command |
Alias |
u |
撤消上次命令 |
U |
恢复整行 |
ctrl+r |
重做 |
. |
重复 |
e! |
全文恢复 |
网友评论