禁止 vi 在打开文件时转到最后访问的行

禁止 vi 在打开文件时转到最后访问的行

我可以在文件中放入一些内容exrc,以防止vi转到上次打开文件时所在的最后一行,并默认将光标设置在顶部吗?

我认为它是特定于发行版的——它在 Solaris 上的行为不同,但在 RHEL 上却如此。

答案1

此功能作为自动命令实现。它是在 - 请参阅下面的代码片段中设置的/etc/vimrc。从那里删除它或添加命令以将该自动命令删除到您的 vimrc 文件中。 (我使用的是 Fedora - 在 rhel 上它应该非常相似)

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

如果您没有权限或不想更改,则在本例中,要在本地删除自动命令 /etc/vimrc的命令是。.vimrc:au! <group> <cmdname>:au! fedora BufReadPost

答案2

这更多的是评论而不是真正的答案。 Solaris 不是 Linux 发行版。它是Unix操作系统的一个版本。 RedHat 上的 vi 是一个 Linux 发行版 (Linux != Unix),它以符号方式链接到 vim。 Solaris vi 指的是 Bill Joy 创建的正版 vi 编辑器。所以我们在这里谈论的不是同一个编辑器。我不知道 vim 的行为如何,因为我在 OpenBSD 机器上使用 nvi,它是正版 vi 的另一个克隆。我建议你安装vi编辑器首先在您的 RedHat 机器上尝试重现该问题。键入vi filename.txt 应该打开文件并将提示符放在第一行的开头。键入vi + filename.txt应在最后一行打开文件。但是 vi 可以使用许多其他选项打开,例如vi +n filename.txt将您置于第 n 行的开头或vi +/regexp filename.txt将您置于包含正则表达式 (regexp) 第一次出现的行的开头,view filename.txt只读模式。请参阅手册页以获取完整列表。当你安装真正的版本时,不要忘记取消 vi 命令与 vim 的链接。

答案3

可能还有其他一些选项可用于此目的,但您可以使用以下解决方法

vim <filename> +1

+1表示,将光标移至第 1 行。

答案4

我遇到了相反的问题,结果来到这里。我想知道为什么我的光标会回到文件的顶部。我习惯于在缓冲区之间切换,每次都必须找到我的位置,这根本没有效率!

这里的答案都没有提到这个问题,所以我想我会添加我自己的答案,因为这会解决你的问题。我所要做的就是在第一行空格后添加 C 或 C++ 注释!我不知道这是一个功能还是一个错误,但是……在这种情况下,光标会回到顶部。

+---- see the space here?
|
v
 // first line of file

删除注释或空格解决了我的问题

相关内容