我正在尝试使用流行的 vim 插件“vim-slime”通过单个 tmux 会话集成 ipython 和 vim。问题是,虽然只要在单独的 tmux 窗口中打开 vim(或使用 gvim),我就可以让它正常工作,但如果我尝试将代码行发送到同一窗口中的不同窗格,我最多只能将其发送到我当前正在使用的 vim 会话。
我真正想要的设置是 vim 位于屏幕右侧,ipython 位于左上角,常规命令行位于左下角。我真的不想打开和管理多个会话和窗口。
有没有一种简单的方法可以做到这一点,但由于我相对缺乏经验而我不知道?
答案1
好吧,我遇到了完全相同的问题,这就是我提出这个问题的原因。我有一个分割会话,左侧是 vim 代码,右侧是方案提示。
我的问题是,我认为会话名称是套接字名称,但它们是两个不同的东西。我将第 0 个窗口的会话命名为“0”,但事实上,尽管我指定了会话名称,但 SOCKET 仍被命名为“默认”。
要获取运行的 tmux 套接字列表:
lsof -U | grep "^tmux"
我从这个答案中发现:
https://stackoverflow.com/questions/11333291/is-it-possible-to-find-tmux-sockets-currently-in-use
上面的内容有助于查看套接字的实际名称。
这就是您在第一个提示中输入的内容。我输入了“0”,这是我的会话名称,但它不起作用。尽管我已经命名了该会话,但“默认”是那里所需要的。
然后,在第二个提示符下,我输入(index-0 窗口,index-1 窗格):
:0.1
瞧!最后!它正在工作。太棒了,现在可以并排编辑了!
答案2
您需要使用<c-c>v
或更改目标窗格:SlimeConfig
。默认值为:
,即“当前窗口,当前窗格”。看:help slime-tmux
。
相反,导航到要将文本发送到的 Tmux 窗格(运行 iPython 的窗格),然后从 shell运行echo $TMUX_PANE
或tmux run "echo #{pane_id}"
找到正确的窗格 ID。
答案3
- 启动 tmux。
Ctrl-b %
垂直分割。Ctrl-b [left arrow]
移至左侧窗格Ctrl-b "
水平分割左侧窗格。现在您将拥有 3 个命令行。Ctrl-b [up arrow]
移至左上角窗格,然后按ipython
。Ctrl-b [right arrow]
移至右侧窗格。- 在您的 Python 代码上启动 vim。
- 使用 发送一行
Ctrl-C Ctrl-C
,接受套接字名称为default
,然后输入:0.0
以选择 IPython 窗格。
default
和0:0
分别是套接字名称和窗格 ID。