2014-10-20 80 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