如何在Emacs中的引号,括号之间选择文本?

时间:2014-06-06 20:13:43

标签: emacs text-editor

在vim中,你可以通过vi",vi [,vi(...

例如,如果您有这样的一行:

x = "difference between vim and emacs"

并且光标位于这些引号之间的任何位置并且您点击了vi"然后该字符串将是可视的 地选择。

5 个答案:

答案 0 :(得分:15)

expand-region对此很方便。使用引号内的点调用er/expand-region将标记最近的单词,然后再次调用它将标记引号内的所有单词。 (第三次调用它会扩展该区域以包含引号。)

我已将其绑定到C-;

(global-set-key (kbd "C-;") 'er/expand-region)

使用此绑定,pressng C-; C-;将突出显示引号之间的文本。

答案 1 :(得分:5)

来自Emacs Documentation

  

几乎所有模式都支持“(,)”作为括号,大多数也支持   方括号“[,]”和大括号“{,}”。但是,你可以做   任何一对字符括号对,使用以下内容   命令:

(modify-syntax-entry ?^ "($")
(modify-syntax-entry ?$ ")^")

另外,请看一下这篇文章How to mark the text between the parentheses in Emacs?。根据这篇文章给出的关键组合

尝试按键序列C-M-u C-M-SPC(即,在按住ControlMeta键的同时,按顺序按uSpace,执行命令backward-up-sexpmark-sexp

答案 2 :(得分:3)

晚会,但您也可以使用Evil mode,它可以完成Vim仿真,包括您提到的动作命令。

答案 3 :(得分:1)

在工具包之上

https://launchpad.net/s-x-emacs-werkstatt/+download

提供以下键/命令:

(global-set-key [(super \))] 'ar-parentized-atpt)
(global-set-key [(super \])] 'ar-bracketed-atpt)
(global-set-key [(super \})] 'ar-braced-atpt)
(global-set-key [(super \")] 'ar-doublequoted-atpt)
(global-set-key [(super \')] 'ar-singlequoted-atpt)

这种方式有几个称为分隔符的字符将构成命令。

ar-delimited-atpt将返回由最近的分隔符找到的点周围的字符串。

一组功能更强大的命令允许重复使用这样的键

(global-set-key [(control c)(\")] 'ar-doublequote-or-copy-atpt)
(global-set-key [(control c)(\')] 'ar-singlequote-or-copy-atpt)
(global-set-key [(control c)(<)] 'ar-lesser-angle-or-copy-atpt)
(global-set-key [(control c)(>)] 'ar-greater-angle-or-copy-atpt)

这里是一个doctring例如:

ar-doublequote-or-copy-atpt is an interactive Lisp function in
`thing-at-point-utils.el'.

It is bound to C-c ".

(ar-doublequote-or-copy-atpt &optional NO-DELIMITERS)

If region is highlighted, provide THING at point with doublequote(s),
  otherwise copy doublequote(ed) at point.
  With C-u, copy doublequote(ed) without delimiters. 
  With negative argument kill doublequote(ed) at point. 

答案 4 :(得分:0)

使用库thingatpt+.elthing-cmds.el

你会发现thing-region这样的命令,它选择一个点作为区域的东西。由于string-contentslist-contents被定义为事物(在thingatpt+.el中),因此这些选择字符串/列表内容作为区域:

(thing-region "string-contents") ; Select the contents of the string at point.
(thing-region "list-contents")   ; Select the contents of the list at point.

或以互动方式:

M-x thing-region RET string-contents RET

其他相关命令包括:​​

  • C-M-U(又名C-M-S-u) - mark-enclosing-list:选择附上清单。重复以扩展列表级别。适用于任何平衡括号表达式(例如,向量):当前语法表定义为具有balance-delimiter语法。

  • mark-thing - 选择给定种类的连续事物(重复)。

  • next-visible-thing - 移动到给定类型的下一个可见事物(重复)。