2016-02-14 21 views
0

使用i3,我想編寫一個bash腳本來打開兩個新的容器,並在它們以及原始容器中打開vim。如果像下面這樣的工作將是巨大的:Bash在新的i3容器中執行命令

i3-msg exec vim mymodule/* 
i3-msg exec i3-sensible-terminal 
i3-msg exec vim tests/* 
i3-msg exec i3-sensible-terminal 
i3-msg exec vim docs/* 

但是,i3-msg exec vim實際上並沒有發揮作用。用類似下面的問題:

vim mymodule/* 
i3-msg exec i3-sensible-terminal 
vim tests/* 
i3-msg exec i3-sensible-terminal 
vim docs/* 

是,直到用戶關閉VIM執行以下i3-msg exec i3-sensible-terminal命令VIM塊慶典。

任何人都知道我能做出類似這樣的工作嗎?提前致謝!

回答

0

沒有看到這個問題的答覆後,我同時張貼它的酷睿i3版(Subreddit)R/i3wm這裏:https://www.reddit.com/r/i3wm/comments/45uq51/executing_commands_in_newly_created_containers/

問題被解決了由於用戶airblader和kalgynirae。實現新的終端也需要cd到當前目錄後,我最終的腳本是這樣的:

newcontainer() { 
    wd=`pwd` 
    run_in_directory_executable=`which run-in-directory` 
    i3-msg exec "i3-sensible-terminal -e '$run_in_directory_executable $wd $1'" 
} 

newcontainer "vim tests/*" 
newcontainer "vim docs/*" 
vim pynba/* 

與磨合目錄包含稱爲一個單獨的腳本:

newcwd=$1 
shift 
cd $newcwd && [email protected] 

原因爲單獨的腳本,而不是僅僅cd $wd; $1-e選項似乎想要一個實際的可執行文件,而cd是一個shell內置。