在 Tmux 的复制模式下如何滚动 Vim 窗口?

3

在使用tmux的复制模式时,我无法让vim窗口滚动。这个有可能吗?我正在尝试将vim中的一个巨大文本块复制到一个tmux窗口中并粘贴到另一个窗口中。谢谢。


1
我建议尝试Tim Pope的tbone插件:https://github.com/tpope/vim-tbone - Cubic
https://github.com/sjl/vitality.vim - digenishjkl
2个回答

2
我知道你需要什么,我也在网上搜索找到了它。这也曾经困扰过我。然而,这可能会帮助你解决问题:

http://www.vim.org/scripts/script.php?script_id=4488 - 一个vim插件。它不像进入复制模式并在vim中滚动那样花哨,而是代替tmux的历史/滚动缓冲区。


那么除了在所有通过tmux访问的机器上安装/使用vim插件之外,没有其他方法吗?希望复制模式可以做到这一点,真是太遗憾了。 - Bastien974

1
尝试看看这是否符合您的需求:

try if this works for your needs:

function! SetTmuxBuffer() range
    execute "!tmux set-buffer '" .join(getline(a:firstline, a:lastline),"\015")."'"
endfunction

command! -range ToTmux <line1>, <line2> call SetTmuxBuffer()

将上述代码放入您的vimrc或vim文件中并进行源代码处理。然后,您可以将第1行至第8行发送到tmux缓冲区,例如:

:1,8ToTmux

或者可视化选择,然后
:'<,'>ToTmux

切换到另一个tmux窗口,尝试将这些行粘贴到vim中。


也许可以使用 system()tmux load-buffer,这样就不必使用 shellescape() 来正确处理所有字符(例如单引号):call system('tmux load-buffer -', join(getline(a:firstling, a:last line), "\012")) - Chris Johnsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接