:source ~/.vimrc
(带有简单的映射或autocmd)。但是,为了使所有正在运行的实例反映出更改,我必须分别在每个实例中运行该更改。我可以使用clientserver
功能告诉所有实例重新加载我的vimrc吗?我也会对不使用
clientserver
的解决方案感兴趣。#1 楼
您可以告诉Vim服务器重新加载vimrc文件,如下所示:$ vim --servername MARTIN --remote-send '<Esc>:source $MYVIMRC<CR>'
您可以通过以下方式获得所有服务器的列表:
$ vim --serverlist
MARTIN
CARPETSMOKER
可以与
for
循环结合使用:$ for s in $(vim --serverlist); do vim --servername "$s" --remote-send '<Esc>:source $MYVIMRC<CR>'; done
由于键入很多,因此可以将其放在shell脚本中在
~/bin/reload-vimrc
中;当然,您也可以在Vim中调用它::!reload-vimrc
如果您正在运行Linux,并且想发疯,则可以从inotify-tools中使用
inotifywatch
监视您的vimrc文件是否有更改,并在每次更改时自动执行(未试过,示例改编自联机帮助页)$ inotifywatch -v -e modify -t 60 -r ~/.vimrc ~/.vim
但是...如果您不小心保存了一个带有
语法错误的文件,则可能会使所有vim会话无效...
#2 楼
我不了解clientserver,但是由于您说过您对其他解决方案感兴趣,因此我建议您研究一下有关Github中的点文件的文章。https://dotfiles.github.io
您显然不必使用Github,但是这些概念是合理的,并且似乎已被广泛使用。
评论
虽然我确实认为将您的dotfiles置于版本控制之下真是棒极了,但我还是特别询问了在同一台机器上运行的vim实例(我已经更新了问题)。
–xthrd
2015年2月3日在21:14
-1;这个答案实际上与所提问题没有任何关系。问题是关于重新加载vimrc,而不是管理vimrc。
–马丁·图尔诺伊(Martin Tournoij)
2015年2月6日15:30
在回答之前,最初的问题并不清楚,他是在谈论同一台计算机上的实例。当时我的回答确实解决了这个问题。
– tgrosinger
2015年2月6日15:34