如何在单个 tmux 会话中使用 vim-slime?

如何在单个 tmux 会话中使用 vim-slime?

我正在尝试使用流行的 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_PANEtmux run "echo #{pane_id}"找到正确的窗格 ID

答案3

  1. 启动 tmux。
  2. Ctrl-b %垂直分割。
  3. Ctrl-b [left arrow]移至左侧窗格
  4. Ctrl-b "水平分割左侧窗格。现在您将拥有 3 个命令行。
  5. Ctrl-b [up arrow]移至左上角窗格,然后按ipython
  6. Ctrl-b [right arrow]移至右侧窗格。
  7. 在您的 Python 代码上启动 vim。
  8. 使用 发送一行Ctrl-C Ctrl-C,接受套接字名称为default,然后输入:0.0以选择 IPython 窗格。

default0:0分别是套接字名称和窗格 ID。

相关内容