VIM学习笔记
2017-04-28 本文已影响9人
KevinLive
原文地址: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! | 全文恢复 |