vimdiff and vimgrep

vimdiff file1 file2
或者
vim -d file1 file2
或者
vim file1
:vertical diffsplit file2
:vert diffsplit file2
:diffsplit file2    

vimdiff -o file1 file2  #水平分栏

:set noscrollbind   设置两个文件不同步滚动
]c                  跳转到下一个差异点
[c                  跳转到上一个差异点

ctrl+w r            窗口移动
1.Ctrl-w K        (把当前窗口移到最上边)
2.Ctrl-w H        (把当前窗口移到最左边)
3.Ctrl-w J        (把当前窗口移到最下边)
4.Ctrl-w L        (把当前窗口移到最右边)
其中1和3两个操作会把窗口改成水平分割方式。

文件合并
dp  (diff 'put')    将当前文件的差异点复制到另一个文件
do  (diff 'get')    将另一个文件的差异点复制到当前文件
1,100 diffput       指定行的范围
1,100 diffput 3     指定行的范围

:diffupdate         手工刷新,重新比较

批量查询替换

vimgrep /匹配模式/[g][j] 
g:表示是否把每一行的多个匹配结果都加入
j:表示是否搜索完后定位到第一个匹配位置

vimgrep /pattern/ %           在当前打开文件中查找
vimgrep /pattern/ *           在当前目录下查找所有
vimgrep /pattern/ **          在当前目录及子目录下查找所有
vimgrep /pattern/ *.c         查找当前目录下所有.c文件
vimgrep /pattern/ **/*        只查找子目录

cn                            查找下一个
cp                            查找上一个
copen                         打开quickfix
cw                            打开quickfix
cclose                        关闭qucikfix
help vimgrep                  查看vimgrep帮助

:vimgrep /A16/ *.html

批量替换

查看 argument list 命令可以用 
:args 命令,vim 启动后还可以增删改
args \a\*.txt 				  a目录下的所有纯文本文件作上标记,
args \a\**\*.txt 			  包括子目录
:argdo %s/\<x_cnt\>/x_counter/ge | update 
通过"\<x_cnt\>"查找"x_cnt"。其中"\<"和"\>"使得只有完整的单词会被匹配,
这样"px_cnt"和"x_cnt2"中的x_cnt才可以免遭毒手。
标志"e"则用于避免某些文件中一个"x_cnt"都找不到时的错误消息。

在vimrc文件中作如下设定: 
set nomore 
列表消息不会满屏时暂停,而会继续进行直到结束为止。

除了 argdo 命令外,还有 windo, bufdo, tabdo  
windo 命令是在所有窗口中执行命令;  
bufdo 是在所有 buffer 中执行命令  
tabdo 是在所有 tab 中执行命令