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. 继续编辑其他内容。

参考

相关内容

从Clawdbot到Mol...
昨天,火遍全网的 Clawdbot 因商标纠纷改名为 Moltbo...
2026-01-31 17:49:04
《财经》社评:国产AI芯片...
《财经》杂志发文指出,现在,英伟达在中国是一个“不明觉厉”的流行词...
2026-01-04 20:17:39
打造全国可复制育人样本 无...
“人工智能教育”在当前是个热词,但是如何把热词变成可操作的现实,如...
2025-12-08 09:16:02
东莞一对夫妻长“复制粘贴脸...
“谁是老公?谁是老婆?”近日,广东东莞一对夫妻的短视频在社交平台走...
2025-10-11 10:43:45

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...