我知道可以使用以下方法在不同的行打开单个文件:
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
进行导航时,会打开不同的标签。
答案 0 :(得分:1)
我不知道是否有更简单的方法,但这里的解决方法非常简单,不会影响您的工作流程,因为您不是标签用户。
首先,在您.vimrc
中设置一个自动命令,在您输入vim后立即发出tabo[nly]
(关闭所有其他标签)。
autocmd VimEnter * tabo
接下来,使用链接问题中的解决方案,使用
打开多个标签中的文件vim +123 foo.c +"tabnew +456 bar.c"
所以会发生的是,在幕后,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,因为它不会强制您标记文件。