当前位置:   article > 正文

IntelliJ Platform-Plugins-插入与获取字符串(Editor与Document)_idea获取editorwindow插入代码

idea获取editorwindow插入代码

偏移量

这是一个与行无关的概念,假设当前文件如下,并且本文所有示例代码均基于这个文件

I
like
TYC
  • 1
  • 2
  • 3

对面上面的文件,如果我想在like后面增加 wh两个字母,它应该变成下面这样子

I
like wh
TYC
  • 1
  • 2
  • 3

我们的Action应该如下写,注意方法insertString的第1个参数,此处为关键

import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.editor.*;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;


public class MyAction extends AnAction {
    @Override
    public void actionPerformed(@NotNull AnActionEvent e) {
        Editor editor = e.getData(PlatformDataKeys.EDITOR);
        Document document = editor.getDocument();
        Project project = editor.getProject();
        // 6表示like中e后面的位置,0表示该文件第1个位置,整个文件内容是一个字符序列
        Runnable runnable = () ->document.insertString(6, " wh");
        WriteCommandAction.runWriteCommandAction(project, runnable);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

相关API

往指定位置插入字符串插入字符串

上述示例已给出,注意需要new Runnable
  • 1

获取行号

// 位置6在文件第2行,所以lineNumber=1(0算第1行)
int lineNumber = document.getLineNumber(6);
  • 1
  • 2

获取指定行的起始偏移量

document.getLineStartOffset(行号);//通常配合上述getLineNumber一起用
  • 1

获取指定行的结束偏移量

document.getLineEndOffset(行号);//通常配合上述getLineNumber一起用
  • 1

获取指定行的内容

// 下面的代码是获取第2行(注意行索引从0开始)的内容
int lineStartOffset = document.getLineStartOffset(2);
int lineEndOffset = document.getLineEndOffset(2);
TextRange tr = new TextRange(lineStartOffset, lineEndOffset);
String text = document.getText(tr);
System.out.print(text);// 此处打印TYC
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/680698
推荐阅读
相关标签
  

闽ICP备14008679号