因为我喜欢在插入模式下使用shift键和Shift来选择文本,所以我在.gvimrc
中添加了以下映射:
inoremap <S-Home> <C-O>vg0<C-G>
inoremap <S-End> <C-O>vg$<C-G>
虽然这在大多数情况下都能正常工作,但当光标位于一行的末尾时会出现问题。
在我使用<S-Home>
的情况下,该行的最后一个字符不包含在选择中:
补充一点,但不太重要的是,一行末尾的<S-End>
选择最后一个字符。
我该如何避免这种行为?我觉得这与vim的“选择模式”并没有特别的关系,但是vim通常会将行结尾视为与其他文本编辑器不同。
答案 0 :(得分:0)
感谢glts,这是解决方案:
inoremap <S-Home> <C-\><C-O>vg0<C-G>
inoremap <S-End> <C-\><C-O>vg$<C-G>
根据:h i_CTRL-\_CTRL-O
的帮助,CTRL-\ CTRL-O
是“像CTRL-O
但不移动光标”。它并没有真正解释为什么CTRL-O
会移动光标,但它似乎与光标“超出行尾”有关。我无法理解这意味着什么,但它有点支持我的怀疑,即vim通常将行结尾与其他文本编辑器区别开来。