Vim默认加密极弱,必须显式启用blowfish2才安全;需确认版本≥7.4.401且支持+cryptv,安装完整版vim,编辑时先:setlocal cm=blowfish2再:X设密,解密则:setlocal key=后保存。

默认的 vim -x 加密几乎等于没加密,必须显式启用 blowfish2 才算真正可用。
确认 Vim 是否支持强加密
执行 vim --version | grep -i crypt,输出中必须含 +cryptv(不是 -cryptv);再运行 vim -c ":help 'cm'" -c q 查看帮助,确认文档里明确列出 blowfish2。Ubuntu 默认装的是 vim-tiny,不带加密支持,得先装完整版:sudo apt install vim 或 sudo yum install vim-enhanced。检查版本是否 ≥ 7.4.401:rpm -qa | grep vim-enhanced(CentOS/RHEL)或 vim --version | head -1(其他发行版)。
加密前必须设置 cryptmethod=blowfish2
仅用 vim -x config.yml 打开文件,Vim 会默认用 zip 方法加密——这是已知可被暴力破解的弱算法。正确做法是:
- 先用
vim config.yml打开未加密文件(或新建) - 按
Esc进入命令模式,输入:setlocal cm=blowfish2 - 再执行
:X,输入两次密码(不显示),然后:wq
注意::set cm=blowfish2 是全局设置,:setlocal cm=blowfish2 仅对当前缓冲区生效,更安全;如果跳过这步直接 :X,Vim 仍会用 zip,且不会警告你。
编辑已加密文件时,密码输错就变乱码,无法恢复
用 vim config.yml 打开后,若提示 Need encryption key for "config.yml",必须输对密码才能看到明文。输错或留空,内容就是一堆 VimCrypt~036... 类似字节流,这不是损坏,是正常解密失败表现。此时别乱按 :wq!,否则可能把乱码覆写进原文件。应立刻 :q! 退出,重新打开并重试。root 用户也无权绕过密码——这是 Vim 加密机制的设计,不是权限问题。
解密文件只需清空密码,但操作不可逆
已加密文件想变回明文,不能“导出解密版”,只能在 Vim 内清除密码:
- 正确输入密码打开文件
-
Esc后输入:setlocal key=(注意是key=,不是cm=) - 再
:wq保存——此时文件已无加密,cat 可直接查看
这个过程没有备份,一旦误操作(比如忘记先 :setlocal cm=blowfish2 就直接 :X),或者 Vim 崩溃时正在写入,加密头可能损坏,导致永远打不开。所以敏感配置建议配合 Git 加密仓库或专用密码管理器使用,Vim 加密只适合临时、低频、单机场景。


















