Wie erstelle ich in Sublime Text 2 eine Tastenbelegung, um den Cursor mehrere Zeilen nach oben oder unten zu bewegen?

7

Ich versuche die folgende Tastenbelegung, aber sie bewegt den Cursor jeweils nur eine Zeile nach oben. Ich möchte, dass 10 Zeilen gleichzeitig verschoben werden. Es scheint, dass der Parameter "Betrag" ignoriert wird.

{ "keys": ["alt+down"], "command": "move", "args": {"by": "lines", "forward": true, "amount": 10.0} },
{ "keys": ["alt+up"], "command": "move", "args": {"by": "lines", "forward": false, "amount": 10.0} }
Max
quelle

Antworten:

4

Sie können ein Plugin erstellen, das von einer Schlüsselbindung aufgerufen wird. Dieses Plugin kann dann die aktuelle Zeile sammeln und nach unten oder oben verschieben.

Dieser Beitrag in den offiziellen Sublime-Foren enthält ein Beispiel für das Hin- und Herbewegen von 10 Zeilen mit einem Plugin.

Niels van Reijmersdal
quelle
Scheint lächerlich, dass Sie ein Plugin dafür erstellen
müssten
1
sublimetext.com/forum Ich denke, Sie können hier Ideen und Funktionen einreichen jondavidjohn. Ich denke, das flexible Plugin-System ist eine der größten Stärken von sublime.
Niels van Reijmersdal
1

Ich hatte auch Erfolg mit dem Befehl "Mehrere Befehle" , um eine Befehlsverkettung in Bindungen zu erreichen.

Sie benötigen hierfür kein separates Plugin, müssen jedoch denselben Befehl ein wenig wiederholen. Hier ist ein Beispiel aus meiner Bindedatei.

{
    "keys": ["H"],
    "command": "run_multiple_commands",
    "args": {
        "commands": [
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
            {"command": "set_motion", "args": {
            "motion": "vi_move_by_characters_in_line",
            "motion_args": {"forward": false, "extend": true }}},
        ]
    },
    "context": [{"key": "setting.command_mode"}]
},

Sieht schrecklich aus, ich weiß, aber dies ist anscheinend die Standardmethode, um den Cursor 10 Zeilen zurückzubewegen.

Wenn es eine Möglichkeit gibt, herauszufinden, wie der Befehlsaufruf für die Eingabe von "10h" im Vintage-Modus lautet, sollte dies eleganter sein.

Steven Lu
quelle