如何用vim打开不同行的多个文件?

时间:2013-03-12 14:56:31

标签: vim

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

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 multiples files on different lines,但是当我习惯:prev:n进行导航时,会打开不同的标签。

3 个答案:

答案 0 :(得分:1)

我不知道是否有更简单的方法,但这里的解决方法非常简单,不会影响您的工作流程,因为您不是标签用户。

  1. 首先,在您.vimrc中设置一个自动命令,在您输入vim后立即发出tabo[nly](关闭所有其他标签)。

    autocmd VimEnter * tabo
    
  2. 接下来,使用链接问题中的解决方案,使用

    打开多个标签中的文件
    vim +123 foo.c +"tabnew +456 bar.c"
    
  3. 所以会发生的是,在幕后,vim会打开选项卡中的文件,但会立即关闭除最后一个之外的所有文件。所有打开的文件都应该在您的开放缓冲区中可用。

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

答案 1 :(得分:1)

使用file:line - Allows you to open file:line and it does the right thing插件,您可以使用

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

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

答案 2 :(得分:0)

除了文件:line插件之外,正如Ingo建议的那样,我只是在https://gist.github.com/xim/6123691做了一个bash函数黑客 - 作为对Vim : Open multiples files on different lines的回答。

file:line似乎不处理带有空格和其他特殊字符的文件名,并且在使用vim -p时没有在标签中打开我的文件 - 虽然这可能是一个更好的选择,Lekensteyn,因为它不会强制您标记文件。

相关问题