【发布时间】:2019-02-12 15:42:08
【问题描述】:
当多选游标处于活动状态时,有没有办法访问游标的索引?
例子:
假设我有以下文本,有 5 个光标
lo|rem
ip|sum
do|lor
si|t
am|et
通过访问游标的索引,我可以很容易地把它变成
lo1rem
ip2sum
do3lor
si4t
am5et
【问题讨论】:
标签: jetbrains-ide
当多选游标处于活动状态时,有没有办法访问游标的索引?
例子:
假设我有以下文本,有 5 个光标
lo|rem
ip|sum
do|lor
si|t
am|et
通过访问游标的索引,我可以很容易地把它变成
lo1rem
ip2sum
do3lor
si4t
am5et
【问题讨论】:
标签: jetbrains-ide
您可以通过简单地从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++;
}
});
}
}
结果:
【讨论】: