gpt4 book ai didi

vim - 如何修改 last-position-jump vimscript 以不为 git commit 消息执行此操作

转载 作者:行者123 更新时间:2023-12-04 00:45:01 26 4
gpt4 key购买 nike

为方便起见,这里是脚本:

" 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 指定为编辑器,作为涉及编辑文件的某些过程的一部分。

我们如何检测到这一点并修改我们的最后一个位置跳转脚本? Git 实际上有点特别,因为它使用 .git/COMMIT_EDITMSG文件在提交中保持不变,这就是发生这种情况的原因。对于临时文件,它不会出现在 Vim 以前没有见过的文件上。

这可能使任务几乎变得微不足道(通过检查当前文件 == COMMIT_EDITMSG ...)

但是,一个真正完美的答案是我们是否可以检测 Vim 是从命令行调用还是由脚本打开。有办法告诉吗?我知道 unix 程序可以确定它们是否在 term/pseudoterm 中运行,尽管它们最终会从终端接收输入。

最佳答案

如果您不想在各种异常(exception)情况下修改全局规则(如 FDinoff 的回答),您也可以通过将以下内容放入 ~/.vim/after/ftplugin/gitcommit.vim 来撤消跳转。 :

:autocmd BufWinEnter <buffer> normal! gg0

虽然我没有遇到上述命令的任何问题,即使在缓冲区切换上,更强大的版本使 autocmd 触发一次:
augroup DisableLastPositionJump
autocmd! BufWinEnter <buffer> execute 'normal! gg0' | autocmd! DisableLastPositionJump BufWinEnter <buffer>
augroup END

关于vim - 如何修改 last-position-jump vimscript 以不为 git commit 消息执行此操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16727923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com