Vim 复制粘帖格式错乱问题的解决办法
创始人
2024-03-01 10:57:57
0

原文:Vim 复制粘帖格式错乱问题的解决办法

有时候,复制文本(尤其是代码)到 Vim,会出现格式错乱的问题。看样子,应该是自动缩进惹得祸。本文不去深究原因,直接给出解决方法。

  1. paste 模式

运行如下命令,进入 paste 模式:

:set paste

进入 paste 模式后,按 i 键进入插入模式,然后再粘帖,文本格式不会错乱了。但粘帖后还需要按 进入普通模式并执行如下命令结束 paste 模式:

:set nopaste

显然,这样非常麻烦。下面我们进行改进。 2. 快捷键一

我们可以利用设置快捷键来简化上面的两个命令。在 ~/.vimrc 中加入如下两行:

map  :set paste
map  :set nopaste

这样,在普通模式下按 F10 (你也可以用自己喜欢的按键)就会进入 paste 模式,按 i 进入插入模式后粘帖,然后按 回到普通模式,再按 F11 结束 paste 模式。 这样虽然方便了,但占用了两个按键。下面我们继续改进。 3. 快捷键二

在 ~/.vimrc 中加入如下内容:

set pastetoggle=

这样就可以把上面的 F10 和 F11 合并为一个快捷键来切换 paste 模式了。 还有更好的办法么?当然! 4. Vim 寄存器一

关于 Vim 寄存器的详细信息请执行命令 “:help registers” 查看。 对于“剪切板”这个概念,Linux 下有两个东西:一个叫做选择缓冲区(X11 selection buffer),另一个才是剪切板(clipboard)。鼠标或键盘选择内容时,内容实时进入缓冲区,然后按中键将内容插入光标所在位置;鼠标或键盘选择内容后,按Ctrl-C(或Shift-Ctrl-C)或菜单中的“复制”,内容进入剪切板,然后按Ctrl-V(或Shift-Ctrl-V)或菜单中的“粘帖”将内容插入光标所在位置。关于这两者的详细信息,请自行搜索,此处不深究。 Vim 的寄存器 “* 对应系统缓冲区, 寄存器 “+ 对应系统剪切板。 如果你是把选择的内容(在系统缓冲区中)粘帖到 Vim ,只需在普通模式下执行如下命令:

"*p

对应的,如果你是把复制的内容(在系统剪切板中)粘帖到 Vim,只需在普通模式下执行如下命令:

"+p

怎么样?格式没有错乱了吧? 这样虽然简便很多了,但还是需要输入三个字母,并且这三个字母都得使用右手小拇指输入,甚至其中的两个字母还需要 shift 键配合! 还有更简单的办法。 5. Vim 寄存器二

在 ~/.vimrc 里加入如下内容:

set clipboard=unnamed

然后只需在普通模式下按 p 即可把系统缓冲区中的内容粘帖到 Vim 中,就像粘帖用 yy 命令得到的内容一样,并且格式不错乱。 如果把上面的一行换成如下内容:

set clipboard=unnamedplus

普通模式下按 p 粘帖的内容就是系统剪切板里的内容了。 这已经足够简便了。在搜索此问题的过程中,我还看到了另外一些办法。 6. 快捷键三

在 ~/.vimrc 里加入如下内容:

inoremap  :setl pastegi+:setl nopastegi

这样,你就可以在插入模式下使用 Shift-Insert 快捷键在粘帖系统剪贴板中的内容了。 把上面一行替换成如下内容同样可以达到相同的效果:

inoremap  "+p`]a

注意,这可是在插入模式下哦!比起第 5 节提到的方法,这种方法省去了一次 按键进入普通模式和一次 i 按键重新回到插入模式。 至此,你需要做的只是: a. 复制你想要的内容;
b. 回到 Vim 并按 Shift-Insert 快捷键;
c. 继续编辑其他内容。

参考

相关内容

【售后科普】ubuntu系...
一、问题描述 在Ubuntu系统中,用户成功安装显卡驱动后,通过命...
2025-04-27 10:16:52
在CentOS上实现远程文...
CentOS系统中远程拷贝的实用技巧与操作指南 在服务器管理与运维...
2025-03-26 08:49:54
CentOS系统磁盘复制全...
在服务器维护和数据迁移过程中,磁盘复制是CentOS系统管理员的核...
2025-03-10 09:11:04
AI 与不求甚解的新手开发...
作者丨 Namanyay 译者丨明知山 策划丨 Tina 关...
2025-03-03 16:19:08
14岁出道编程天才:新一代...
新智元报道 编辑:好困 犀牛 【新智元导读】一篇题为「New J...
2025-02-23 10:21:02
复旦大学研究:AI 跨越关...
IT之家 2 月 11 日消息,据最新研究显示,人工智能(AI)可...
2025-02-11 10:17:19

热门资讯

使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...
Bazzite:专为 Stea... 为 Linux 桌面或者 Steam Deck 做好游戏准备,听起来都很刺激!对于一个专为 Linu...