vim粘贴代码 若是有注释,那么粘贴后就惨不忍睹,相似于:html
我粘贴代码到a.cpp,内容为:vim
//打印函数 void print_hex(const unsigned char*data,int length,int radix=16) { for(int i=0;i<length;i++){ if(i%radix==0){ printf("0x "); } printf("%02x ",data[i]); if(i%4==3){ printf(" "); } if(i%radix==radix-1){ printf("\n"); } } printf("\n"); }
其缘由是什么呢?tcp
vim中 输入 :set函数
发现:spa
formatoptions=croql操作系统
这个选项,但愿在~/.vimrc中禁止,好比设置为命令行
set formatoptions=tcpmMcode
可是vim不识别此行,报错.没法禁止这个选项....orm
通过百度搜索,发现解决方案.[比较恶心 开源软件的就是配置文件 不人性化]htm
在粘贴前先设置进入粘贴插入模式,即不会自动缩进和连续注释
set paste
而后再进入插入模式粘贴,结果如图:
下面的插入模式 多了一个 paste.
在粘贴插入模式下代码是不会自动按格式缩进的,须要使用nopaste设置回来
set nopaste
也能够在.vimrc中设置切换的快捷键,好比设置F9,则能够在.vimrc中加入:
set pastetoggle=<F9>
这样直接在插入模式按F9就会在“-- 插入 --”模式和“-- 插入(粘贴) --”模式中切换
探秘:
最近使用Vim来写博客,发如今Vim中粘贴Python代码后,缩进就全乱了。仔细研究了如下,原来是自动缩进的缘故,因而作以下设置: :set noai nosi 取消了自动缩进和智能缩进,这样粘贴就不会错行了。但在有的vim中不行,仍是排版错乱。 后来发现了更好用的设置: :set paste 进入paste模式之后,能够在插入模式下粘贴内容,不会有任何变形。这个真是灰常好用,不由自主看了一下帮助,发现它作了这么多事: textwidth设置为0 wrapmargin设置为0 set noai set nosi softtabstop设置为0 revins重置 ruler重置 showmatch重置 formatoptions使用空值 下面的选项值不变,但却被禁用: lisp indentexpr cindent 怪不得以前只设置noai和nosi不行,原来与这么多因素有关! 但这样仍是比较麻烦的,每次要粘贴的话,先set paste,而后粘贴,而后再set nopaste。有没有更方便的呢?你可能想到了,使用键盘映射呀,对。咱们能够这样设置:: :map <F10> :set paste<CR> :map <F11> :set nopaste<CR> 这样在粘贴前按F10键启动paste模式,粘贴后按F11取消paste模式便可。其实,paste有一个切换paste开关的选项,这就是pastetoggle。经过它能够绑定快捷键来激活/取消 paste模式。好比:: :set pastetoggle=<F11> 这样减小了一个快捷键的占用,使用起来也更方便一些。
还有GUI操做系统的粘贴板,粘贴到命令行的vim中,有快捷键吗???事实证实,不太好用
但,这是最方便的吗?Vimer们对高效的追求永无止境。还有其余更好地方法吗? 你可能想到了,vim寄存器。对,使用vim寄存器 “+p 粘贴便可。根本不用考虑是否自动缩进,是否paste模式,直接原文传递!: "+p 要说vim寄存器,就要从vim文件间的复制粘贴提及。 Vim 中,若要复制当前行,普通模式下按 yy 便可,在要粘贴的地方按 p 。这是vim将复制内容保存到了本身的寄存器中的缘故。若是在其余地方执行yy,新的内容将覆盖掉原寄存器中内容。若是想保存原寄存器中内容而同时增长新 的内容呢?这时就要在yy前增长标签了。标签以双引号开始,跟着的是标签名称,能够是数字0-9,也能够是26个字母,而后就是复制操做,这样就把复制内 容保存到该标签寄存器里。经过下面命令显示全部寄存器内容:: :reg 其中注意两个特殊的寄存器:”* 和 “+。这两个寄存器是和系统相通的,前者关联系统选择缓冲区,后者关联系统剪切板。经过它们能够和其余程序进行数据交换。 备注: 若寄存器列表里无”* 或 “+ 寄存器,则多是因为没有安装vim的图形界面所致。Debian/Ubuntu下能够经过安装vim-gnome解决。 $ sudo apt-get install vim-gnome 选择缓冲区和系统剪切板啥子区别?让咱们继续研究。
vim须要图形化,才可使用 系统 粘贴板的内容..没办法,vim是命令行的..只能 用第一种方法了.
在两个vim中切换内容进行复制 粘贴,也是一件 比较恶心的事情...个人作法就是 复制到一个临时文件,而后合并目标文件和临时文件.在编辑...没办法,vim 太 "高端"了,不会用.vim/emacs让人类的人性化科学倒退了不少啊.
在vim中 输入
:help formatoptions
能够查看这个帮助信息.
参考资料:
http://hi.baidu.com/luosiyong/item/40f77e21df1f798c6e2cc335
http://www.cnblogs.com/end/archive/2012/06/01/2531147.html