vim 粘贴代码自动缩进导致全乱了

回复 收藏
用vim打开一个空白文档,然后把已经复制的代码给粘贴进来,发现它有自动缩进功能,最终导致粘贴的文本一行比一行靠右,看起来乱成一团。比较快的解决办法是,在粘贴文档前,在命令行模式下,输入
  1. :set noai nosi
然后按'i' 进入编辑模式,再粘贴已经复制的代码内容,这样就不会自动缩进了。

有时候,这样的方法不好用,可以尝试这种:

:set paste
2014-07-10 14:28 举报
已邀请:
0

寻@轨迹

赞同来自:

学习了{:4_91:}
0

lyhabc

赞同来自:

铭哥,来解释一下 set noai nosi和set paste 是什麽意思吗?
有什么作用?
0

终わりない梦

赞同来自:

lyhabc 发表于 2015-3-24 23:02
铭哥,来解释一下 set noai nosi和set paste 是什麽意思吗?
有什么作用?

vim粘贴代码出现乱码的解决方法

Vim 作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情。每当学会了vim的一个新功能,就会很大地提高工作效率。有人使用vim几 十年,还没有完全掌握vim的功能,这也说明了vim的强大。而这样何尝不是一件好事呢,只要有的学习,就有的提高。

最近使用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 :set paste :map :set nopaste

这样在粘贴前按F10键启动paste模式,粘贴后按F11取消paste模式即可。其实,paste有一个切换paste开关的选项,这就是pastetoggle。通过它可以绑定快捷键来激活/取消 paste模式。比如::
:set pastetoggle=

这样减少了一个快捷键的占用,使用起来也更方便一些。

但,这是最方便的吗?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

选择缓冲区和系统剪切板啥子区别?让我们继续研究。
0

lyhabc

赞同来自:

原样粘贴
:set paste
:set nopaste
受教了
0

15727001301

赞同来自:

学习
0

zhangmengjun

赞同来自:

受教了
0

ChrisLinux

赞同来自:

太好了,这些都是有用的文档
0

左左

赞同来自:

看完以后,知识加深一步。

0

灵度泪 - -

赞同来自:

这个实用!

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: