在等号(或其他)符号的两侧转置文本
transpose text on two sides of an equals (or other) sign
我有一堆形式的文本
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 模式下。
修改=
的语法条目,使其不是符号成分或单词成分。假设 .
是一个符号成分或一个单词成分,而 ;
不是,就像在 Emacs-Lisp 模式中一样,那么您可以只使用 C-M-t
(转置 sexps)之前的点(或之后) =
.
例如,在 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
使用 C-M-%
(a.k.a.M-x
query-replace-regexp
) 与正则表达式 \(.*\) = \(.*\);
和替换 = ;
.
答案取决于您正在编辑的主要模式:如果您的主要模式使用 SMIE 进行缩进,那么 C-M-t
(在 = 符号上加上点)应该可以解决问题。
我有一堆形式的文本
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 模式下。
修改=
的语法条目,使其不是符号成分或单词成分。假设 .
是一个符号成分或一个单词成分,而 ;
不是,就像在 Emacs-Lisp 模式中一样,那么您可以只使用 C-M-t
(转置 sexps)之前的点(或之后) =
.
例如,在 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
使用 C-M-%
(a.k.a.M-x
query-replace-regexp
) 与正则表达式 \(.*\) = \(.*\);
和替换 = ;
.
答案取决于您正在编辑的主要模式:如果您的主要模式使用 SMIE 进行缩进,那么 C-M-t
(在 = 符号上加上点)应该可以解决问题。