Vim--远程静默始终为第一个文件打开[无名称]缓冲区

Vim--远程静默始终为第一个文件打开[无名称]缓冲区,vim,Vim,我希望能够使用相同的实例打开文件,因此在打开文件时添加了--remote silent。但是第一次加载时,Vim将打开一个空缓冲区,然后打开我的文件。现在我有两个缓冲区 经过进一步调查,我发现设置nohidden可以解决这个问题。但是,这不仅不符合我的喜好,而且会导致第一个缓冲区没有语法突出显示 如果没有--remote silent选项,就不会发生这种情况 谢谢你的帮助。谢谢 Doing$vim--servername FOO--remote[-silent]filename在没有实例运行的情

我希望能够使用相同的实例打开文件,因此在打开文件时添加了
--remote silent
。但是第一次加载时,Vim将打开一个空缓冲区,然后打开我的文件。现在我有两个缓冲区

经过进一步调查,我发现设置
nohidden
可以解决这个问题。但是,这不仅不符合我的喜好,而且会导致第一个缓冲区没有语法突出显示

如果没有
--remote silent
选项,就不会发生这种情况

谢谢你的帮助。谢谢

Doing
$vim--servername FOO--remote[-silent]filename
在没有实例运行的情况下首先启动一个新实例,然后打开该文件:这与
$vim filename
不同。您必须找到一种方法来完全删除第一个空缓冲区

从我有限的测试中,将
set bufhidden=wipe
添加到
~/.vimrc
可以解决问题

set bufhidden=wipe
是缓冲区的本地设置,仅应用于第一个空缓冲区,然后重置

请参见
:h bufhidden

但是,当您正常运行Vim时,这肯定会导致一些问题

编辑

是,
set bufhidden=wipe
会导致明显的问题。当“正常”启动时(使用
$vim file1
),当您编辑第二个文件时,第一个缓冲区将被擦除,这不是您想要的

对缓冲区名称进行简单检查即可解决此问题:

if bufname('%') == ''
  set bufhidden=wipe
endif
这里,语法突出显示在任何情况下都有效。您可以将
~/.vim/
~/.vimrc
的内容发布到某个地方吗?

选项的
--remote
系列允许在打开文件后执行额外的Ex命令

您可以在这里添加
:bd1
,删除缓冲区#1,即[No Name]缓冲区


示例:
--remote silent+:bd1{file}

成功删除了缓冲区,但第一个文件没有语法突出显示。我也不能打开它。文件的语法突出显示在这里。无论如何,bufhidden似乎不是一个有效的解决方案,因为在启动
$vim file1
后执行
:e file2
时,它将擦除
file1
。我认为,
autocmd
应该更可取。我的vimrc见第57行,了解我解决问题的方法。不确定这是不是正确的方法,但到目前为止似乎还有效。@Dalton Tan,如果你想打开一个目录怎么办。例如,
gvim——远程。
用于用户选择并打开文件。我用NerdTree,很遗憾你的方法抹掉了NerdTree。哦,哼。太棒了:必须是公认的答案。解决了以下问题:Vim作为Claws Mail的外部编辑器(带有xfce4终端的bash脚本--disable server--geometry=230x60+60+0-x Vim-f--远程静默+:bd1“$@”通过
/mnt/温哥华/programming/scripts/claws\u mail-external\u editor.sh%s
调用,设置为claws mail中的外部文本编辑器命令。问题根据OP的问题解决,并且当存在打开缓冲区的现有Vim时,需要为CM消息合成打开一个新的Vim实例。