我选择使用 gvim 作为我的主要文本编辑器,但仍然希望它的行为更像我习惯的其他可视化编辑器。一方面是当我启用换行(set linebreak
)并使用箭头键<Up>
并<Down>
处于插入模式时,我想将光标移动到上一个/下一个屏幕行,而不是逻辑行。这可以使用映射来实现:
inoremap <Up> <C-O>gk
inoremap <Down> <C-O>gj
...一切都很好。
除了,在选择模式下。使用<S-Right>
时,<S-Left>
按预期工作,<S-Up>
并且<S-Down>
仍然按照逻辑线移动。在http://vim.wikia.com上,我发现了以下关于附加映射的建议:
noremap <S-Up> vgk
noremap <S-Down> vgj
inoremap <S-Up> <C-O>vgk
inoremap <S-Down> <C-O>vgj
后面的两个映射现在使当我通过在插入模式下按下开始<S-Down>
选择时,我可以从前一个位置到下一个屏幕行中的相同位置进行选择。但是当我已经有一个选择(已经处于选择模式)时,按下<S-Down>
会向下移动一行但会丢失选择。
我希望实现这一点,有必要为选择模式(snoremap
)提供特定的映射,但无法弄清楚如何做到这一点。
由于与 glts 讨论了选择模式是否无用,因此可能需要一些背景信息: 选择模式似乎是 vim 试图提供与 MS Windows、Mac OS 上的大多数其他可视化编辑器中的选择行为相近的东西,甚至 Linux,这反过来又受到IBM 的 CUA的启发。由于它仅与随附的键盘映射 ^C、^X、^V 一起使用,因此它应与mswin.vim
提供这些映射的键盘一起使用。我的问题是试图补充这些映射,以便选择模式也可以按预期工作于包装文本。