[Vim]恢复文件关闭之前光标的位置
来源:互联网 发布:linux通配符的使用 编辑:程序博客网 时间:2024/05/21 17:55
某些情况下,你不得不停下当前文件的编辑工作,退出Vim,处理其他的事情,然后重新打开Vim继续刚才的工作。我总是希望Vim打开某个文件的时候,光标停在上次关闭文件时所停留的位置。Vim的默认配置似乎也是这样的,但直到我添加了自己的~/.vimrc和各种插件、模板文件后,Vim的”记忆”似乎被抹去了。每次打开文件,光标总是在文件的第一个字节处闪烁。于是我只能使用’.或者`.使光标移动到最后修改过的地方,但是,你知道的,我的注意力并不是总在刚刚修改过的地方。通常,光标在哪里,我的瞳孔就朝向哪里。
这个问题折磨我好久了,我终于下决心要整治一下。我先把那些插件给禁掉,又把map的很多键也禁了,最后把自定义的.vimrc也清空了,但问题依旧……这让我很是无奈。
Google了半天,据说viminfo保存了文件的一些状态信息,包括光标信息。:h viminfo,得知’0保存了Vim上次退出时光标的位置信息。但’0还不是我想要的,因为它保存的是一个”全局”的位置信息。比如,我先打开foo.c,光标移动到非开头处,退出,再打开bar.c,移动到非开头处,退出,再打开foo.c,按下’0,Vim自动打开bar.c并跳到退出时的位置。
最后我决定开口求救。LinuxToy上的朋友帮我解决了这个问题。只需要vimrc里面加一个稍微复杂一点的autocmd就搞定了:
123
if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endifendif
刚才翻看了Vim的全局配置/etc/vim/vimrc,里面有被注释的这么几行:
12345
" Uncomment the following to have Vim jump to the last position when" reopening a file"if has("autocmd")" au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif"endif
见鬼了,这几行是被注释掉的,可为啥,我刚刚装好的Vim却会自动地定位光标呢?
更新
解释下上面的autocmd命令。首先,当打开任何文件时,首先判断上次退出该文件时光标所在行,如果不在第一行,那么执行exe命令,即:开头的命令,:normal! g'”命令是在normal模式下执行g'”,即将光标定位到上次退出文件时所在行。为了使光标准确定位至“某一行的某一列”,需要使用`来跳转至标记”,而不是’。最后,代码应该是,
123456
" Uncomment the following to have Vim jump to the last position when" reopening a fileif has("autocmd")au BufReadPost * if line("`\"") > 1 && line("`\"") <= line("$") | exe "normal! g`\"" | endif" for simplicity, " au BufReadPost * exe "normal! g`\"", is Okay.endif
- [Vim]恢复文件关闭之前光标的位置
- 让vim记住之前打开文件的光标位置
- 让vim记住之前打开文件的光标位置
- VIM 打开文件,光标定位到上次退出的位置
- vim 记录光标位置
- 如何在关闭vim文件后,屏幕上还显示之前文件的内容
- 设置vim打开文件光标指在上次退出位置
- vim自动打开跳到上次的光标位置
- vim自动打开跳到上次的光标位置
- Vim如何跳转到光标的上次位置
- vim自动打开跳到上次的光标位置
- vim自动打开跳到上次的光标位置
- listview保存并恢复之前位置的方法
- 鼠标光标的位置,
- 设置光标的位置
- 设置光标的位置
- 获取光标的位置
- EditText光标的位置
- MFC学习之路之UI --(5)美丽的很出名的换肤程序SlickSkins
- fiddler Android下https抓包全攻略
- 向微信公众号发送么个特地消息给么个人
- 批处理修改电源管理方案
- C/C++中static关键字及变量存储位置总结
- [Vim]恢复文件关闭之前光标的位置
- apache基础1
- MFC学习之路之UI --(6)在SlickSkins 基础上开发的一个很不错的浏览器
- Hibernate反向工程关于java.math.BigDecimal替换
- 2014下半年总结
- EDITOR NOTTOOBAD - UVa 10602 贪心
- 在解析XML文件的时候报出异常,应该有为伪属性名!!!
- C++ 常见崩溃问题分析
- 收藏的iOS博客