私は人気のあるvimプラグイン「vim-slime」を使って単一のtmuxセッションを介してipythonとvimを統合しようとしています。問題は、別のtmuxウィンドウでvimを開くか、gvimを使用している限り正常に動作させることができますが、同じウィンドウの他のウィンドウにコード行を送信しようとするとできないことです。私が現在使用しているvimセッションに送った以上のものを入手してください。
私が本当に欲しい設定は、画面の右側のvim、左上のipython、左下の一般的なコマンドラインです。複数のセッションやウィンドウを開いて管理したくありません。
私は比較的経験が不足していることを知りませんが、これを行う簡単な方法はありますか?
答え1
ああ、私も同じ問題を抱えていて、このような質問をするようになりました。左側にはvimコードがあり、右側にはソリューションプロンプトを持つ分割セッションがあります。
私の問題は、セッション名がソケット名だと思いましたが、2つが異なることです。 0番目のwindowのセッション名を「0」と指定しましたが、実際には私が指定したセッション名にもかかわらず、SOCKETの名前は「Default」と指定されました。
実行中のtmuxソケットのリストを取得するには、
lsof -U | grep "^tmux"
次の回答でこれを見つけました。
https://stackoverflow.com/questions/11333291/is-it-possible-to-find-tmux-sockets-currently-in-use
上記はソケットの実際の名前を解決するのに役立ちます。
これが最初のプロンプトに入力する内容です。セッション名「0」と入力しましたが、機能しません。セッション名を指定しましたが、ここでは「Default」が必要です。
次に、2番目のプロンプトで(index-0ウィンドウ、index-1ウィンドウ)と入力します。
:0.1
望むより!ついに!動作中です。いいですね。これで並べて編集できます!
答え2
<c-c>v
ターゲットウィンドウを使用または変更する必要があります:SlimeConfig
。デフォルトは:
「現在のウィンドウ、現在のウィンドウ」です。望むより:help slime-tmux
。
代わりに、テキストを送信したいTmuxウィンドウ(iPythonを実行しているウィンドウ)に移動して、シェルで実行するかecho $TMUX_PANE
、tmux run "echo #{pane_id}"
正しいウィンドウIDを探す。
答え3
- ティーマックスを始めましょう。
Ctrl-b %
垂直に分割します。Ctrl-b [left arrow]
左ペインに移動Ctrl-b "
左ペインを水平に分割します。これで3つのコマンドラインが作成されます。Ctrl-b [up arrow]
左上のウィンドウに移動してキーを押しますipython
。Ctrl-b [right arrow]
右側のウィンドウに移動します。- Pythonコードでvimを起動します。
- Send a lineを使用し
Ctrl-C Ctrl-C
、ソケット名を受け入れdefault
、Enterを押して:0.0
IPythonウィンドウを選択します。
default
は0:0
それぞれソケット名とウィンドウIDです。