何らかの理由で、Tmuxは必要に応じてzsh
出力vim
を表示します#{pane_current_command}
。これにより、正常に動作するためにTmuxに依存するtmuxのvim認識ウィンドウ移動コマンドが混乱します。
# vim aware commands
# pane/split switching
bind -n C-h run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-h) || tmux select-pane -L" #left
bind -n C-j run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-j) || tmux select-pane -D" #down
bind -n C-k run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-k) || tmux select-pane -U" #up
bind -n C-l run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-l) || tmux select-pane -R" #right
bind -n C-\ run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys 'C-\\') || tmux select-pane -l" #next
# pane/split creation
bind | run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-w && tmux send-keys v) || tmux split-window -h" #verticle
bind - run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-w && tmux send-keys s) || tmux split-window -v" #horizontal
# pane/split close
bind x run "(tmux display-message -p '#{pane_current_command}' | grep -iq vim && tmux send-keys C-w && tmux send-keys q) || tmux kill-pane "
エイリアスでvimを起動します。
alias vim='rbenv only -r 2.3.5 -c "/usr/local/bin/vim" $@'
実際に問題を引き起こすエイリアスです。この問題をどのように解決しますか?現在のプロセスの名前を設定する方法はありますか?
見つかりましたjobs -Z
が、エイリアスでは機能しないようです。
答え1
さて、@B-Layerが残したコメントを見た後、私が使っていたエイリアスを置き換えるための簡単なbash関数を作成しました。
機能:
function vim()
{
cmd="exec /usr/local/bin/vim $@"
rbenv only -r $GLOBAL_RUB_VERSION -c "$cmd";
}
これでrbenvのみを使用してvimを起動できるので、vimがコンパイルされたのと同じバージョンのRubyで常に起動します。今(曲とダンスのために)YouCompleteMeは、ルビーのバージョンを切り替えるときに文句を言いません。