从linux终端重用vim实例

Ϲοδ*_*διϲ 11 linux ide vim terminal editor

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

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

我更希望有一个基于选项卡的界面,在vim 7+中可用.场景应该是

  1. 打开终端
  2. vim file1.cpp
  3. 编辑 - 保存 - 按Ctrl + Z进行提示
  4. 打开另一个文件
    • vim file2.cpp
  5. 现在我们在同一个编辑器中打开file1.cpp和file2.cpp

那可能吗?!

And*_*ndy 6

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

看看:help remote.txtVim.

如果您编译的vim版本+clientserver可以使用vim创建vim服务器,然后在其上执行命令,例如打开另一个文件.
--servername交换机可以创建一个新的服务器,--remote交换机可以发送额外的命令或文件给它.

例如

vim --servername test file1.txt
vim --servername test --remote file2.txt
Run Code Online (Sandbox Code Playgroud)

我一看,和我使用的标准上是Xubuntu上的我的电脑之一VIM没有它,但也有一些指令在这里,可以帮助你,如果它已编制.如果不是,安装gvim和symlinking显然是一个选项(因为gvim默认包含它),或者从源代码编译二进制文件.

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


Nat*_*man 5

如果您编译VIM,这很容易+clientserver,正如Andy在之前的回答中所建议的那样.

我做了以下事情:

我启动VIM作为服务器:

vim --servername abc
Run Code Online (Sandbox Code Playgroud)

我把它暂停了CTRL+Z并做了:

vim --servername abc --remote ~/.cshrc
fg 
Run Code Online (Sandbox Code Playgroud)

现在VIM已经~/.cshrc开放了.

然后我做了:

vim --servername abc --remote ~/.aliases
fg 
Run Code Online (Sandbox Code Playgroud)

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

然后我做了:

vim --servername abc --remote-tab ~/foo_bar
fg 
Run Code Online (Sandbox Code Playgroud)

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

在呼叫情况下,VIM在终端中运行,而不是作为GUI运行.


Jac*_* M. 3

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

map <C-O> :NERDTreeToggle ~/curr/trunk/<CR>
Run Code Online (Sandbox Code Playgroud)

我建议的另一件事是取消 ctrl+z。它有点笨重,我认识的每个使用该方法的人都容易迷失方向,最终导致 3 或 4 个 vim 在后台运行。看看如何为自己打开一个外壳。我使用 ;s 的映射来执行 shell 脚本:

map ;s :!~/.vim/shell.sh<CR>
Run Code Online (Sandbox Code Playgroud)

其中执行:

#!/bin/sh
/usr/local/bin/bash -l;
Run Code Online (Sandbox Code Playgroud)

我的 .profile 中也有一些魔法,可以让我明显地看到我在 VIM 中:

if [ "$VIMRUNTIME" != "" ] ; then
    export PS1="\u@\h \W \t$ vim> "
fi
Run Code Online (Sandbox Code Playgroud)

</2 美分>