繁体   English   中英

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

[英]How do I make vim open a particular line using a column format instead of plus?

通常,如果要在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/:/ +/'`

但是两种解决方案都需要我创建一个新命令。

通用的解决方案是将Vim的-q选项与进程替换一起使用,以将grep的输出加载到quickfix列表中。 如果您适当地提前计划,将会发生以下情况:

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

或者如果您没有这样做:

$ vim -q <(!!)

或者您可以简单地要求Vim为您提供grep,如果最终目的还是要编辑文件:

$ vim +gr\ foo\ *

或者您可以安装这个小插件

您正在寻找文件行插件。 它定义了:autocmd ,它使用附加的行号,将其解压缩,打开原始文件,然后跳到正确的位置。

Nop,但是您可以解析/编辑grep输出并将其提供给vim

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM