如何在运行vim实例的不同tmux窗格之间复制和粘贴
例如:复制一个tmux窗格(通过vim),然后切换到另一个窗格(运行另一个vim实例)并使用vim paste命令进行粘贴。 我知道这可以通过tmux(使用前缀+)来完成,但是如果我可以使用vim绑定来复制和粘贴,那真的很方便,因为我只是在运行vim的不同窗格之间切换。
有任何想法吗?
对不起,我试图说服你使用vim的内置function。
为了方便copy/paste
,您可以在另一个Tabpages中打开文件:
:tabe /path/to/another/file
使用gt或gT切换Tabpages。
或者分割窗口来编辑另一个文件:
:sp /path/to/another/file
使用Ctrl-w w切换Windows。
要垂直分割窗口,请使用:vsp file
更新:
这是我的.tmux.conf
文件:
# vim setw -g mode-keys vi bind [ copy-mode bind -t vi-copy v begin-selection bind -t vi-copy y copy-selection bind -t vi-copy V rectangle-toggle bind ] paste-buffer # buffer bind Space choose-buffer
我只有在需要复制terminal输出时才使用它们。
我已经使用了这个方便的绑定了几年:)
" copy to buffer vmap <Cc> :w! ~/.vimbuffer<CR> nmap <Cc> :.w! ~/.vimbuffer<CR> " paste from buffer map <Cp> :r ~/.vimbuffer<CR>
虽然我同意只使用一个vim实例会更好,但是您可以单独使用tmux来实现。 它有一个内置的复制模式。 我的tmux.conf是这样设置的:
setw -g mode-keys vi unbind [ unbind p bind Cy copy-mode bind p paste-buffer bind -t vi-copy v begin-selection bind -t vi-copy y copy-selection bind -t vi-copy Escape cancel
所以你可以使用prefix-<Cy>
来激活复制模式, /search term
作为例子去你想要的地方, v
可以直观地select, y
被放入到tmux中。 然后转到其他vim会话并进入插入模式。 使用prefix-p
粘贴tmux粘贴缓冲区中的内容。 还有一些方法可以将tmux的粘贴缓冲区复制到系统剪贴板中。
目前,我正在使用运行Windows的笔记本电脑,但是我在运行Linux的服务器上进行了所有的开发工作,所以我最终一整天都在使用PuTTY进行tmux会话。
我想在tmux会话中的不同窗口中运行的vim实例之间复制文本。 我尝试使用*
寄存器复制到系统剪贴板,但由于我通过PuTTY连接,所以没有X会话,所以没有系统剪贴板,即使启动gVim而不是vim。 (我可能已经能够使用x-forwarding或其他方法来解决这个问题,但我不想在Windows上安装x-server。)
我认为应该有一种方法来使用vim中的tmux复制/粘贴缓冲区来代替系统键盘,而且肯定有人已经为此写了一个插件 。
安装fakeclip会添加一个新的寄存器&
,映射到tmux的粘贴缓冲区。 由于我所有的vim实例都在同一个tmux会话中,这使得在它们之间放置/放置文本变得非常简单。
插件文档说fakeclip也应该与gnu屏幕一起工作,但我没有亲自testing过。
TL;博士
安装fakeclip插件,然后你可以使用“ & y来插入tmux的缓冲区,而” & p从tmux的缓冲区放置 。
您可以使用vim绑定将内容复制到剪贴板,然后切换到窗格并粘贴。 以下的键绑定可能是方便的。
noremap ty "+y noremap tY "+Y // copy a whole line to the clipboard noremap tp "+p // put the text from clipboard after the cursor noremap tP "+P // put the text from clipboard before the cursor
"+
寄存器用于访问Vim中的系统的clipborad。
一些有用的提示:
1.您可以按v
或V
或ctrl-v
进入可视模式,然后select您想要的内容,然后按ty
将其复制到剪贴板。
2. ty
可以与其他动作结合使用。 例如, tyaw
可以用来将光标下的一个单词复制到剪贴板。 tyib
复制括号内的内容。 tyi"
复制双引号内的文字等…
另请参见如何从(并复制到)系统的剪贴板粘贴vim? 作进一步解释。
解决scheme在Fedora24上
你需要使用vimx而不是vim
放入你的.bashrc或.zshrc
alias vi='vimx' alias vim='vimx'
然后你可以很容易地复制vims / tmux面板
$ vim --version | grep clipboard -clipboard +insert_expand +path_extra -toolbar +eval +mouse_dec +statusline -xterm_clipboard $ vimx --version | grep clipboard +clipboard +insert_expand +path_extra +toolbar +eval +mouse_dec +statusline +xterm_clipboard
vimx是你最有可能安装的vim-enhanced-2:7.4.1868-1.fc24.x86_64的一部分