Vim:每次打开文件时如何执行此任务?

Vim:每次打开文件时如何执行此任务?

有一段时间,我的笔记本电脑上有一个 vim 配置,我的台式机上还有另一个,所以当我在两个配置之间编辑 Dropbox 上的文件时,我会遇到格式问题。

具体来说,我穿着ffs=mac,unix,dos一件和ffs=unix,dos另一件。

现在幸好设置已经修复!但仍有遗留问题(那些尚未打开、转换并使用新设置保存的文件)。

现在,有时当我从使用“mac”的 ff 保存文件的地方打开文件时,我会得到一堆^M

所以我这么做了:

e ++ff=mac
setlocal ff=unix
w

纠正该问题。

每次我打开文件时如何自动执行这三行程序?

或者更好的是,每次我打开一个具有非 unix 的 ff 的文件时,它如何自动执行此操作?

我已经在 Google 上搜索过 [每个缓冲区打开时的 vim 任务] 和 [每个文件打开时的 vim 宏],但没有看到任何有用的方法。

(我确信 vim 以其看似无穷的智慧可以解决这一问题,就像它似乎可以解决任何事一样(他们是如何想象并实现所有这些功能的?!)。)

答案1

我犹豫是否要自动修复此问题,但以下自动命令似乎可以完成这项工作。

autocmd BufRead * if line('$') == 1 && getline(1) =~# '\r' | edit ++ff=mac | w ++ff=unix | endif

它会检测仅包含一行且包含嵌入 CR 字符的文件,并自动执行转换。我可能还会添加一个:echomsg来通知用户。

答案2

不要尝试自动化您的解决方法以解决损坏的设置,请修复设置;即'fileformat'在所有平台上一致使用某个行结尾,并确保在每个系统上都能正确检测到它(通过将其包含在内'fileformats')!

对于 Vimscript 文件,规范格式应该是unix,因为它可以由 Windows 和 Unix(我想还有 Mac)上的 Vim 处理,而dos在 Unix 上进行采购时会导致错误。

相关内容