我在下面写了这个,以便在tex模式中搜索下一个时段。它工作正常,除了试图让它在找到句点后向前移动一个字符。我不知道该怎么做但这是我的尝试。
(add-hook 'text-mode-hook (lambda ()
(local-set-key (kbd "s-p")
(lambda () (interactive) ((search-backward "." nil t) (forward-char))))))
最终解决方案我结合了ajk解决方案的功能。没有加钩,我无法让另一个工作。有人可能知道如何使第二个工作。以下内容完全有效并向后搜索上一期间,除非它当前处于某个时期。
(add-hook 'text-mode-hook
(lambda ()
(local-set-key (kbd "s-p")
(lambda ()
(interactive)
(if (looking-back "\.")
(backward-char))
(search-backward "." nil t)
(forward-char)))))
感谢您的帮助。
答案 0 :(得分:4)
您在分配给密钥的匿名函数中的最后两个函数调用周围有括号,导致Emacs Lisp认为您要调用名为(search-backward "." nil t)
的函数。尝试
(add-hook 'text-mode-hook
(lambda ()
(local-set-key (kbd "s-p")
(lambda ()
(interactive)
(search-backward "." nil t)
(forward-char)))))
我对此绑定的问题是它不可重复。如果再次运行它,它会找到您刚刚找到的相同时段。您可能想检查前一个字符是否为句点,如果是,请跳过它。此外,您可以使用define-key
将绑定显式添加到text-mode
键映射来简化它:
(define-key text-mode-map (kbd "s-p")
(lambda ()
(interactive)
(if (looking-back "\.")
(backward-char))
(search-backward "." nil t)
(forward-char)))