在等号(或其他)符号的两侧转置文本

时间:2015-08-17 21:48:08

标签: emacs emacs24

我有一堆表格

的文字
grid = par1.grid;
M3d = par1.M3d;
alpha = par1.alpha;
gamma = par1.gamma;

我希望转换每一行,所以等号右边的东西现在在等号的左边,反之亦然。所以上面的文字如下所示。

par1.grid = grid;
par1.M3d = M3d;
par1.alpha = alpha;
par1.gamma = gamma;

在emacs中有一种简单的方法吗?我已经想出了如何转换单词,但这看起来并不像我正在寻找的那样。

编辑:我处于matlab模式。

3 个答案:

答案 0 :(得分:2)

C-M-%(a.k.a。M-x query-replace-regexp)与正则表达式\(.*\) = \(.*\);和替换\2 = \1;一起使用。

答案 1 :(得分:1)

修改=的语法条目,使其不是符号构成符号或单词构成符号。假设.是一个符号consiteuent或一个单词成分而;不是,如在Emacs-Lisp模式中,你可以使用C-M-t(转置性别)与之前的点(或之后)=

例如,在Emacs-Lisp模式下,在评估此内容后,在C-M-t之前点=尝试:

(modify-syntax-entry ?= ".")

在任何模式下(假设至少那些字母具有单词构成语法):

 (modify-syntax-entry ?=  ".") ; `=' is punctuation
 (modify-syntax-entry ?\; ".") ; `;' is punctuation
 (modify-syntax-entry ?.  "_") ; `.' is a symbol char

答案 2 :(得分:1)

答案取决于您编辑的主要模式:如果您的主要模式使用SMIE进行缩进,那么C-M-t(带有=符号的点)应该可以解决问题。