Normal state 下对中文进行编辑的最佳实践是什么,求推荐!!

不一定要用分词,推荐 evil-find-char-pinyin,我用的爱不释手,中文标点也是支持的哦!

可参考我之前的提问

2 个赞

用起来不错,感谢推荐。

但是用这个包之后,貌似 evil-snipe 原来具有的高亮搜索结果的功能被屏蔽了?

我没用过 evil-snipe, 不太了解,是用来搜索什么的?好用吗

evil-snipe 会将所有符合条件的字符都高亮,另外用 s 来匹配两个字符(s在 Evil 中默认是替换当前字符),这样大大提高了移动效率。(虽然我不用 s)

normal-state下f/t重复字母多的时候不好用,evil-snipe按连续的两个字母搜索移动,有时比f/t好用:GitHub - hlissner/evil-snipe: 2-char searching ala vim-sneak & vim-seek, for evil-mode 它和evil-multiedit, doom emacs是同一个作者。

2s 不能用了,spacemacs 中的 evil-snipe 功能修复了,现在 s 被占用了。有什么替代方案吗?先v选中再c太蛋疼了。

  (evil-snipe-override-mode 1)
;; 恢复evil的s/S,要用evil-define-key, define-key不行,a bit tricky,一个issue里抄来的
  (with-eval-after-load 'evil-snipe
    (evil-define-key* '(normal) evil-snipe-mode-map
                      "s" #'evil-substitute
                      "S" #'evil-change-whole-line)
    (define-key evil-normal-state-map "s" #'evil-substitute)
    (define-key evil-normal-state-map "S" #'evil-change-whole-line)
    )
;; 只用;来repeat,禁用移动后立即按f/t来repeat
(setq evil-snipe-repeat-keys nil)
;; override-mode之后如果要给evil-repeat绑其他键位要用evil-snipe的对应函数
  (define-key evil-normal-state-map (kbd "DEL") 'evil-snipe-repeat-reverse)
;; 不用s/S那用gs之类的吧
  (evil-define-key 'normal evil-snipe-mode-map (kbd "g s") #'evil-snipe-s)
  (evil-define-key 'normal evil-snipe-mode-map (kbd "g S") #'evil-snipe-S)
  (evil-define-key 'normal evil-snipe-mode-map (kbd "g t") #'evil-snipe-x)
  (evil-define-key 'normal evil-snipe-mode-map (kbd "g T") #'evil-snipe-X)
  (evil-define-key 'visual evil-snipe-mode-map "z" #'evil-snipe-s)
  (evil-define-key 'visual evil-snipe-mode-map "Z" #'evil-snipe-S)
  (evil-define-key 'visual evil-snipe-mode-map "x" #'evil-snipe-x)
  (evil-define-key 'visual evil-snipe-mode-map "X" #'evil-snipe-X)

另外vlc可以换成c2l,更vimmy一点 :beers:

1 个赞

怎么基础的单键 s 它也要占用?丧心病狂。

v2sv2cvlc 都能凑活用,多按一个键而已。

虽然只是多按一个键,按惯了s,那就是每次按了s发现不对,取消了再按c,多了好几个键。。

占用s大概是因为作者觉得s没什么用,有c就够了,不过好像我们都不觉得是这样。。

我也更习惯 s 呐。话说作者是不是太武断了。

你是在说 doom (evil-snipe)的作者和 spacemacs 的作者吗?

哈哈哈,大牛可能都是这么武断的。

我的习惯已经被他们改写 n 次了

除了高亮之外,没看出 evil-snipef/t 方便在哪里,占用了 s 键,还多按一个回车键(我操作不对吗?):

  • f/t

    fa 直接就跳到第一个 a,然后按 ;/, 前进/后退

  • evil-snipe

    sa 再按回车,才到第一个 a, 然后按 ;/, 前进/后退

不过他们有一点说对了:easymotion 操作带来的不连续感太强烈了。

于是……我就把 easymotion 插件卸载了 :roll_eyes:

当然我也没用他们说的什么 snipe 插件 :roll_eyes:

正确用法应该是 sab 跳到第一个 ab 开头的位置(不一定是词的开头,中间也可以),比如

This is a test bbccdd[a]bdddd

方括号那里(没法反白,只能这样说明一下)。这样可以极大地减少跳转的次数。

1 个赞

不如直接 /ab<return> 拉倒,还不需要额外插件。想输几个字母就输入几个,还能跨窗口高亮。

昨天尝试的时候,想输入第三个字母 narrow down,然而……并不能。差点要憋出内伤。

是不太容易适应,也许适应了会好些吧

莫名脑补出了大牛们淫笑着揉掐小白脸的情景……:rofl:

移动光标自动取消高亮的特性可以学习下,剩下的就不参与了。

其实你把中文也考虑进去的话,这种方式的优势就显示出来了

比如

image

按了 sky 后位置变到:

image

很强大

和拼音选取结合嘛?这个有点厉害了。

中文和英文确实面临的问题不太一样。

哈哈,确实。/ab<return> 之后 n/N 也很方便。如果不回车,可以直接输入到完全匹配为止。还可以回来重新编辑搜索关键字,支持正则。。。好处太多了。

倒是可以考虑一下怎么扩展内置的功能,加入对中文拼音的支持。