VIM 使用技巧-vimgrep 和 g命令
1. vimgrep用法:
:vimgrep /{pattern}/[g][j] {file} ... 简单来讲,就是在路径和文件命符合{file}的所有文件中,查找符合{pattern}的字符串. (查找的结果可以用:copen命令打开quickfix列表查看). 没有参数g的话,则行只查找一次关键字.反之会查找所有的关键字. 没有参数j的话,查找后,VIM会跳转至第一个关键字所在的文件.反之,只更新结果列表(quickfix). :vimgrep /the menu/ *.php 表示在当前目录下的扩展名为php的所有文件中,查找字符串"the menu". :vimgrep /the menu/ ./includes/*.* 表示在当前目录中的"includes"目录里的所有文件中,查找字符串"the menu". 如果要在当前目录及其子目录中查找怎么办呢?也好办 :vimgrep /the menu/ **/*.* 用这句就可以了. 查找时{pattern}可用正则表达式,使用起来和'/'命令是一样的,就不多说了. 查找的结果可以用":copen"命令查看,在列表里,将光标移动至相应的位置,按回车就打开对应的文件了. 注: :copen 打开quickfix :cclose 关闭quickfix :cc 是在转到当前查找到的位置 :cn 转到下一个位置 :cp 转到前一个位置
2. 点 . 重复上次操作
3. :s5,6/^/#/g 替换 5到6行的首字为 #
4. g 命令
Task 删除一个文本文件中的所有带 ‘test’ 的行,以及这一行的前一行和后一行。 如何用Vim实现? Solution :g/test/-,/test/+ d 上面的命令是如何工作的呢?这你就需要了解vim的global命令(g命令) :g就是global命令 语法: :[range]g/pattern/cmd :g/pattern1/, /pattern2/cmd 第一种语法会在range的范围内搜索pattern, 如果符合要求就执行cmd. 第二种语法会在/p1/, /p2/之间执行cmd 例: :g/test/d 删除所有带test的行 :g!/test/d 保留带test的行 :g/hello/, /world/d 删除所有hello, world之间的行
5.