现在的开发环境是 centos server 版,习惯用 vim 做编辑器,
为了分屏,用了 tmux ,然后发现要跨文件复制很麻烦。
tmux 的 ctrl+a [ 空格,会将 vim 的行号甚至状态栏也复制进来
vim 的"+y 复制方式,也无法成功,因为 centos 的 vim 没有+寄存器。
至于 tmux 下用鼠标选择,会将两个竖屏的代码同时复制。。。
好奇其它人怎么复制的?
![]() | 1 ishamo 2016-03-07 15:32:23 +08:00 复制的时候把 vim 里的行号去掉再复制啊。 set nonu |
![]() | 2 thwawar 2016-03-07 16:14:11 +08:00 vim 可以 set nonu tmux 可以 resize-pane -Z |
![]() | 3 msg7086 2016-03-07 16:18:05 +08:00 我开个 vim 然后分屏,复制没压力啊。 |
![]() | 4 cxbig 2016-03-07 16:22:32 +08:00 - tmux 是借用了系统的剪贴板实现跨软件或编辑器复制 - tmux 下用左右 panes 的时候 copy 东西需要通过 vertical-mode |
5 4679kun 2016-03-07 16:23:22 +08:00 看好行号 然后 cat+sed+重定向 |
![]() | 6 ETiV 2016-03-07 16:26:09 +08:00 我有复制需求的时候都是 :tabnew 然后 yy, gt, p |
![]() | 7 Epirus 2016-03-07 16:27:50 +08:00 |
![]() | 10 iamleung 2016-03-07 16:41:19 +08:00 分屏+1 ,然后继续 y 复制 |
![]() | 11 tracyone 2016-03-07 16:44:24 +08:00 ``` # MSYS if-shell 'uname | grep -qi MSYS_NT' 'bind -t vi-copy y copy-pipe "cat > /dev/clipboard"' if-shell 'uname | grep -qi MSYS_NT' 'bind ] run "cat /dev/clipboard | tmux load-buffer - ; tmux paste-buffer"' # os x #if-shell 'uname | grep -qi Darwin' 'set-option -g default-command "reattach-to-user-namespace -l zsh"' if-shell 'uname | grep -qi Darwin' 'bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"' if-shell 'uname | grep -qi Darwin' 'bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy"' if-shell 'uname | grep -qi Darwin' 'bind ] run "reattach-to-user-namespace pbpaste | tmux load-buffer - && tmux paste-buffer"' # Linux if-shell 'uname | grep -qi Linux' 'bind -t vi-copy y copy-pipe "xclip -sel clip -i"' ``` |
![]() | 12 ljmready OP 另外,用 tmux 复制时会复制少开头几个字。。 |
13 zealot0630 2016-03-07 17:27:09 +08:00 如果 vim 跑在本地的话: 1. 按 v 选中想要复制的文本 2. "*y 复制到本地 X 剪贴板 3. 切换到要复制的 vim 4. "*p 把 X 剪贴版的内容复制到 vim 中 服务器开了 xforward 页可以用 |
![]() | 14 skydiver 2016-03-07 17:31:16 +08:00 先选中,然后:w /tmp/blablabla 然后到另一个 vim :r /tmp/blablabla |
15 morefreeze 2016-03-07 17:33:58 +08:00 " Allow to copy/paste between VIM instances "copy the current visual selection to ~/.vbuf vmap <leader>y :w! ~/.vbuf<cr> "copy the current line to the buffer file if no visual selection nmap <leader>y :.w! ~/.vbuf<cr> 这样满足吗? |
![]() | 16 gonglexin 2016-03-07 17:35:15 +08:00 文件内容不多的时候,我一般用 r (:h read) |
19 introom 2016-03-08 01:32:17 +08:00 via Android ![]() 通常就三种, 一,利用 x 的 clipboard.但我不喜欢这种,一来 vim 的依赖变多,二来我 mac 上还得装 X 才能 xforward ,三来 tmux 下 display 变量更新有点麻烦。 二,用 tmux 的 buffer ,局限是你必须得跑着 tmux 三, clipper, 或者类似。我现在用的就是这个。谷歌 vim clipper 应该首页能出结果。 |
![]() | 20 tonghuashuai 2016-03-08 08:30:21 +08:00 via iPhone ![]() vim 同时打开两个文件就好了啊 |
![]() | 21 czb 2016-03-08 09:03:14 +08:00 via Android 先分屏 :sp / :vsp 然后在 yank 和 paste |
22 bramblex 2016-03-08 09:16:17 +08:00 ![]() 我以前写过一个简单 vim 插件,用来在没有剪贴板的情况下在服务器跨 vim 进程复制粘贴…… 其实就是拿一个文件中转一下而已…… |
23 jsonline 2016-03-08 09:19:36 +08:00 via Android ![]() neovim |
![]() | 24 Mush 2016-03-08 12:28:35 +08:00 ![]() vim 开两个文件是个好方法, 如果用 tmux 分屏(或者两台机器)的话, 我都是`:! cat %`然后鼠标选中复制........ |
![]() | 25 pkking 2016-03-08 13:46:23 +08:00 :vs |
![]() | 26 vinceguo 2016-03-08 14:14:59 +08:00 via Android 至于这么麻烦吗?鼠标选择之前按住 ctrl 就可以了 Ubuntu 15.10 自带 terminal 亲测有效 |
28 Lordyung 2016-11-15 07:30:35 +08:00 via iPhone @morefreeze 原来可以这样,没想到 |