我想在Evil中创建一个新的文本对象.例如,文本对象iw将仅选择包含连字符的字符串子集.我希望新的文本对象匹配任何非空格字符的单词.到目前为止我得到的是:
(evil-define-text-object evil-inner-space (count &optional beg end type)
"Select inner space."
:extend-selection nil
(evil-regexp-range count beg end type "[ \n]" " " t))
(define-key evil-inner-text-objects-map " " 'evil-inner-space)
Run Code Online (Sandbox Code Playgroud)
此代码无法正确匹配行尾的单词.由于\n,它适用于行开头的单词.
我尝试了很多不起作用的东西.对我来说麻烦的是,当某些东西不起作用时,我不知道它是由于错误的正则表达式还是由于邪恶正则表达式范围的限制.例如,使用\ s-报告错误,这似乎是Evil中的限制.
我想用一个猛拉的单个字符串替换一个矩形区域(而不是另一个矩形区域).
例如,拉动字符串"foobar",选择下表的数字字符并将字符串粘贴到矩形区域上.
poum 123 pam
poum 456 pam
poum 789 pam
Run Code Online (Sandbox Code Playgroud)
哪个会产生这个输出:
poum foobar pam
poum foobar pam
poum foobar pam
Run Code Online (Sandbox Code Playgroud)
BBedit有这个功能,我发现它非常方便.我发现用Vi执行此操作的唯一方法是将字符串拉入给定的寄存器(比如寄存器"a"),选择区域,删除它,使用重新选择它gv,最后使用 I ctrl - 粘贴字符串r a esc .
我正在寻找一种更简单的方法来做到这一点.例如,选择区域,粘贴字符串.它应该像将矩形区域粘贴到另一个矩形区域一样简单(此处描述的操作:Vim:如何选择矩形区域并进行复制/粘贴).