用了一段时间的VIM,感觉越来越离不开了。在使用VIM的过程中,从生存->适应->顺畅过程中走了不少的坑,现在正好有时间,打算整理下vim的爬坑过程。
接触VIM首先第一件事就是熟悉VIM的快捷将,本文将整理VIM常用的快捷键,有了这些基本上也够用了~~
vim_log

全选

ggVG

稍微解释一下上面的命令
gg 让光标移到首行,在vim才有效,vi中无效
V 是进入Visual(可视)模式
G 光标移到最后一行

选中内容以后就可以其他的操作了,比如:
d 删除选中内容
y 复制选中内容到0号寄存器
“+y 复制选中内容到+寄存器,也就是系统的剪贴板,供其他程序用

搜索

Vim查找支持正则表达式,例如/vim$匹配行尾的”vim”。 需要查找特殊字符需要转义,例如/vim\$匹配”vim$”。

/foo
/foo\c # 大小写敏感,将会查找所有的"foo","FOO","Foo"等字符串。

n 继续搜索下一个匹配的单词
N 继续搜索上一个匹配的单词
:nohl 或 :noh 取消搜索高亮

复制命令

“+y 复制当前行到系统剪切板
“+nyy 复制n行到系统剪切板
yy复制游标所在行整行。或大写一个Y。
2yy或y2y复制两行。 ㄟ ,请举一反三好不好! :-)
yG 复制当前光标行至末尾
y1G 复制当前光标行至文章首行
yxj 复制当前光标行往下x行,x代表需要复制的行数
ye 复制1个词
yxe 复制X个词

粘贴命令

"+p 从系统剪切板粘贴信息
p小写p代表贴至游标后(下)。
P大写P代表贴至游标前(上)。

删除多行

xdd 删除当前光标以下x行
dd 删除当前光标所处行
de 删除一个词,

插入行

按esc进入命令行模式
O 当前光标行上插入空白行
o 当前光标行下插入空白行

分割窗口

ctrl + w + n 横向新建窗口
ctrl + w + v 竖向新创窗口
ctrl + w + q 关闭当前窗口
ctrl + 方向键 窗口间移动

替换命令

:{作用范围}s/{目标}/{替换}/{替换标志}

作用范围:

参数 说明 例子 例子说明
没有参数,表示当前光标行 :s/foo/bar 将当前行的foo替换为bar
% 全文 :%s/foo/bar 将全文的foo替换为bar
x,y x-y行 :2,3s/foo/bar 将2-3行的foo替换为bar
.,+x 当前光标行接下来的x行 :.,+2s/foo/bar 将当前光标行的与下面的2行的foo替换为bar

替换标志:

参数 说明 例子
i 表示大小写不敏感查找 :%s/foo/bar/i
I 表示大小写敏感查找 :%s/foo/bar/I
gc 回车后Vim会将光标移动到每一次"foo"出现的位置,并提示 :%s/foo/bar/c

多行注释

1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;
2. 在行首使用上下键选择需要注释的多行;
3. 按下键盘(大写)“I”键,进入插入模式;
4. 然后输入注释符(“//”、“#”等);
5. 最后按下“Esc”键。
注:在按下esc键后,会稍等一会才会出现注释,不要着急~~时间很短的

另外一种方法(字符串替换法):
注释掉10~20行
c和java等使用//注释的语言

:10,20s/^////

python

:10,20s/^/#

删除多行注释

1. 首先按esc进入命令行模式下,按下Ctrl + v, 进入列模式;
2. 选定要取消注释的多行;
3. 按下“x”或者“d”.
注意:如果是“//”注释,那需要执行两次该操作,如果是“#”注释,一次即可
移除单行注释:在对应行按x

另外一种方法(字符串替换法):
注释掉10~20行
c和java等使用//注释的语言

:10,20s/^////

python

:10,20s/^#

跳转行

G: 最后一行
gg: 第一行
如跳转12行:
:12
就可以了

撤销

可视化模式下:
u 回退
ctrl + r 取消回退

ctrl + p 补全

刷新文件

:e

:e!

移动行

nmap <M-j> mz:m+<cr>`z
nmap <M-k> mz:m-2<cr>`z
vmap <M-j> :m'>+<cr>`<my`>mzgv`yo`z
vmap <M-k> :m'<-2<cr>`>my`<mzgv`yo`z

把上面代码放到vim的配置文件_vimrc,这段代码实现的效果是
在普通模式 或可视模式下选择一段代码,
同时按[Alt]+[j] 或[Alt]+[k] 可控制代码向上、向下移。

代码缩进

gg=G
解析:
gg 到达文件最开始
= 要求缩进
G 直到文件尾

8==
格式化当前光标接下来的8行 8=