如何在Emacs中的括号之间标记文本?

时间:2011-03-04 13:35:44

标签: emacs

任何此类函数或elisp脚本?我希望等效函数为vi“vim中的序列。

4 个答案:

答案 0 :(得分:23)

尝试按键序列 CMu CM-SPC (即,按住 Control Meta 键,按 u Space in),执行命令backward-up-sexpmark-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效果很好。