1. 背景

在终端Vim中粘贴代码时,发现插入的代码会有多余的缩进,而且会逐行累加。原因是终端把粘贴的文本存入键盘缓存(Keyboard Buffer)中,Vim则把这些内容作为用户的键盘输入来处理。导致在遇到换行符的时候,如果Vim开启了自动缩进,就会默认的把上一行缩进插入到下一 行的开头,最终使代码变乱。

2. 解决

  1. 取消自动缩进
    在命令模式下,使用“:set nosmartindent”和“:set noautoindent”取消自动缩进,然后再粘贴即可。完成后再开启自动缩进“:set smartindent”和“:set autoindent”,以上命令都可使用简写,比如“:set si”,可通过Vim的帮助“:help smartindent”查看相应说明。
  2. Paste模式
    Vim的编辑模式中,还有一个Paste模式,在该模式下,可将文本原本的粘贴到Vim中,以避免一些格式错误。通过“:set paste”和“:set nopaste”进入和退出该模式。更简便的方式是,在Vim中设置一个进入和退出Paste模式的快捷键,往“~/.vimrc”中添加一行配置 “set pastetoggle=<F12>”,这样即可通过F12快速的在Paste模式中切换,当然快捷键在不冲突的前提下可以任意指定,具体如 何指定,参考附带的教程链接。

3. 参考

  1. Toggle auto-indenting for code paste | Vim Tips Wiki | Fandom
  2. http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_(Part_1)
  3. http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_(Part_2)
  4. http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_(Part_3)

vim粘贴代码时缩进混乱相关推荐

  1. linux自动调代码格式,使用vim粘贴代码时格式变乱,自动缩进,自动加注释解决方案...

    需要粘贴到vim的代码如下: # 指标 instance 的配置 apiVersion: "config.istio.io/v1alpha2" kind: metric metad ...

  2. vi/vim粘贴代码自动缩进导致全乱了

    用vim打开一个空白文档,然后把已经复制的代码给粘贴进来,发现它有自动缩进功能,最终导致粘贴的文本一行比一行靠右,看起来乱成一团.比较快的解决办法是,在粘贴文档前,在命令行模式下,输入 :set no ...

  3. vim粘贴串行和缩进混乱问题

    如果vimrc设置了set paste,那么set autoindent就不会生效! 所以在~/.vimrc 里面只写两行即可. set number set paste 不要放太多设置,贪多嚼不烂. ...

  4. vi/vim粘贴代码和注释格式混乱的解决方法

    现象 在vim新建文件的时候,黏贴代码会自动缩进,导致格式非常混乱. 或是粘贴注释出现自动注释: vim复制代码包含注释时格式会乱掉 每次复制代码时,如果代码里有 // 这样的注释就容易让格式乱掉,通 ...

  5. vim 粘贴代码格式

    在vim粘贴代码的时候,粘贴的代码(shift+insert)会自动缩进,导致格式非常混乱. 下面介绍两种方法: (1)在vim中,进入命令模式输入:set paste,在进行粘贴,就不会乱码了.但是 ...

  6. vim粘贴代码的时候取消自动缩进

    问题 经常需要粘贴一段代码进vim里,但是vim里默认是自动缩进的, 所以导致粘贴的代码的每一次缩进都多了一层,对于python这样的代码而言,缩进混乱肯定会导致无法执行,所以需要在粘贴的时候取消自动 ...

  7. 解决centos中vim粘贴yml代码时缩进错乱的问题

    背景描述 随着微服务的使用,在linux上使用vim或者vi命令编辑yml文件的时候,会自动缩进,导致文件根本 无法使用. 解决办法 粘贴前先执行如下命令: :set paste 再粘贴的时候,里面的 ...

  8. 复制粘贴代码时要注意空白字符的问题

    std::string ConvertToString(System::String^ str) {      int q=(int)System::Runtime::InteropServices: ...

  9. vim编写代码时,文件末尾会多一个换行符的解决办法

    问题来源:由于代码提交合并时,会显示本人写的代码相比于master的代码会多一行,几乎所有的文件都如此,而我的本地源码与git库的源码均未显示多这一行,不知何原因? 从问题定位肯定是换行符的问题,试过 ...

最新文章

  1. MySQL 5.7 for Windows 解压缩版配置安装
  2. [应用][js+css3]3D盒子导航[PC端]
  3. linux-进程切换,用户态进程,内核态进程
  4. Java中怎样使用反射根据属性名获取和设置属性的值
  5. 多层架构模型中的BLL 与 Model的解释
  6. PWA(Progressive Web App)入门系列:(三)PWA关键技术Manifest
  7. Unity网络--HLAPI(2):Unity HLAPI NetworkManager与NetworkBehaviour的回调函数
  8. Java中更换Map中的主键key的名称
  9. 【面经】回顾19秋招面经
  10. 实现手机访问网站时点击手机号码直接拨打电话的功能
  11. Lattice - 规划模块 1.采样轨迹 2.计算轨迹cost 3 循环检测筛选轨迹
  12. 短视频直播带货APP源码 全开源原生直播APP源码
  13. Matlab | matpower5.0:最优潮流执行步骤及修改教程
  14. welearn随行课堂刷题教程
  15. php锐浪开发,解析Excel文件生成Grid++Report锐浪模版
  16. 三极管在ad中的原理图库_AD18 原理图库
  17. RocketMQ(十)RocketMQ事务消息
  18. 团队建设(Team building)就是等于组织大家一起吃饭娱乐吗?
  19. Netflix时代之后Spring Cloud微服务的未来
  20. redis分布式锁和调度锁

热门文章

  1. [sig17]《使命召唤:无限战争》的多层材质技术
  2. 企伴圈圈千群即时互动社群论坛营销系统
  3. Linux中bash
  4. linux cgi c环境配置,Linux下配置nginx支持.cgi | 系统运维
  5. SpringBoot使用Redis清除所有缓存
  6. 扬州全国计算机考点,2018年上半年江苏省扬州市计算机等级考试考务通知
  7. linux卸载命令rpm,Linux之rpm包的卸载与安装方法步骤
  8. 超级好的Sql Server数据库开发与管理软件--Toad for SQL Server
  9. 启动ubuntu什么时候按shift_解决 Ubuntu 在启动时冻结的问题
  10. mysql用了utf8还是乱码_MySQL乱码的原因和设置UTF8数据格式