tmux run-shellコマンドでbash機能を使用する

tmux run-shellコマンドでbash機能を使用する

別のtmuxウィンドウでレンジャーを使用してvimでファイルを開く機能を実装しようとしています。 .tmux.confで直接コマンドを定義すると機能します。しかし、私はビューに悪いコードが多すぎて関数に移動し、.bashrcからインポートしようとしましたが、'tmux__ranger_to_vim' returned 127tmuxがrun-shell定義された関数を見ること.bashrcができないのはなぜですか? ?

.bashrc

    function tmux__current_pane_has_process {
      test -n "$1" || { echo "No process name" >&2; return 1; }
      pattern='^[^TXZ ]+ +'"${1}"'$'
      ps -o state= -o comm= | grep -iqE "$pattern"
    }
    
    function tmux__ranger_to_vim {
      tmux__current_pane_has_process 'ranger' || return 0
      tmux send-keys 'y'
      sleep .01
      tmux send-keys 'p'
      tmux select-pane -L
      tmux__current_pane_has_process 'n?vim' || return 0
      tmux send-keys ':tabe ' C-r * C-m
    }

.tmux.conf

bind-key t run-shell "tmux__ranger_to_vim"

答え1

tmux run-shellsh -csourceが含まれていないので、コマンドを実行してください.bashrc。また、一部のシステムではshまったくbashではありませんがdash

bind-key t run-shell 'bash -c "source ~/.tmux.bash ; tmux__ranger_to_vim"'

関連情報