vim 使用 smartindent 时,粘贴代码缩进问题

本文介绍了一种在Vim编辑器中粘贴代码时避免缩进混乱的方法。通过设置paste选项,可以在粘贴代码前后禁用smartindent特性,从而保持代码的原始缩进格式。

有时候从 web 上复制一段代码要粘贴到 vim 中,因为启用了 set smartindent 选项,粘贴后的缩进完全乱套。查 vim.cn 的 FAQ(14.14节) 知,可用 paste 选项禁用或启用 smartindent 选项。虽然前后麻烦些,至少问题解决了,smartindent 还是不能缺的。

在粘贴文本到 vim 前,先:

:
set paste

完了再恢复:

:
set paste!

其实先禁用 smartindent 也一样的,不过至少 pastesmartindent 短 6 个字符,呵呵。

 

转自:http://chunzi.me/post/601

### 如何在 Vim 中执行粘贴操作 在 Vim 编辑器中,粘贴操作可以通过多种方式完成,具体取决于当前所处的模式以及剪贴板的内容。以下是几种常见的方法: #### 使用正常模式下的 `p` 命令 当处于 **正常模式** ,可以使用命令 `p` 将缓冲区中的内容粘贴到光标的后面[^1]。如果希望将内容粘贴到光标的前面,则可以使用命令 `P`。 #### 在可视模式下粘贴 进入 **可视模式** 后,可以选择一块区域并替换它为剪贴板中的内容。这通过先选择目标区域再按 `p` 实现[^3]。 #### 利用系统剪贴板进行跨程序粘贴 对于支持系统剪贴板集成的版本(如 gVim 或配置过的终端 Vim),可借助特殊寄存器 `"*` 和 `"+` 来访问剪贴板数据。例如,在正常模式下输入 `"*p` 可以从系统的选中文本缓冲区粘贴内容;而 `"+p` 则会从复制/剪切缓冲区粘贴内容[^4]。 #### 设置合适的选项避免缩进混乱 为了防止因自动缩进功能而导致粘贴后的代码格式错乱,建议事先开启或关闭某些设置项。比如临禁用 `autoindent` 和 `smartindent` 功能可通过如下指令实现: ```vim :set noai nosi ``` 之后恢复这些设定也很简单: ```vim :set ai si ``` 或者更简便的方法是在粘贴前切换至专门为此设计的 Paste 模式: ```vim :set paste ``` 完成后记得重新退出该模式以免影响后续编辑体验: ```vim :set nopaste ``` ### 示例代码展示 下面给出一段简单的演示脚本用于说明上述概念的应用场景。 ```vim " 开启paste模式以便干净利落地粘贴外部内容 :set paste " 执行实际的粘贴动作,默认情况下'p'即可满足需求 normal! p " 关闭paste模式恢复正常编辑行为 :set nopaste ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值