保持屏幕位置始终以光标为中心

时间:2019-08-02 16:02:13

标签: visual-studio-code vscode-extensions

我正在尝试编写VSCode的扩展名,其中编辑器屏幕始终位于光标的中心。还有其他扩展程序添加了命令以将屏幕居中显示在光标上,但是您必须按命令将其激活。

目前,我找到的唯一实现此方法的方法是重写cursorUp,cursorDown,enter,pageUp,pageDown-基本上可以上下移动光标的任何命令,然后将“ revealLine”命令与光标线位置,“ at”属性为“ center”。

有更好的方法吗?重新实现默认的编辑器命令似乎效率很低。

这是我目前拥有的:

"use strict";
import * as vscode from "vscode";

export function activate(context: vscode.ExtensionContext) {
    let disposable1 = vscode.commands.registerCommand("cursorUp",() => {
            centralizar();
            vscode.commands.executeCommand("cursorMove", {
                to: "up",
            });
        }
    );

    let disposable2 = vscode.commands.registerCommand("cursorDown",() => {
            centralizar();
            vscode.commands.executeCommand("cursorMove", {
                to: "down",
            });
        }
    );

    context.subscriptions.push(disposable1);
    context.subscriptions.push(disposable2);
}

function centralizar() {
    let currentLineNumber = vscode.window.activeTextEditor.selection.start.line;
    vscode.commands.executeCommand("revealLine", {
        lineNumber: currentLineNumber,
        at: "center"
    });
}

export function deactivate() {}

3 个答案:

答案 0 :(得分:0)

Scrolloff扩展启用了“ alwaysCenter”选项时,将实现此功能。它可以通过监听window.onDidChangeTextEditorSelection来工作,该光标在光标移动时会触发。

答案 1 :(得分:0)

也许您可以利用新的(v1.38)命令editor.cursorSurroundingLines。参见scrollOff release notes

scrollOff demo

它需要一个数字,但是如果您可以在编辑器窗口中获得可见行的数量,则将editor.cursorSurroundingLines设置为可能有效的适当中点。看来您不必监听滚动事件。但是如果调整了编辑器窗口的大小,则必须更新该值。

答案 2 :(得分:0)

转到文件>首选项>设置,然后在搜索栏上输入cursor。查找光标周围的线,该光标可能会使用默认设置设置为0。将其设置为1020或您要查看更改的任何行。

下面是一个例子。

enter image description here