如何在读/写时自动在vim中转换已处理的文件?

时间:2018-07-06 20:57:06

标签: vim

想象一下我的老板疯了。他希望对我们所有的文件进行加密,因此他坚持要求所有文件都在磁盘上进行ROT-13处理。

但是,我仍然想像平常一样编辑它们,因此我希望vim在读取文件之后,并在提交给我进行编辑之前,先将文件ROT-13。当我保存文件时,我想先将ROT-13写入磁盘。

有没有办法做到这一点?在寻找类似情况时,我发现textutil.vim声称将.rtf.doc文件转换为纯文本,然后在保存时将其转换回...但是出于我的目的,这太过分了

(对于那些好奇的人,我的实际用例是在编辑源代码之前,我想按照自己喜欢的方式重新格式化间距和布局,然后在每次保存时重新格式化老板的方式。我有一个自定义生成的clang进行了重新格式化,但我不知道如何获取vim来运行它。)

有人提到“ g?”命令。这不是这个问题的重点。我知道如何转换文字;我不知道该怎么做而不必手动执行命令。关键是,我希望vim自动 转换文件 prior 给我,甚至看到一行,然后自动将其转换回我保存了它……可能是基于其文件扩展名。

1 个答案:

答案 0 :(得分:1)

好的,这是使所有文件保持rot13d的方式。你必须有一个很奇怪的老板。

augroup rot13
  autocmd!
  autocmd BufReadPost,BufWritePre,BufWritePost * normal ggg?G``
augroup END

BufWritePre应该做好将其写入磁盘的准备; BufWritePostBufReadPost应该撤消那些修改。