Bei Zeilennummer mit 1 Befehl in VIM einfügen


7

Gibt es eine Verknüpfung in vim für :20gefolgt von i, dh einen Befehl zum Einfügen in eine Zeilennummer?

vim 

Hier geht es darum, wie man mit einem bestimmten Werkzeug programmiert. es liegt im Bereich von SO.
Jonathan Leffler

Warum sollten Sie eine bestimmte Zeilennummer in einem Befehl hart codieren?

Antworten:


2

Sie können den nmapBefehl vim folgendermaßen verwenden:

:nmap ~! 20Gi

Und jedes Mal, wenn Sie Tastenanschläge drücken ~!(oder eine andere Tastenkombination auswählen können), bewegt sich der Cursor im Einfügemodus auf Zeile 20.


Beachten Sie, dass bei startoflinedeaktivierter Option die Cursorspalte Gerhalten bleibt und daher der iEinfügemodus nicht unbedingt für das erste nicht leere Zeichen der Zeile gestartet werden kann. In diesem speziellen Fall ist es besser, Ioder gIBefehl zu verwenden (abhängig davon, ob Sie eine Zeilennummer vor oder nach einem möglichen führenden Leerzeichen einfügen möchten).

1

Du kannst Tippen :20i<enter>Text you want to insert including newlines...<esc>


Wie unterscheidet sich das von dem, was sie versucht, nicht zu tun? Ich dachte, er suchte nach einer einfacheren Möglichkeit, Text in Zeile N ohne :NiZeile 20 einzufügen. Habe ich die Frage falsch interpretiert?
Matchew

Dies ist die gleiche Anzahl von Zeichen, die eingegeben werden, als ob Sie die Reihenfolge von 'Enter' und 'i' wie in der Frage umkehren.
Jonathan Leffler

1

Eine andere Möglichkeit, das zu tun, was Sie verlangen, ist der 20Ginormale Modus. es kann nicht schneller sein, aber es kann einfacher sein, sich zu erinnern. Wenn Sie es ohne Schicht machen möchten, versuchen Sie es20ggi

Wenn ich mehr darüber nachdenke, funktioniert dies in offensichtlichen Fällen nicht, aber ich mache gerne Folgendes

:set mouse=a
:nmap <2-LeftMouse> i

nmapDies bringt mich im normalen Modus (Hinweis ) zu dieser Zeile, und wenn ich doppelklicke, wird sie in die angegebene Zeile eingefügt. Die Nützlichkeit könnte trivial sein, aber wenn Sie es gewohnt sind, die Maus zu verwenden, hilft diese Karte.

http://www.viemu.com/vi-vim-cheat-sheet.gif

viemu.com hat ein halbwegs anständiges Cheatsheet, wenn Sie möchten


Dies ist tatsächlich ein Zeichen kürzer als das Original; gut gemacht.
Jonathan Leffler

0

Der Normalmodus iist im Befehlsmodus als verfügbar startinsert, akzeptiert jedoch keine Zeilennummer. Sie benötigen also zwei Befehle und eine Leiste, um sie zu trennen :20 | startinsert.


Das sieht nicht kürzer aus als das Original.
Jonathan Leffler

Nein, es ist nur der einzige Ansatz, der in Vimscript funktioniert, wenn das OP dies versucht.
Aristoteles Pagaltzis

In diesem Fall müssen Sie Ihre Antwort erweitern, um zu erklären, was Sie meinen, da mir nicht ganz klar ist, was Sie meinen. Ich bin noch nie auf Vimscript gestoßen, aber ich verwende Vim nur als aufgemotztes Vi, ohne die unglaublichen Komplexitäten, die es hinzugefügt hat, voll auszunutzen.
Jonathan Leffler
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.