2014-10-20 82 views
0

我想从bash脚本重新启动vim,以便vim获取带外更改。我几乎有它的工作,但我坚持试图确定用什么来启动vim。如何从bash脚本重新启动vim?

这是我有:

#!/usr/bin/env bash 
local servername=$(vim --serverlist) 
[ -n "$servername" ] && { 
    vim --servername "$servername" --remote-send '<C-\><C-N>:mks! _session.vim<CR>:wqa<CR>' 
    vim -S _session.vim 
    sleep 1 
    rm _session.vim 
} 

的问题是由脚本调用vim/usr/bin/vim,而不是“我”的vim这是一个别名mvim -v(其中mvim是非常过时的系统VIM启动脚本随MacVim一起提供)。

这有两个不幸的后果:(1)系统vim不识别--serverlist; (2)即使我的脚本会随后启动错误的vim。

在我的路径上调用vim的最佳方式是什么?

+1

难道你不能仅仅用'mvim -v'来替换'vim'吗? – 2014-10-20 12:25:14

+0

那么,这对我来说,在这台特定的机器上,但我更喜欢便携式解决方案。 – 2014-10-20 12:59:27

+0

这些带外更改是什么?对正在编辑的文件进行更改?如果是这样,请参阅':h'autoread''。你的vim文件或插件的变化?使用':source'或使用[Scriptease](https://github.com/tpope/vim-scriptease)来重新加载插件。您在使用vim时更新vim? – 2014-10-20 13:51:17

回答

2
  1. 默认VIM不会与+clientserver内置所以你害怕失去便携性是从来没有在那里开始。

  2. 别名不会在bash脚本中扩展,所以如果您没有明确地告诉它使用该脚本,您的脚本将不会看到mvim -v。此外,您的vim别名因此它不在您的PATH中。

  3. 您可以某处定义一个环境变量接近你的脚本的顶部,并用它来代替vim

    #!/usr/bin/env bash 
    
    VIM='/path/to/mvim' 
    
    "$VIM" -v whatever 
    

    或者把你的别名到合适的剧本。

    或者,也许,在您的PATH之前放置mvim,并明确地呼叫mvim -v

+0

1.哦。很高兴知道。看起来像是最好的选择。谢谢! – 2014-10-21 12:53:05