使用相同密码打开多个 vim 加密的文件

使用相同密码打开多个 vim 加密的文件

假设我在同一个文件夹中有三个文件,a.txtb.txtc.txt它们都使用相同的密码(例如“asdf”)加密(使用 Vim)。有没有办法只输入一次密码就可以打开这三个文件?

谢谢。

答案1

Vim 用于加密和解密文件的加密密码存储在key变量中,请参阅:help encryption。此变量通常位于 Vim 缓冲区中,因此 Vim 为每个打开或保存的加密文件使用唯一的密码。首次打开不同的加密文件时,Vim 将提示输入新密码。

要使密码全局化,请输入

:set key=asdf

在 Vim 中,asdf密码为。在明确地赋予变量一个这样的值后,Vim 将对使用或在同一 Vim 实例中key打开的后续加密文件使用相同的密码。:e:n

key可以在用于打开文件的 Vim 命令行上设置该变量

vim --cmd "set key=asdf" a.txt b.txt c.txt

谨防:这会将密码以明文形式记录到您的 shell 历史记录文件 (例如~/.bash_history) 中,并且只需使用 查看正在运行的进程列表,即可将密码记录到系统上的所有其他用户手中ps

使用 Vim 透明地加密文件的其他解决方案也是可行的,Vim wiki 提供了本页有关加密的提示,包括在打开和保存文件时根据文件扩展名自动执行 PGP 或 GnuPG。

答案2

在使用此 cmd 打开第一个文件之前输入密钥:

vim -c ":let &key=inputsecret('key=')|:bdel dummy" dummy a.txt b.txt c.txt 

编辑 1. 回答下面评论中的问题。如果您希望文件在选项卡中一起打开,例如 vim -p a.txt b.txt c.txt

 vim -c ":let &key=inputsecret('key=')|:tab all|:bdel dummy" dummy a.txt b.txt c.txt 

更多的选择:set viminfo= noswapfile bin cm=blowfish

需要一个虚拟文件dummy,因为输入对话框仅在第一个文件加载后出现,即使使用 --cmd 也是如此。在这种情况下,您必须输入一次键。

不要使用*--cmd="set key=asfd"*;因为其他用户可以通过 ps 命令看到进程参数,可能会记录在 syslog 中,也会保存在你的 bash_history 中。

相关内容