【发布时间】:2012-03-23 08:51:23
【问题描述】:
我在 vim 中使用了换行,但我希望 vim 表现得好像线条中有实际的中断(而不是屏幕渲染的“软中断”)。
我已将 j 映射到 gj 并将 k 映射到 gk 以进行导航。但是,行操作(例如 dd)仍然作用于整行,而不是“屏幕行”。有什么办法可以改变这种行为,使 'dd' 仅限于屏幕行?
【问题讨论】:
我在 vim 中使用了换行,但我希望 vim 表现得好像线条中有实际的中断(而不是屏幕渲染的“软中断”)。
我已将 j 映射到 gj 并将 k 映射到 gk 以进行导航。但是,行操作(例如 dd)仍然作用于整行,而不是“屏幕行”。有什么办法可以改变这种行为,使 'dd' 仅限于屏幕行?
【问题讨论】:
您可以创建键映射:
:nnoremap dd g0dg$
【讨论】:
我宁愿创建一个新的运算符,例如x in operator-pending 模式:
onoremap x :norm! g0vg$<cr>
xnoremap x g$og0o
使用第一个映射,dx 将删除一个屏幕行,yx 将拉出一个屏幕行(注意,它不会按行粘贴,而是按字符粘贴),cx 将删除一个屏幕行并开始插入模式等等。
使用第二个映射,视觉模式下的x 将扩展视觉选择的屏幕线条。
我不建议重新映射 dd,因为这可能会破坏插件(如果他们使用 :normal 而不是 :normal! 或者如果他们使用 :×××map 而不是 :×××noremap。
【讨论】: