![禁止 vi 在打开文件时转到最后访问的行](https://linux22.com/image/43997/%E7%A6%81%E6%AD%A2%20vi%20%E5%9C%A8%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6%E6%97%B6%E8%BD%AC%E5%88%B0%E6%9C%80%E5%90%8E%E8%AE%BF%E9%97%AE%E7%9A%84%E8%A1%8C.png)
我可以在文件中放入一些内容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
删除注释或空格解决了我的问题。