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 中执行命令