在vim中,如何在上次关闭的同一行号上打开文件?

135 vim

我想配置vim在我离开的同一个地方打开一个文件.

mar*_*cog 188

从Ubuntu的/etc/vim/vimrc文件中,这个例子被注释掉了:

" 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
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,则常见问题是没有~/.viminfo文件的所有权.如果是这种情况,那么运行:

sudo chown user:group ~/.viminfo
Run Code Online (Sandbox Code Playgroud)

用户是您的用户username,group通常与您的用户名相同.

  • 如果倒数第二行中的单引号改为反引号,它将跳转到实际的光标位置,而不仅仅是该行的开头:`\ | exe"正常!g \`\""| endif` (17认同)
  • autocmd直接来自vim doc.请参阅:help last-position-jump (9认同)
  • `chown`部分为我解决了这个问题.帽子! (4认同)
  • 如果您不想编辑 `/etc/vim/vimrc` 或 `/etc/vimrc` (在我的例子中是 Arch Linux),您也可以将其添加到您的 `~/.vimrc` 中,并且将以相同的方式工作(我的意思是,我更喜欢在用户端进行该配置,而不是在系统范围内)。 (4认同)
  • 最后有人指出我的.viminfo由于某种原因归root所有!这需要在我读过的其他100篇文档中. (2认同)
  • 只想为`chown user~/.viminfo`添加+1.我一直在努力解决这个问题一小时,你刚刚结束了我的一天. (2认同)
  • 嘿@jfernandz,你的评论解决了我的问题!我正在编辑 `~/.viminfo` 但它不起作用。将这几行添加到`~/.vimrc`中后,终于解决了问题!非常感谢! (2认同)

syk*_*ora 44

如果你不介意简化交易自动化,只需按开键'"(撇号,然后双引号)打开文件,你就会跳到原来的位置.这基本上是@ marcog的答案.


Oli*_*Oli 21

  :h views-sessions
Run Code Online (Sandbox Code Playgroud)

你可以把它放在你的.vimrc中:

  au BufWinLeave * mkview
  au BufWinEnter * silent loadview
Run Code Online (Sandbox Code Playgroud)

视图将放在$ HOME/.vim/view中.您可能需要创建这些目录.


Mat*_*Aff 10

您可以在不使用指定文件名的情况下启动vim

vim 
Run Code Online (Sandbox Code Playgroud)

接下来,按两次Ctrl + O移至您处理的任何文件中的最后一个位置。


Gre*_*che 8

有一个名为vim-lastplace的插件(我是作者),它可以在您离开的地方打开您的文件。它通过忽略提交消息改进了上述建议,因为您通常正在编辑新消息并希望从提交消息文件的顶部开始。

  • 没有插件你能做的就是最好的。目标是 .vimrc:代码越小,越轻、越快 (2认同)

seh*_*ehe 6

如果启用了viminfo,则`0只需转到上次编辑的文件位置即可.你会发现这只是一个'去标记'命令;

实际上,您可以稍后执行'3去第三个上一个编辑的位置(可能在另一个文件中),然后`0再次返回到最后一个

看一下

 :marks
Run Code Online (Sandbox Code Playgroud)

看到记住的位置.另请注意,viminfo存储各种其他内容(如寄存器内容,每个文件的标记,命令和搜索历史记录).大多数人都有这个原因