文本编辑器支持片段内的片段,而不会将光标放在下一个位置

时间:2017-12-12 23:48:02

标签: text editor atom-editor code-snippets

我正在使用Atom编写LaTeX和C ++。当我使用例如片段时:

前缀'fr'扩展为'\ frac {$ 1} {$ 2} $ 3'意味着输入'fr TAB'会创建句子'/ frac {} {}'并将光标放在'$ 1'位置,按TAB键再次将光标移动到'$ 2',TAB再次将光标移动到位于'$ 3'位置的表达式之外。

但是,支持我有一个扩展为'\ sqrt($ 1)'的片段'sq'。这意味着键入's q TAB'会创建文本'\ sqrt()'并将光标放在'$ 1'的位置。

现在假设我想要结合两个片段。

'fr TAB'扩展为'\ frac {$ 1} {$ 2}',然后我输入'2'将数字'2'插入'$ 1'的位置,我按TAB跳转到'$ 2'位置'现在我要插入'sqrt(2)'。然后我输入'q TAB'并将其扩展为以下总表达式:

'\压裂{2} {SQRT($ 1)}'

光标在'$ 1'然后我输入'2',表达式现在是:

'\压裂{2} {SQRT(2)}'

现在,如果我再次按TAB,它将在2之后缩进,如下所示:

'\压裂{2} {SQRT(2 ...........)}'

我想要做的是转到'\ frac {$ 1} {$ 2} $ 3'的下一个位置,也就是说,在frac表达式之外定位'$ 3',这样我就可以继续输入而无需按右箭头,右箭头等

是否有任何文本编辑器可以执行此操作,即使它使用插件来实现它?这对我来说很棒。

2 个答案:

答案 0 :(得分:0)

他们只会在最后一个字段https://discuss.atom.io/t/recursive-snippets/44160

上进行递归

答案 1 :(得分:0)

如果有人遇到同样的问题。带有yasnippets的Emacs为我做了这件事。将此行添加到.emacs:

(setq yas-triggers-in-field t)

它支持嵌套代码段,您可以跳过当前代码段和过去代码段的占位符。