我正在观看 Django 在线类(class),老师在 Sublime Text 中用列表的两个值做了一个很好的技巧,它将每个值转置为另一个值的位置,例如:
list = ("foo", "bar", "hello")
用鼠标标记foo
和bar
,然后进行转置,得到以下结果:
list = ("bar", "foo", "hello")
如何在 Emacs 中实现这一点?
最佳答案
正如@artscan所说,您正在寻找的命令是transpose-words
。它绑定(bind)到M-t
默认情况下。它无需区域即可工作(即,您不必“标记”任何内容即可工作)。转置foo
和bar
, 点可以位于以下任意字符上:
oo", "b
在它们之前放置点将转置 list
和foo
;将其放在之后将转置 bar
和hello
.
用于转置其他文本单元的相关命令及其默认键绑定(bind)(如果有):
transpose-chars
(C-t)transpose-lines
(C-x C-t)transpose-paragraphs
transpose-sentences
transpose-sexps
(C-M-t)
超越内置函数
如果您想通过一次按键来调换不相邻的单词(例如 foo
和 hello
),您可以定义 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/