是否有 .vimrc 设置会导致 vim 在第一行打开文件?

是否有 .vimrc 设置会导致 vim 在第一行打开文件?

我希望 vim 在第 1 行自动打开文件,而不是上次离开的位置。我尝试将 gg 放入 .vimrc 中,但这不起作用。一定有某种方法可以做到这一点。

答案1

CentOS、RHEL 和 Fedora 提供了一个系统范围的 vimrc 文件,/etc/vimrc该文件设置了一个 autocmd,只要找到一个文件,该文件就会跳转到文件的最后一个标记。

安装的autocmd看起来像这样:

augroup redhat
autocmd!
" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\   exe "normal! g'\"" |
\ endif

(主要区别在于 augroup 的名称在 Fedora 上为“fedora”,在 RHEL 或 CentOS 上为“redhat”。)

虽然可以通过更改设置'viminfo'以阻止 Vim 在 vi​​minfo 文件上保存标记来解除此规则,但这会带来不幸的副作用,即让它完全停止保留该信息,而这在某些情况下很有用。

禁用此行为的更直接和精确的方法是删除该规则,您可以从用户的 vimrc 文件中执行此操作,因为它是在系统范围的配置之后获取的。

您可以使用以下命令在 CentOS 上删除该规则:

autocmd! redhat BufReadPost *

在 Fedora 上删除它:

autocmd! fedora BufReadPost *

您可以安全地将这两个规则添加到 vimrc 文件中,因为除非这些规则存在(可能来自系统范围的 vimrc 文件),否则它们不会执行任何操作。

这些命令将从 augroup 中删除该单个规则,而不是完全清除 augroup,因为 augroup 还会安装其他可能需要的不相关的自动命令,因此建议仅删除该一个特定规则。

答案2

我怀疑这与设置有关viminfo。从help viminfo

  1. vim 信息文件

如果退出 Vim 然后再次启动,通常会丢失很多信息。 viminfo 文件可用于记住该信息,使您能够从上次中断的地方继续。

viminfo 文件用于存储:
- 命令行历史记录。
- 搜索字符串历史记录。
- 输入行历史记录。
- 非空寄存器的内容。
- 多个文件的标记。
- 文件标记,指向文件中的位置。
- 最后的搜索/替换模式(对于“n”和“&”)。
- 缓冲区列表。
- 全局变量。

该条目的可能值为viminfo

"
" Tell vim to remember certain things when we exit
"   '20  :  marks will be remembered for up to 20 previously edited files
"   "100 :  will save up to 100 lines for each register
"   :20  :  up to 20 lines of command-line history will be remembered
"   %    :  saves and restores the buffer list
"   n... :  where to save the viminfo files
"
set viminfo='20,\"100,:20,%,n~/.viminfo

您可以通过以下方式查看您的viminfo设置:

:set viminfo?

您可以将其更新'#'0.从上面的例子来看:

set viminfo='0,\"100,:20,%,n~/.viminfo

相关内容