tmux 使用“pane_current_command”显示 vim 的 zsh

tmux 使用“pane_current_command”显示 vim 的 zsh

由于某种原因,Tmux 显示了zsh何时应该显示vim的输出#{pane_current_command},这搞砸了我在 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 不会因为我切换 ruby​​ 版本而抱怨/崩溃。

相关内容