如何使用列格式而不是加号使vim打开特定行?

时间:2018-04-19 17:52:49

标签: vim

一般来说,如果你想在vim的特定行号打开一个文件,比如第36行你会这样做:

 vi +36 foo.c

有没有办法在我的vimrc文件中以下列方式更改此默认格式:

 vi foo.c:36

原因是grep等的输出以后一种格式返回行号。 我用python解决了这个问题。但是寻找更好的解决方案:

#!/usr/bin/env python
import sys
import os

a=sys.argv[1].split(':')
order = r"/usr/bin/vim +" +  a[1]  +" " +  a[0]
print order
os.system(order)

另一个基于@phd注释的简单解决方案是

cat ~/bin/dvim
vim `echo $1 | sed 's/:/ +/'`

但这两个解决方案都要求我创建一个新命令。

3 个答案:

答案 0 :(得分:4)

一般的解决方案是使用Vim的-q选项和进程替换来加载quickfix列表中的grep输出。如果您提前做好计划,那就是这样的事情:

$ vim -q <(grep -nH foo *)

或者如果你没有:

$ vim -q <(!!)

或者,如果最终目标是编辑文件,你可以简单地让Vim给你grep:

$ vim +gr\ foo\ *

或者您可以安装this little plugin

答案 1 :(得分:1)

您正在寻找file-line插件。它定义了:autocmd,它们带有附加的行号,将其提取出来,打开原始文件,然后跳到正确的位置。

答案 2 :(得分:0)

Nop,但您可以解析/修改grep输出并将其提供给vim

vim `grep -l | sed 's/:/ +/'`