我的autocmd
中有以下.vimrc
:
autocmd FocusLost,BufLeave,BufWritePre *.py :exe "normal! ma" | :%s/\s\+$//e | :exe "normal `a"
此命令的目的是从我的缓冲区中删除所有尾随空格,同时将光标保持在当前位置。
问题是,当调用命令并选择一些文本时,文本将被ma
替换。如何修改我的autocmd
声明以便:
注意:我正在使用MacVim。
答案 0 :(得分:2)
您可以使用winsaveview()
保存光标位置(以及整个窗口“视图”)。可以使用winrestview()
恢复保存的位置(和视图)。
以下代码使用缓冲区局部变量b:spacestrip_view
来存储视图(而不是覆盖标记a
):
autocmd FocusLost,BufLeave,BufWrite *.py let b:spacestrip_view=winsaveview()|%s/\s\+$//e|call winrestview(b:spacestrip_view)