Vim:打开新的缓冲区更改文件

时间:2014-12-12 14:13:09

标签: vim autocommand

我认为我在Vim自动命令中观察到一种奇怪的行为,其中打开一个新缓冲区会改变过去命令的结果(!)。 这是一个简单的例子(VIM 7.3 2010年8月15日)。我刚刚创建了一个文件test,其中只包含行'磁盘版本',然后将此文件保存到磁盘。保持此文件test在Vim中打开,我将文本更改为" SWAP VERSION",而不保存:现在文件test具有关联的交换文件。

空案例:

我写了一个包含单个自动命令的.vimrc文件,而不是init.vim,在BufRead调用时键入文件的内容:

au BufRead * %p

然后,当我加载vim -u init.vim test并按 r 键接受交换恢复时,自动命令会打印出“SWAP VERSION”'如预期的那样。

奇怪的案例:

我通过以下方式更改了init.vim中的自动命令:

au BufRead * %p | new

相同的程序(vim -u init.vim test r )现在打印出“磁盘版本”'。换句话说,new命令在执行上一个命令时修改了缓冲区的内容。用无效new替换echo命令将返回" null"情况下。

是否有任何Vim向导知道这里到底发生了什么?

(编辑)上下文:

我正在尝试构建recover.vim的一个(非常简化的)版本。

  • 为什么不使用现有的插件recover.vim因为我尝试做的事情(可能)既简单又不同。另外,这个插件使用了很多shell转义,这在我的上下文中很糟糕。我很乐意牺牲功能来摆脱这些逃脱。
  • 我至少应该看看recover.vim的作用:可能。但是由于它的使用起来相当复杂,我认为从文档开始编写会更容易......(但是,我会对recover.vim)的旧github版本进行修改。
  • 我使用旧的Vim版本:我在这里别无选择(在此环境中不是管理员,甚至没有编译权限。)

0 个答案:

没有答案
相关问题