vim 从一个文件粘贴到另一个文件,有时好用,有时不好用,这是什么原因呢?

2016-07-18 20:53:00 +08:00
 xinali

要说完全没法用还好说,关键是,有时能用,有时不能用,没办法了粘贴的时候只能调出 gedit 去复制,之后再用 vim 编辑 vim 的版本


VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan  2 2014 19:39:32)
Included patches: 1-52
Modified by pkg-vim-maintainers@lists.alioth.debian.org
Compiled by buildd@
Huge version without GUI.  Features included (+) or not (-):
+acl             +farsi           +mouse_netterm   +syntax
+arabic          +file_in_path    +mouse_sgr       +tag_binary
+autocmd         +find_in_path    -mouse_sysmouse  +tag_old_static
-balloon_eval    +float           +mouse_urxvt     -tag_any_white
-browse          +folding         +mouse_xterm     -tcl
++builtin_terms  -footer          +multi_byte      +terminfo
+byte_offset     +fork()          +multi_lang      +termresponse
+cindent         +gettext         -mzscheme        +textobjects
-clientserver    -hangul_input    +netbeans_intg   +title
-clipboard       +iconv           +path_extra      -toolbar
+cmdline_compl   +insert_expand   -perl            +user_commands
+cmdline_hist    +jumplist        +persistent_undo +vertsplit
+cmdline_info    +keymap          +postscript      +virtualedit
+comments        +langmap         +printer         +visual
+conceal         +libcall         +profile         +visualextra
+cryptv          +linebreak       +python          +viminfo
+cscope          +lispindent      -python3         +vreplace
+cursorbind      +listcmds        +quickfix        +wildignore
+cursorshape     +localmap        +reltime         +wildmenu
+dialog_con      -lua             +rightleft       +windows
+diff            +menu            -ruby            +writebackup
+digraphs        +mksession       +scrollbind      -X11
-dnd             +modify_fname    +signs           -xfontset
-ebcdic          +mouse           +smartindent     -xim
+emacs_tags      -mouseshape      -sniff           -xsmp
+eval            +mouse_dec       +startuptime     -xterm_clipboard
+ex_extra        +mouse_gpm       +statusline      -xterm_save
+extra_search    -mouse_jsbterm   -sun_workshop    -xpm
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H     -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1      
Linking: gcc   -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -o vim        -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl    -L/usr/lib/python2.7/config-x86_64-linux-gnu -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions

3473 次点击
所在节点    Vim
21 条回复
kotomi
2016-07-18 21:13:52 +08:00
你是怎么复制的?我"+y -> "+p 总是成功的,编辑状态下 command + c -> command + v 也是可以的。
ceyes
2016-07-18 21:18:20 +08:00
的确容易被这些剪切板 /寄存器搞得头晕眼花,索性 :vs 打开另一个文件然后复制粘贴就简单多了
3pointer
2016-07-18 21:26:53 +08:00
你需要 tmux
dong4138
2016-07-18 21:31:41 +08:00
vim: "+y 复制到剪切板
tmux: <c-b>[
RIcter
2016-07-18 21:36:27 +08:00
vim 里 :set paste
xinali
2016-07-18 21:52:54 +08:00
统一回复一下,现在我能成功时,只能是首先打开一个文件,之后"+y 复制,之后立马关闭该文件,之后打开需要粘贴的文件,利用"+p 进行复制,这样可以成功

在两个文件同时打开的情况下
@RIcter 这个方法尝试了,但是没有成功
@dong4138 这个是什么意思? tmux <c-b>[ 这个难道不是翻页的功能吗?还有别的用法
@kotomi ubuntu 下在编辑状态下,貌似只能右键选择进行复制,也许有别的方法,我还不知道
xinali
2016-07-18 22:21:53 +08:00
还有一点需要说明的是,每次最多只能复制 50 line 。。。
HHehr0ow
2016-07-18 22:22:13 +08:00
:reg 看看剪贴板里都是些啥内容
Bardon
2016-07-18 22:34:41 +08:00
vim --version | grep clipboard
看下,如果编译开关没打开
则装个 gvim 吧
seoguess
2016-07-18 22:40:12 +08:00
这个问题我也纠结过。

set pas 自动补全,我记不住,然后 i 插入
然后 set nopas 取消

就不会错位了。
ETiV
2016-07-18 23:08:28 +08:00
vim 复制内容我都是打开文件 A ,再 :tabnew 文件 B

复制好后 gt 、粘贴
dong4138
2016-07-19 10:16:49 +08:00
@xinali 我是设置了复制的 vi 模式,按了<c-b>[ 后, vi 的移动,选择, copy 操作都可以用
wlsnx
2016-07-19 10:31:17 +08:00
+clipboard 直接 p
morefreeze
2016-07-19 10:43:47 +08:00
分享个复制的 map 吧,仔细看注释

" 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>
bp0
2016-07-19 13:51:28 +08:00
set clipboard=unnamed

可以默认使用系统的剪贴板
xinali
2016-07-19 17:12:56 +08:00
@morefreeze leader 是什么?
morefreeze
2016-07-19 18:22:00 +08:00
:help leader 看一下,简单来说就是个按键,默认是\
elvba
2016-07-22 00:31:28 +08:00
@RIcter +1
ashfinal
2016-07-23 15:05:27 +08:00
感觉楼上回复的都比较模糊混乱,这里统一说一下:

为啥要用 "+y "+p 这种方式呢,直接 yy p 不行么?我一般都是用插件 yankring 的。这是个可视化多剪贴板,很有用。

+clipboard 选项是与外部程序共享剪贴板的。没这特性,从 firefox 或其它程序复制文本,在 vim 直接按 p 是粘贴不进来的。看楼主 :version 输出信息这项是 -clipboard ,可以考虑有空的时候重新编译下 vim 。 一般 gvim 这一选项默认都是开的。

set (no)paste 选项是从外部粘贴过来防止格式缩进错乱的,与粘不粘得进来关系不大。

麻烦对照下重新阐释下自己遇到的问题。

顺便打个广告,我的 vimrc 配置: https://github.com/ashfinal/vimrc-config
chemzqm
2016-07-29 22:35:29 +08:00
自己编译吧 你这个 vim 版本太老了一点 clipboard 也没启用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/293307

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX