如何作用于行尾以外的矩形?


16

这是Vim的文档必须说的:

虚拟编辑意味着可以将光标定位在没有实际字符的位置。这可以是制表符的一半,也可以是行的结尾。在可视模式下选择矩形和编辑表时很有用。

我最好希望将其实现为次要模式或内置设置。


您要选择矩形吗?如果是这种情况,则这是当前开发版本中的默认设置。
马拉巴巴

不,我想的更像是拉动/替换矩形。我确实使用了矩形标记模式,虽然这是一个不错的功能,但这不是我想要的。
保姆2014年

确实,对于拉动/替换矩形,它是矩形标记模式下现有功能的自然伴侣。不确定用户界面应该是什么。
Stefan 2014年

感谢您的答复,斯特凡。此功能在处理矩形时最有用,因此也许在矩形标记模式下,命令可以切换模式的虚拟编辑类型。现在,在矩形标记模式下,该点看起来像在虚拟编辑模式下:可以使用来移动到一行的结尾C-f。但是,当您在执行此操作后再拉矩形时,该矩形将显示在标记处而不是点处。如果它出现在这一点上,那就可以解决这个问题。
保姆2014年

Answers:


10

包中的extend-rectangle-to-end功能rectangle-utils是您想要的。它在melpa

它插入空格以使当前的矩形选择范围扩展到覆盖该区域中的最长线。

为了获得这种行为,我已经将其包含在init.el中。C-x r e在香草emacs中没有任何其他约束

(require 'rectangle-utils)
(global-set-key (kbd "C-x r e") 'extend-rectangle-to-end)

1
为了清楚起见,使用此软件包,请选择区域,然后依次选择do M-x extend-rectangle-to-endC-x r M-wor C-x r k
Kaushal Modi 2014年

18

另一个答案:使用M-x picture-mode。您可以通过制表符等杀死或复制矩形,将其发送到寄存器等。


3
使用此方法的一个优点是,您可以精确控制希望矩形选择的宽度。如果我的第1行的字符数为30个字符,而第2行的字符数为5个字符,则可以将矩形选择为宽度为15个字符,高度为2行的矩形。不能这样做,extend-rectangle-to-end因为矩形选择始终为30x2。
Kaushal Modi 2014年

1
picture-mode是古老而鲜为人知的。它具有其他鲜为人知的功能:exiting(C-c C-c)删除结尾的空格。
Drew

1
太棒了,德鲁!问题:有什么理由建议rectangle-minor-mode“包装”进去picture-mode?(建议,因为我在的来源中看不到任何钩子rectangle-minor-mode)。
rasmus

1
顺便说一下,这是我的建议。它不会(defun rectangle-mark-mode-wrapped-in-picture-mode (orig-fun &rest args) (if rectangle-mark-mode (picture-mode) (and (eq major-mode 'picture-mode) (picture-mode-exit t)))) (advice-add 'rectangle-mark-mode :around #'rectangle-mark-mode-wrapped-in-picture-mode)
去除
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.