如何在vim中打开多个文件并跳转到不同的行?

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

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

```
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 进行导航。


嗯,看了一下这个问题与回答,制表符似乎更快。无论如何,是否有更快的方法打开具有给定行号的文件? - Lekensteyn
从您发布的链接来看,它并不会在选项卡中打开文件,而是将第二个文件加载到新的分割窗口中。如果您只需要一个新缓冲区,可以尝试使用 vim +6 file1 +"e +3 file2" - Michael Härtl
很不幸,即使使用了 set hidden,它仍然抱怨没有下一个文件(使用 :n 进行导航)。使用的是 7.3.798 版本。 - Lekensteyn
如果你在Vim中打开了一个文件,你可以用:e file2.txt来编辑另一个文件吗?你仍然可以导航到这两个缓冲区吗?如果不能,那我有点好奇,你如何通过你的Vim配置打开多个文件。 - Michael Härtl
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/26044/discussion-between-lekensteyn-and-michael-hartl - Lekensteyn
显示剩余4条评论
3个回答

1

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

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

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

    vim +123 foo.c +"tabnew +456 bar.c"
    
所以发生的情况是,vim在后台打开文件并将它们放在标签页中,但立即关闭除最后一个之外的所有文件。所有已打开的文件应该在您的打开缓冲区中可用。
即使您没有打开多个文件,这也可以正常工作(您会看到一个无害的消息:“Already only one tab page”——这条消息在下一次按键时消失)。此外,由于这个命令只在上执行,因此不会阻止您在会话后期(如果您希望)使用选项卡。

1

1
我目前正在使用vim-fetch,这个插件的维护比链接的 file_line 插件要更好。你现在用的是什么? - Lekensteyn
@Lekensteyn 我还在使用 file:line;这个插件非常简单(而且 Vim 非常稳定),所以不需要维护。 - Ingo Karkat

0
除了Ingo建议的file:line插件外,我刚刚在https://gist.github.com/xim/6123691上制作了一个bash函数hack,作为对Vim:打开不同行的多个文件的回答。
file:line似乎无法处理带有空格和其他特殊字符的文件名,并且在使用vim -p时没有将我的文件打开到选项卡中-尽管这可能是更好的选择,因为它不会强制你将文件分成选项卡。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接