How to open multiple files at different lines with vim?
我知道一个文件可以在不同的行中打开,使用:
1 2
| vim foo.c +123
vim +123 foo.c # same result |
可以使用以下方式打开多个文件:
但我如何将这两种行为结合起来呢?vim +123 foo.c +456 bar.c不工作,bar.c在一号线而不是456线打开。
我看到vim:在不同的行上打开多个文件,但这会打开不同的选项卡,而我习惯于使用:prev和:n进行导航。
- 嗯,看看这个问答,标签似乎更快。不管怎样,有没有更快的方法打开给定行的文件?
- 通过查看您发布的链接,它不会在选项卡中打开文件,而是将第二个文件加载到新的拆分窗口中。如果您只需要一个新的缓冲区,可以尝试使用vim +6 file1 +"e +3 file2"。
- 不,view +10 action-chain.c +'e +5 empathy-camera-monitor.c'不起作用。那么,e是否会覆盖当前的缓冲区呢?
- :e将文件加载到新的缓冲区中。以上这些对我很有用。确保您的.vimrc中有set hidden,这允许更改缓冲区。
- 不幸的是,没有运气,即使有了set hidden,它也抱怨没有下一个文件。(使用:n导航)。使用7.3.798
- 如果用一个文件打开VIM,可以用:e file2.txt编辑另一个文件吗?仍然可以导航到两个缓冲区吗?如果没有,我想知道一点,您如何用VIM配置打开多个文件。
- 是的,我可以使用:e foo打开当前缓冲区中的foo。与set hidden无变化
- 不确定,为什么:e file2.txt没有在新的缓冲区中为您打开文件。它总是为我做的。但对于你原来的问题,这个怎么样:vim +123 foo.c +'badd +456 bar.c'。
- 让我们在聊天中继续讨论
使用file:line-可以打开file:line,它可以做正确的插件,您可以使用
1
| $ vim foo.c:123 bar.c:456 |
它不适用于-o拆分,但它适用于为参数列表中的文件预设行号的用例。
- 我目前使用的是vim fetch,它比链接文件_Line插件更容易维护。你现在在用什么?
- @lekensteyn我仍然在使用file:line;插件非常简单(vim非常稳定),所以不需要维护。
我不知道是否有一个更简单的方法,但这里有一个解决方法非常简单,不会影响您的工作流程,因为您不是标签用户。
首先,在您的.vimrc中设置一个auto命令,在您输入vim后立即发出tabo[nly](关闭所有其他选项卡)。
接下来,使用链接问题中的解决方案打开多个选项卡中的文件
1
| vim +123 foo.c +"tabnew +456 bar.c" |
所以在幕后,Vim会打开选项卡中的文件,但会立即关闭除最后一个文件以外的所有文件。所有打开的文件都应该在打开的缓冲区中可用。
即使在没有多个文件的情况下正常打开VIM,这也可以很好地工作(您将看到一条无害的消息-"already only one tab page"(已经只有一个标签页),该消息在下一个按键时消失)。此外,由于此命令仅在VimEnter上发出,因此它不会阻止您在稍后的会话中使用选项卡(如果您愿意)。
除了文件:行插件,正如INGO所建议的,我在https://gist.github.com/xim/6123691上做了一个bash函数hack——作为对vim的回答:在不同的行上打开多个文件。
file:line似乎不处理带有空格和其他特殊字符的文件名,并且在使用vim -p时没有在选项卡中打开我的文件–不过,lekensteyn,这可能是一个更好的选择,因为它不会强制您标记文件。