现在的开发环境是 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 1
通常就三种,
一,利用 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 1
vim 同时打开两个文件就好了啊
|
21
czb 2016-03-08 09:03:14 +08:00 via Android 1
先分屏 :sp / :vsp 然后在 yank 和 paste
|
22
bramblex 2016-03-08 09:16:17 +08:00 1
我以前写过一个简单 vim 插件,用来在没有剪贴板的情况下在服务器跨 vim 进程复制粘贴……
其实就是拿一个文件中转一下而已…… |
23
jsonline 2016-03-08 09:19:36 +08:00 via Android 1
neovim
|
24
Mush 2016-03-08 12:28:35 +08:00 1
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 原来可以这样,没想到
|