如何在新窗口中打开Vim中的新文件


73

有没有办法在新的shell窗口或选项卡中打开vim?我习惯于这样做$ mate file,这会在新窗口中打开文件。

我更喜欢使用一个“中央外壳”,在其中发出命令并根据需要在其他窗口或选项卡中编辑文件。人们通常如何在本地打开vim文件?


您可以使用Ranger或其他基于终端的文件管理器,然后打开几个选项卡。在选项卡中,您可以直接访问以在vim中打开文件。
nilon

Answers:


-31

查看gVim。您可以在自己的窗口中启动它。

gVim使图形管理多个打开的缓冲区变得非常容易。

您也可以照常:e打开文件,CTRL+^在缓冲区之间切换,等等。

另一个很酷的功能是让您打开一个弹出窗口,其中列出了您使用过的所有缓冲区。

这使您可以单击一下在打开的缓冲区之间切换。

为此,请单击顶部的“缓冲区”菜单,然后用剪刀单击虚线。

在此处输入图片说明

否则,您可以从终端会话中打开一个新选项卡,然后从那里启动vi。

通常,您可以使用CTRL+T CTRL+ ALT+在终端上打开新标签页 T

vi启动后,很容易打开新文件并在它们之间切换。


48
拒绝投票,因为随后的答案是vim中执行此操作的方式,这正是我所寻找的。gVim虽然方便(显然对发问者来说足够好),但gVim并不相同,许多在搜索“如何在vim中打开新窗口”时找到此答案的人都将寻找更流行的答案。

然后,也许应该澄清问题的标题/文本;它没有提到gvim或图形窗口,“窗口”是vim上下文中的一个专门术语,就像“ tab”一样:vimdoc.sourceforge.net/htmldoc/windows.html “来自vim内部”的答案是一种打开新的“ vim窗口”的方法;在搜索了“如何打开新的vim窗口”之后找到此页面的用户,应该会看到该答案。

7
+1,显然,这是对OP的问题和他在问什么的正确答案。对于后续读者的需求是否正确,并不是拒绝投票的理由。
塞缪尔·内夫

我认为最初的问题是模棱两可的,但确实,这个答案有些不灵活。
suhdonghwi

231

从vim内部,使用以下方法之一

在当前窗口下方打开一个新窗口

:new filename.ext

在当前窗口旁边打开一个新窗口

:vert new filename.ext

我如何将内容从旧文件复制到filename.ext?
阿努

2
@anu,您可以使用v,ctrl + v或V在旧文件上标记文本,使用y将其拖到“剪贴板”上,然后使用p或P将其粘贴...
Massa 2015年

24
:vert new filename.txt可以缩短为:vnew filename.txt
rudolfson

7
...或者:vsp filename.txt也可以在新的拆分中打开它。
Harish Ramachandran,

3
拥有两个窗口后,在两个窗口之间切换是Control+ Wx2。这是Control+ Shift+ w(自来水W的两倍Control,并Shift按住)。
Daniel Porteous

11

您可以在vim内执行此操作,并使用其自己的窗口或选项卡。

一种方法是利用内置文件浏览器。通过:Explore:Texplore用于选项卡式界面(我觉得最舒服)激活它。

:Texplore(和:Sexplore)还将保护您,防止您:q一旦进入浏览器就意外退出当前缓冲区(编辑器)。

要在使用标签页时在打开的标签之间切换,请使用gtgT(分别是下一个标签和上一个标签)。

另请参见vim Wiki上的使用选项卡页面


8

我使用这个微妙的别名:

alias vim='gnome-terminal -- vim'

-x现在已弃用。我们需要使用-代替


4

如果您不介意使用gVim,则可以启动一个实例,以便在打开新文件时会自动在当前正在运行的实例的新选项卡中打开该文件。

为此,您可以编写: gVim --remote-tab-silent file

您总是可以为此命令创建别名,这样您就不必键入太多单词。例如,我使用linux和bash,并且在我的~/.bashrc文件中有:

alias g='gvim --remote-tab-silent'

因此,$ mate file我没有这样做:$ g file


1
问题询问如何在中执行此操作vim。请参阅上面的相关答案和相关的向下投票。
Max MacLeod

0

我正在使用以下内容,尽管它已硬编码为gnome-terminal。它还将vim的CWD和缓冲区更改为与当前缓冲区及其目录相同。

:silent execute '!gnome-terminal -- zsh -i -c "cd ' shellescape(expand("%:h")) '; vim' shellescape(expand("%:p")) '; zsh -i"' <cr>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.