Wie springe ich zum Puffer von ls?

7

Gibt es eine Möglichkeit, zu einem Puffer zu springen, indem Sie die Puffernummer direkt von :lseingeben?

Ich meine, warum sollte dieser Befehl von mir erwarten , dass ich nichts tue Press ENTER or type command to continue, wenn ich zum Beispiel 2drücke?

Offensichtlich werde ich kein Plugin installieren, mindestens ein kleines Skript in .vimrc.

Vielen Dank.

kAldown
quelle

Antworten:

10

Ohne etwas zu ändern, ist der schnellste Weg von dieser Eingabeaufforderung wahrscheinlich das Drücken von :b+ Nummer + Enter. Aber als kleine Abkürzung benutze ich (und viele andere Leute) Folgendes, um vom Normalmodus dorthin zu gelangen:

:nnoremap <leader>ls :ls<cr>:b<space>

Sie können durch <leader>lsjede nicht verwendete Tastenkombination im Normalmodus ersetzen . Nach dem Drücken der Tasten wird die Pufferliste angezeigt und Sie können die Nummer + eingeben, Enterohne diese Press ENTER...Eingabeaufforderung zu bearbeiten.

Update: OP möchte :lsinsgesamt überschreiben . Das kann man machen mit

:cnoremap ls ls<cr>:b<space>

Dies wird jedoch nicht empfohlen, da die Zuordnung überall dort erfolgt, wo "ls" in einen Befehl oder Suchbegriff eingegeben wird! (Danke an Peter Rincker für die Warnung .) Während Sie dies überwinden können, indem Sie Ctrl+ eingeben, Vbevor Sie irgendwo "ls" eingeben (z. B. um nach "Hügeln" zu suchen, die Sie tun müssten /hil^Vls), ist dies kaum praktisch. Wählen Sie besser eine Tastenkombination, die in Befehlen oder Suchbegriffen wahrscheinlich nicht vorkommt. In der Vim-Hilfe haben sie also ein Beispiel mit "_ls" :cnoremap _ls ....

B Schicht
quelle
Gute Lösung gedacht. Aber ist es möglich , native wickeln :lszu :ls<cr>:b<space>(von Ihrem Beispiel). Ich möchte eher überschreiben als neue Funktionen anhängen. Danke
kAldown
Klar ... siehe meine aktualisierte Antwort.
B-Schicht
Seien Sie vorsichtig mit cmap's, da sie in anderen Befehlszeilen- "Modi" wie "Suchen" erweitert werden können /.
Peter Rincker
@ PeterRincker Sie hatten Recht, jetzt kann ich nicht suchen :find utils, weil es ls enthält: D
kAldown
1
In der Vim-Hilfe wird empfohlen, Ctrl-Vvor der Eingabe eines der c-zugeordneten Zeichen zu tippen :find uti^Vls. Immer noch ein Schmerz, aber ich sehe noch keinen besseren Ansatz. Vielleicht können Sie stattdessen abbilden :lsxoder sich daran :lsqgewöhnen, dies stattdessen zu verwenden :ls. ("lsx" und "lsq" erscheinen wahrscheinlich nicht in realen Befehlen oder Suchen.)
B Layer
1

Sie können einen Workflow erhalten, der Ihren Wünschen entspricht, ohne vim überhaupt zu konfigurieren.

Sie können mit <C-^>( ctrl+ 6) zum n-ten Puffer springen .

Wenn Sie beim Anzeigen der Ausgabe von eine Ziffer eingeben ls, wird diese Ziffer gespeichert und kann an den nächsten Befehl übergeben werden.

Um die gefälschten Vim-Screenshots zu erstellen, habe ich die Schriftgröße erhöht, sodass ich nur wenige Zeilen sehen kann, und die folgenden Listenzeichen gesetzt.

execute("set listchars=eol:\xc2\xac,tab:>\\ ,trail:\xe2\x81\x9b,extends:>,precedes:<,space:\\ ") 

Also, wenn du es tust

$ mkdir -p /tmp/vim-example
$ cd /tmp/vim-example
$ vim ./a ./b

Dann sieht Ihr Bildschirm folgendermaßen aus:

¬                                 
~                                 
~                                 
~                                 
~                                 
~                                 
./a              0,0-1         All
"./a" [New File] 

Sie können die Dateien anzeigen, indem Sie auf drücken :ls<cr>.

:ls                               
  1 %a   "./a"                    
      line 1                      
  2      "./b"                    
      line 0                      
Press ENTER or type command to con
tinue  

Von dort aus , wenn Sie eingeben 2und dann <C-^>werden Sie auf den nächsten Puffer genommen werden.

¬                                 
~                                 
~                                 
~                                 
~                                 
~                                 
./b              0,0-1         All
"./b" [New File]  
Gregory Nisbet
quelle