Vim 使用哪个标记
我正在经历 这个练习要我在正常模式下对当前单词进行大写 我做到了:Vim 使用哪个标记,vim,Vim,我正在经历 这个练习要我在正常模式下对当前单词进行大写 我做到了: nnoremap <c-u> mmgUaw`m<esc> nnoremap mmgUaw`m 我用一个标记(m标记)来阻止光标移动 我不喜欢这个解决方案,因为一个纯粹的功能性改变最终会改变vim的全局状态(通过设置一个标记) 是否有更好的方法来实现这一点,或者是否有一个标记(或一组标记)只应由命令/映射使用,而不应以交互方式使用(因为命令/映射会更改它/它们)?Vim帮助中的使用了s寄存器本身,因此您
nnoremap <c-u> mmgUaw`m<esc>
nnoremap mmgUaw`m
我用一个标记(m标记)来阻止光标移动
我不喜欢这个解决方案,因为一个纯粹的功能性改变最终会改变vim的全局状态(通过设置一个标记)
是否有更好的方法来实现这一点,或者是否有一个标记(或一组标记)只应由命令/映射使用,而不应以交互方式使用(因为命令/映射会更改它/它们)?Vim帮助中的使用了s
寄存器本身,因此您的方法不一定是坏的(也就是说,如果映射只是供您自己使用,那么您可以选择一个不用于任何其他用途的寄存器)
话虽如此,这里的特殊backtick(`)寄存器可能更好,因为它是缓冲区的本地寄存器,用于存储最近的跳转点。这是我想到的最好的方法:
nnoremap <c-u> i<esc>guiw`^
nnoremap igiw`^
在插入模式下利用光标的最后一个位置。Mathew是正确的,
“
标记通常用于此类操作。但是,将光标移动到“更改”的开头是常见的行为例如,gUiw
,yiw
,>
,等等。因此保存光标位置实际上有点不同寻常。