Vim中CTRL-O无法返回Netrw的解决方法咨询
让Netrw目录位置加入Vim跳转列表的解决方法
好问题!这确实是Netrw默认行为里一个容易让人困惑的点——Vim的跳转列表(:jumps)默认只记录光标位置的跳转操作(比如用G、gg、%这类移动命令,或是:jump命令),而像:E.、:Explore这类直接打开新缓冲区的命令,并不会自动把Netrw的位置添加到跳转列表里,所以你从Netrw打开b.txt后,Ctrl+O会直接跳过Netrw回到a.txt。
下面给你两种可行的解决办法:
方法一:用:jump .代替:E.打开Netrw
如果你不想改配置,可以每次打开当前目录的Netrw时,输入:jump .(或者更短的:j .)。这个命令会把Netrw的位置主动添加到跳转列表里,之后从Netrw打开b.txt,按Ctrl+O就能先回到Netrw,再按一次回到a.txt,完全符合你的预期。
方法二:配置自动命令,让Netrw自动加入跳转列表
如果你希望不管用什么方式打开Netrw,它都能自动被记录到跳转列表,可以在你的vimrc(或init.vim)中添加以下配置:
augroup netrw_add_to_jumps autocmd! " 当进入Netrw缓冲区时,自动将当前位置添加到跳转列表 autocmd BufEnter * if &filetype ==# 'netrw' | call addjump(line('.'), col('.')) | endif augroup END
添加并保存配置后,重启Vim或者执行:source %生效。之后不管你用:E.、:Explore还是其他方式打开Netrw,它的位置都会被自动记录到跳转列表里,Ctrl+O和Ctrl+I就能顺畅地在a.txt、Netrw、b.txt之间跳转了。
你可以执行:jumps命令验证,现在Netrw的位置已经出现在跳转列表里啦。
内容的提问来源于stack exchange,提问作者mzcarlos
相关产品推荐
相关产品推荐

