emacs - 像 Sublime Text 中那样调换两个单词

标签 emacs sublimetext2 emacs24

我正在观看 Django 在线类(class),老师在 Sublime Text 中用列表的两个值做了一个很好的技巧,它将每个值转置为另一个值的位置,例如:

list = ("foo", "bar", "hello")

用鼠标标记foobar,然后进行转置,得到以下结果:

list = ("bar", "foo", "hello")

如何在 Emacs 中实现这一点?

最佳答案

正如@artscan所说,您正在寻找的命令是transpose-words 。它绑定(bind)到M-t默认情况下。它无需区域即可工作(即,您不必“标记”任何内容即可工作)。转置foobar , 点可以位于以下任意字符上:

oo", "b

在它们之前放置点将转置 listfoo ;将其放在之后将转置 barhello .

用于转置其他文本单元的相关命令及其默认键绑定(bind)(如果有):

  • transpose-chars (C-t)

  • transpose-lines (C-x C-t)

  • transpose-paragraphs

  • transpose-sentences

  • transpose-sexps (C-M-t)

超越内置函数

如果您想通过一次按键来调换不相邻的单词(例如 foohello ),您可以定义 keyboard macro或自定义命令并将其绑定(bind)到按键:

(defun hop-one-transpose ()
  "Transpose words that are separated by a single word."
  (interactive)
  (transpose-words 2)
  (backward-word 3)
  (forward-char)
  (transpose-words 1))

(global-set-key (kbd "C-x M-t") 'hop-one-transpose)
<小时/>

附录:让 Emacs 帮助您发现 Emacs

如果您想知道 Emacs 是否有用于某种类型操作的命令,请尝试使用 command-apropos找到它:

C-h a <action> RET

关于emacs - 像 Sublime Text 中那样调换两个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23669155/

相关文章:

emacs - Rscript 有 Emacs 模式吗?

javascript - 正则表达式排除词

javascript - 如何使用 sublime text 2 进行 grunt-shopify

emacs - 为什么使用命令 M-x jedi :install-server in Emacs doesn't reply

emacs - 图阿雷格模式找不到 ocaml?

search - 如何将 current-prefix-arg 传递给此命令

C++ 在 Sublime Text 2 中编译和运行

tabs - emacs 修复 python 的制表符缩进

emacs - 在 emacs 中运行 emacs

emacs - 在 emacs 中,如何引用物理屏幕?