【问题标题】:Get all text before cursor in VsCode editor在 VsCode 编辑器中获取光标前的所有文本
【发布时间】:2021-10-20 09:41:53
【问题描述】:

我正在为 VsCode 开发一个自动完成扩展,我想要光标之前的用户文件的所有文本。我知道我们可以使用以下方法获取文件中的所有文本:

var editor = vscode.window.activeTextEditor;
var text= editor.document.getText();

但是我很困惑如何获取光标的位置并获取它之前的文本?

【问题讨论】:

    标签: typescript visual-studio-code vscode-extensions


    【解决方案1】:
      const editor = vscode.window.activeTextEditor;
      const cursorPosition = editor.selection.active;  // a vscode.Position
    
      // for text on line up to cursor
      // const lineText = editor.document.lineAt(cursorPosition.line).text;
      // const textBeforeCursor = lineText.substring(0, cursorPosition.character);
    
      // for text in the file up to cursor
      const fileTextToCursor = editor.document.getText(new vscode.Range(0, 0, cursorPosition.line, cursorPosition.character));
    
    

    对于文件中直到光标处的文本:

    getText() 采用 vscode.Range 可以从光标位置构造。只需使用0,0作为起点/位置,光标位置作为终点。


    对于光标所在行的文本:

    您从选择中获取光标位置。该变量有一个line 属性,您可以使用它来获取该行的文本。

    然后一个字符串操作substring得到光标前的文字。 cursorPosition.character 返回行上光标所在列位置的数字。

    [如果你有多个游标,你将不得不修改它。此代码适用于文件中的主光标。这很容易改变——在所有选择中添加一个循环。]

    【讨论】:

    • 谢谢,但这只会给我一行文本。这意味着它为我提供了从行首到光标位置的文本。可以修改它以包含前面的行吗?
    • 是的,很容易,我会添加到答案中。这实际上更容易。
    • 谢谢,现在可以使用了 :)
    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    相关资源
    最近更新 更多