在Vim中我可以:set wrapscan
这样,当我做一个增量搜索,光标跳到第一个匹配的第一个匹配是否高于或低于该光标.
在Emacs的,如果我开始通过搜索C-s
,搜索失败说做不到我的搜索,如果第一场比赛光标上面.如果我C-s
再次点击它然后包装搜索,说Wrapped I-search.默认情况下如何在Vim中包装和跳转光标,而不必C-s
第二次?
lin*_*0ff 16
最简单的方法是使用以下defadvice:
(defadvice isearch-repeat (after isearch-no-fail activate)
(unless isearch-success
(ad-disable-advice 'isearch-repeat 'after 'isearch-no-fail)
(ad-activate 'isearch-repeat)
(isearch-repeat (if isearch-forward 'forward))
(ad-enable-advice 'isearch-repeat 'after 'isearch-no-fail)
(ad-activate 'isearch-repeat)))
Run Code Online (Sandbox Code Playgroud)
当Isearch失败时,它会立即再次尝试包装.请注意,暂时禁用此defadvice以防止无匹配时的无限循环非常重要.
Jurta 的回答已经差不多了。这是想要的行为:
;; Prevents issue where you have to press backspace twice when
;; trying to remove the first character that fails a search
(define-key isearch-mode-map [remap isearch-delete-char] 'isearch-del-char)
(defadvice isearch-search (after isearch-no-fail activate)
(unless isearch-success
(ad-disable-advice 'isearch-search 'after 'isearch-no-fail)
(ad-activate 'isearch-search)
(isearch-repeat (if isearch-forward 'forward))
(ad-enable-advice 'isearch-search 'after 'isearch-no-fail)
(ad-activate 'isearch-search)))
Run Code Online (Sandbox Code Playgroud)