在JetBrains的IDE中打印选择游标索引

Abd*_*UTI 7 jetbrains-ide

有多种选择游标处于活动状态时,有没有办法访问游标的索引?

示例:

说我有以下文字,有5个光标

lo|rem
ip|sum
do|lor
si|t
am|et
Run Code Online (Sandbox Code Playgroud)

通过访问游标的索引,我可以轻松地将其转换为

lo1rem
ip2sum
do3lor
si4t
am5et
Run Code Online (Sandbox Code Playgroud)

cod*_*ody 2

您可以使用插件来完成此操作,只需迭代每个插入符/光标getCaretModel().getAllCarets()并插入正在运行的索引即可。该getAllCarets()方法始终返回按视觉顺序排序的插入符号:

public class CaretIndexAction extends AnAction {
    public CaretIndexAction() {
        super("Insert Caret Index(es)");
    }

    public void actionPerformed(AnActionEvent event) {
        Editor editor = PlatformDataKeys.EDITOR.getData(event.getDataContext());
        Document doc = editor.getDocument();

        WriteCommandAction.runWriteCommandAction(event.getProject(), () -> {
            int i = 1;
            for (Caret c : editor.getCaretModel().getAllCarets()) {
                doc.replaceString(c.getSelectionStart(), c.getSelectionEnd(), String.valueOf(i));
                i++;
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述