3

我知道可以使用以下命令在不同的行打开单个文件:

vim foo.c +123
vim +123 foo.c # same result

可以使用以下方法打开多个文件:

vim foo.c bar.c

但是我怎样才能将这两个动作结合起来呢?vim +123 foo.c +456 bar.c不起作用,bar.c在第一行而不是 456 处打开。

我看到Vim : Open multiple files on different lines,但这会在我习惯:prev:n导航时打开不同的选项卡。

4

3 回答 3

1

我不知道是否有更简单的方法,但这里有一个非常简单的解决方法,并且不会影响您的工作流程,因为您不是选项卡用户。

  1. .vimrc首先,在您输入 vim 后立即在您的to issue tabo[nly](关闭所有其他选项卡)中设置一个自动命令。

    autocmd VimEnter * tabo
    
  2. 接下来,使用链接问题中的解决方案在多个选项卡中打开文件

    vim +123 foo.c +"tabnew +456 bar.c"
    

所以发生的事情是,在幕后,vim 在选项卡中打开文件,但立即关闭除最后一个之外的所有文件。所有打开的文件都应该在您的打开缓冲区中可用。

即使你在没有多个文件的情况下正常打开 vim 也能正常工作(你会看到一条无害的消息——“已经只有一个标签页”——在下一次击键时消失)。此外,由于此命令仅在 上发出VimEnter,因此它不会阻止您稍后在会话中使用选项卡(如果您愿意)。

于 2013-03-12T16:36:03.997 回答
1

使用file:line - 允许您打开 file:line 并执行正确的插件,您可以使用

$ vim foo.c:123 bar.c:456

它不适用于-o拆分,但它适用于为参数列表中的文件预设行号的用例。

于 2013-03-13T07:59:54.280 回答
0

除了 file:line 插件,正如 Ingo 建议的那样,我刚刚在https://gist.github.com/xim/6123691上做了一个 bash 函数破解——作为对Vim 的回答:Open multiples files on different lines

file:line 似乎不处理带有空格和其他特殊字符的文件名,并且在使用时没有在选项卡中打开我的文件vim -p– 不过,Lekensteyn 对你来说可能是一个更好的选择,因为它不会强迫你使用选项卡文件。

于 2013-08-01T08:29:41.103 回答