Vim 问题集合:退出、中文乱码、复制到系统剪贴板等高频坑
工具与效率415 阅读约 4 分钟
学 Vim 路上会反复被同几个问题绊住,多数和「模式」或「配置」有关。这篇把高频坑汇总成一份排错清单。
怎么退出 Vim(经典之问)
先 Esc 回到 Normal 模式,再:
:w 保存
:q 退出
:wq 或 :x 保存并退出
:q! 不保存强制退出
ZZ 保存并退出(Normal 模式直接按)
退不出去基本都是因为还在 Insert 模式——先按 Esc 是万能第一步。
粘贴代码变成阶梯状
从外部复制代码粘进 Vim,缩进层层叠加、糊成一团。原因是 Vim 把粘贴当成「逐字输入」触发了自动缩进。解法是先开 paste 模式:
:set paste
" 粘贴…
:set nopaste
或者一劳永逸:在 .vimrc 设个开关键 set pastetoggle=<F2>,粘贴前按 F2。(Neovim 用系统剪贴板寄存器粘贴则无此问题。)
复制到系统剪贴板(在 Vim 里复制,外面粘不到)
Vim 的 y 默认存进它自己的寄存器,和系统剪贴板是两回事。要互通需用 + 寄存器:
"+y 复制选中内容到系统剪贴板
"+p 从系统剪贴板粘贴
前提是 Vim 编译时带了 +clipboard,检查:
vim --version | grep clipboard # 要看到 +clipboard 或 +xterm_clipboard
macOS 自带 vim 常是 -clipboard,brew install vim 装的带剪贴板支持。想让 y 直接走系统剪贴板可设 set clipboard=unnamedplus。
中文乱码
文件里中文显示成乱码,多为编码设置问题。在 .vimrc 设好编码:
set encoding=utf-8
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
fileencodings 让 Vim 按列表顺序尝试识别文件编码,能兼容老的 GBK 文件。
退格键 / 方向键失灵
- Backspace 删不动:
set backspace=indent,eol,start,允许退格删除缩进、换行和插入前的字符。 - 方向键在 Insert 里乱跳成 ABCD:老式终端兼容问题,
set nocompatible(关闭 vi 兼容模式)通常能解决;当然更建议练hjkl戒掉方向键。
搜索高亮关不掉
搜索后整屏高亮很烦:
:noh 临时关掉当前高亮(nohlsearch)
可映射到一个顺手的键,搜完一键清。
小结
Vim 的高频坑大多有固定解:退不出先 Esc 再 :wq;粘贴变形用 :set paste;跨系统复制用 "+y/"+p 并确认 +clipboard;中文乱码配 encoding/fileencodings;退格失灵设 backspace。把这些写进 .vimrc,新手期的卡点基本一次性扫平。
相关文章
评论 (3)
L
Leo
实操跟下来一次过,赞
北
刚好工作里要用,太及时了
A
Aria
学到了,谢谢补充





