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

问题描述:

我知道,一个文件可以在不同的线路用打开:如何用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用于导航。

+0

嗯,看看[这Q/A](http://*.com/q/53664/427545),选项卡似乎更快。无论如何,有没有更快的方式来打开文件在给定的行? – Lekensteyn 2013-03-12 15:00:18

+0

通过查看您发布的链接,它不会打开选项卡中的文件,但会将第二个文件加载到新的拆分窗口中。如果你只需要一个新的缓冲区,你可以试试'vim +6 file1 +“e +3 file2”'。 – 2013-03-12 15:06:46

+0

不,'view +10 action-chain.c +'e +5 empathy-camera-monitor.c''不起作用。并不会''只是覆盖当前的缓冲区? – Lekensteyn 2013-03-12 15:09:20

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

  1. 首先,设置自动命令你.vimrc发出tabo[nly](其中关闭所有其他选项卡)输入VIM之后。

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

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

所以会发生什么是在幕后,VIM打开文件选项卡,但立即关闭除了最后一切以外的一切。所有打开的文件应该在打开的缓冲区中可用。

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

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

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

它不-o拆分工作,但它确实为预先设定的行号在参数列表的文件的使用情况。

+1

我目前使用[vim-fetch](https://github.com/kopischke/vim-fetch),它比链接的file_line插件维护得更多。你现在在用什么? – Lekensteyn 2015-10-04 20:12:11

+0

@Lekensteyn我还在file:line;该插件非常简单(并且Vim非常稳定),因此不需要进行维护。 – 2015-10-10 18:57:17

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

file:行显示不处理空格和其他特殊字符的文件名,并且在使用vim -p时没有在标签页中打开我的文件 - 虽然Lekensteyn可能是更好的选择,因为它没有强迫你选择文件。