为方便起见,这是脚本:
" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
\| exe "normal! g'\"" | endif
endif
该功能非常出色,但不适用于某些将 Vim 作为编辑器调用的情况:例如,我经常编写两行 git commit 消息,所以下次提交时它会将我放在第二行,我必须对此进行调整.
类似地,许多其他系统允许您将 Vim 指定为编辑器,作为涉及编辑文件的某些过程的一部分。
我们如何检测到这一点并修改我们的 last-position-jump 脚本?Git 实际上有点特别,因为它使用的.git/COMMIT_EDITMSG
文件在提交时保持不变,这就是发生这种情况的原因。对于临时文件,它不会出现在 Vim 以前从未见过的文件上。
这可能使任务变得微不足道(通过检查当前文件是否 == COMMIT_EDITMSG
... 来增加脚本)
但是,一个非常完美的答案是我们是否可以检测到 Vim 是从命令行调用还是被脚本打开。有没有办法告诉?我知道 unix 程序可以确定它们是否以术语/伪术语运行,尽管它们最终都会从终端接收输入。