我正在尝试使用 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键绑定,该键绑定可以复制我所在的行,然后通过几次快速击键将其发送到相对的窗格。
如果您有一些神奇的调味料,我将不胜感激!
答案 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