任何此类函数或elisp脚本?我希望等效函数为vi“vim中的序列。
答案 0 :(得分:23)
尝试按键序列 CMu CM-SPC (即,按住 Control 和 Meta 键,按 u 和 Space in),执行命令backward-up-sexp
和mark-sexp
。
我犯了一个错误:标准Emacs中不存在backward-up-sexp
。我写的正是因为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)
答案 1 :(得分:7)
expand-region(与C- =绑定)效果很好。
答案 2 :(得分:0)
Xah Lee有一个emacs-lisp函数,实现了这个名为xah-select-text-in-quote
的功能。 It is available from his website:
在最近的左右分隔符之间选择文本。 这里的分隔符包括以下字符:\“&lt;&gt;(){} []”“''<>«»「」「」【〖〗”“<>〔〕()。 此命令无法正确处理嵌套括号。
答案 3 :(得分:0)
使用Emacs键绑定M-m v
效果很好。