有这样的函数或elisp脚本吗?我想要在emacs中实现与vim中“vi”序列相同的功能。
有这样的函数或elisp脚本吗?我想要在emacs中实现与vim中“vi”序列相同的功能。
尝试按下键序列C-M-u C-M-SPC(即,同时按住Control和Meta键,依次按下u和Space),这将执行命令backward-up-sexp
和mark-sexp
。
我犯了一个错误:backward-up-sexp
在标准Emacs中不存在。我之所以写它,正是因为lkahtz的评论中提到的问题,即当光标位于双引号之间时,现有的函数backward-up-list
无法工作。
(defun backward-up-sexp (arg) (interactive "p") (let ((ppss (syntax-ppss))) (cond ((elt ppss 3) (goto-char (elt ppss 8)) (backward-up-sexp (1- arg))) ((backward-up-list arg)))))
(global-set-key [remap backward-up-list] 'backward-up-sexp)
Xah Lee撰写了一个名为xah-select-text-in-quote
的emacs-lisp函数,可以实现此功能。该函数可从他的网站上获得:
选择最近左右定界符之间的文本。 定界符包括以下字符:\"<>(){}[]“”‘’‹›«»「」『』【】〖〗《》〈〉〔〕()。 此命令无法正确处理嵌套括号。