键盘绑定使用tmux + vim发送测试代码行吗?

时间:2019-05-07 23:50:11

标签: python bash vim ide tmux

我正在尝试使用 tmux + vim 创建类似ide的设置。我已经在互联网上看到很多有关此的文章,但是我一直无法弄清楚如何做一件关键的事情:执行代码测试行。

例如,您可以创建一个tmux会话,其vim窗格用于编写代码,而python窗格用于执行测试,如下所示:

# Create a new Tmux session.
session="ide"
tmux start-server
tmux new-session -d -s $session -n ide

# Split the pane horizontally and launch vim.
tmux selectp -t 1
tmux splitw -v -p 50
tmux selectp -t 1
tmux send-keys "vim" C-m

# Enter insert mode and start coding...
tmux send-keys "i"
tmux send-keys "print('hello world')" C-m

# Select the second pane and launch python.
tmux selectp -t 2
tmux send-keys "python" C-m

# Attach to tmux session.
tmux attach -t ide

因此,我知道您可能如何使用tmux send-keys或tmux的命令模式(<prefix> :)将命令发送到另一个窗格。但是,我想制作一个vim键绑定,该键绑定可以复制我所在的行,然后通过几次快速击键将其发送到相对的窗格。

如果您有一些神奇的调味料,我将不胜感激!

2 个答案:

答案 0 :(得分:1)

我认为您正在寻找https://github.com/jpalardy/vim-slime

一旦安装和配置(tmux不是默认设置,screen是),则可以使用<C-c><C-c>在光标下方执行文本。

以下内容对我有用

  • 安装Vim-slime。我正在使用Vundle,因此我在.vimrc中添加了以下内容:
    Plugin 'jpalardy/vim-slime',并在vim中运行:PluginInstall

  • 通过将以下内容添加到.vimrc中来为tmux配置史莱姆:
    let g:slime_target = "tmux"

  • 尝试使用默认键绑定(C-c C-c)发送带有vim-slime的行。 Vim-Slime应该提示您输入Tmux的套接字和目标窗格。 我发现Tmux的插座有:
    echo $TMUX | cut -f1 -d','

  • 或者,您可以使用:SlimeConfig

  • 现在可以使用了!

答案 1 :(得分:0)

看起来像是vim-slime一样。

但是如果要进行更新,对其他人很有用。

您可以进行如下映射。
-t +-t .+的更改应导致tmux粘贴到备用窗格

vnoremap <leader>tp :call system('tmux send-keys -t .+ -l ' . shellescape(join([getline("."), "\n"])) )<CR>

参考:
Send literal string from python-vim script to a tmux pane