从linux终端重用vim实例

时间:2009-06-16 11:07:15

标签: linux vim ide editor terminal

通过在vim中使用远程功能,是否可以重用vim实例来根据需要加载多个文件。

在同一个终端实例中拥有该工具会很好。

我更希望有一个基于标签的界面,可在vim 7+中使用 场景应该是

  1. 打开终端
  2. vim file1.cpp
  3. 编辑 - 保存 - 按Ctrl + Z以提示
  4. 打开另一个文件
    • vim file2.cpp
  5. 现在我们在同一个编辑器中打开了file1.cpp和file2.cpp
  6. 这可能吗?!

6 个答案:

答案 0 :(得分:6)

我不确定这是否可以按照您指定的方式完成,但可以使用在本地计算机上运行的vim服务器完成非常类似的操作。

查看Vim中的:help remote.txt

如果您的vim版本是使用+clientserver编译的,则可以使用vim创建vim服务器,然后在其上执行命令,例如:打开另一个文件 --servername开关可以创建新服务器,--remote开关可以向其发送其他命令或文件。

e.g。

vim --servername test file1.txt
vim --servername test --remote file2.txt

我看过了,我在我的一台计算机上使用xubuntu作为标准的vim没有它,但有一些说明here可能有帮助,如果你的编译。如果不是,安装gvim和symlinking显然是一个选项(因为gvim默认包含它),或者从源代码编译二进制文件。

修改
我有更多的gvim游戏,这看起来不可能在终端内做到这一点。 Control-Z在进程级别暂停作业。我认为它可能适用于屏幕,但除非gvim已在图形窗口中启动,否则似乎没有进行任何通信,

答案 1 :(得分:5)

如果您将+clientserver编译为Andy suggested in a previous answer,则很容易做到。

我做了以下事情:

我将VIM作为服务器启动:

vim --servername abc

我用CTRL+Z暂停了它并执行了:

vim --servername abc --remote ~/.cshrc
fg 

现在VIM已~/.cshrc打开。

然后我做了:

vim --servername abc --remote ~/.aliases
fg 

现在,VIM有一个缓冲区~/.cshrc,另一个缓冲区~/.aliases

然后我做了:

vim --servername abc --remote-tab ~/foo_bar
fg 

现在我VIM有一个选项卡,前两个缓冲区打开,另一个选项卡打开~/foo_bar

在通话情况下,VIM在终端中运行,而不是作为GUI。

答案 2 :(得分:3)

您可以按以下方式拆分当前屏幕并打开两个(或更多)文件:

对于水平分割,请执行:

:sp 'filename'

对于垂直拆分,请执行:

:vsp 'filename'

要在两者之间切换选项卡,请按ctrl + w,然后使用箭头键导航到要编辑的文件。

此外,如果您只想切换文件(并且只打开一个文件),您可以这样做:

:e 'filename'

答案 3 :(得分:3)

我有几个建议给你,虽然这两个都不是你所说的。第一个是NERD Tree,它为您提供了一个很好的基于树的文件浏览器,用于打开其他文件。非常便利。我还为我设置了一个热键(ctrl+o)来打开NERD Tree。我保留了~/curr/trunk中我所参与的任何项目的别名,所以这对我来说总是有用的:

map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>

我建议的另一件事是取消ctrl + z。它有些笨重,我知道使用该方法的每个人都会迷失方向并最终在后台运行3或4个vim。看看如何为自己打开一个shell。我使用map来执行shell脚本:

map ;s :!~/.vim/shell.sh<CR>

执行:

#!/bin/sh
/usr/local/bin/bash -l;

我的.profile中也有一些魔法让我明白我在VIM:

if [ "$VIMRUNTIME" != "" ] ; then
    export PS1="\u@\h \W \t$ vim> "
fi

&lt; / 2美分&gt;

答案 4 :(得分:2)

天儿真好,

或者,如果您想拥有多个文件,但一次只能将整个vim窗口用于一个文件,您只需输入

:e 'filename'

打开新文件。你可以多次这样做。要查看您当前打开的内容,请输入

:ls

要在您打开的文件之间跳转,您可以使用cntl- ^(shift-cnt-6),它将在主文件和辅助文件之间切换(在文件列表中以%和#显示)

或者你可以输入

:n b

其中n是'ls'命令显示的列表中所需文件开头的数字。

HTH

欢呼声,

答案 5 :(得分:1)

您可以在vim上设置hidden功能,以允许其打开多个文件:

:set hidden

然后您可以根据需要打开任意数量的文件,而无需在每次要切换“缓冲区”时都保存它们:

:e 'filename'

您有几个命令可以导航缓冲区:

:bnext
:bprev
:buffers

当然,正如samoz所提到的,您可以拆分屏幕以在同一窗口中查看多个缓冲区。

我建议您阅读this以了解有关vim的详细介绍,它将为您节省大量时间。

祝你好运!