vim
Tipps und Tricks zur Steigerung der Produktivität
Suche…
Syntax
- : Relative Nummer setzen
- :Nummer setzen
- : set nonumber /: set nonu
- : pwd
Bemerkungen
Diese automatische Nachladen geschieht nur, wenn Sie bearbeiten vimrc
in einer Version Vollversion von vim , die unterstützt autocmd
.
Schnelle "Wegwerf" -Makros
Fügen Sie dies zu Ihrem vimrc hinzu:
nnoremap Q @q
Um mit der Aufnahme des Makros "Wegwerfen" zu beginnen, verwenden Sie qq
. Um die Aufnahme zu beenden, drücken Sie q
(im Normalmodus für beide).
Um das aufgezeichnete Makro auszuführen, verwenden Sie Q
Dies ist nützlich für Makros, die Sie viele Male hintereinander wiederholen müssen, danach aber nicht mehr verwendet werden.
Verwenden der Funktion zum Vervollständigen des Pfads in Vim
Dies ist sehr üblich. Sie speichern einen Pfad zu einer Datei oder einem Ordner, Sie öffnen Vim und versuchen, das, was Sie gerade gespeichert haben, zu schreiben. Sie sind jedoch nicht zu 100% sicher, dass sie korrekt ist.
Wenn Sie die Funktion zum Vervollständigen des Pfads wünschen und eine Datei /home/ubuntu/my_folder/my_file
und eine andere Datei bearbeiten, die auf den Pfad der vorherigen Datei verweist:
Rufen Sie den Einfügemodus auf: Einfügen oder wie gewünscht. Als nächstes schreiben Sie /h
. Wenn sich der Cursor unter h
, drücken Sie Strg x und dann Strg f, damit der Editor ihn nach /home/
vervollständigt, da das Muster /h
eindeutig ist
Angenommen, Sie haben zwei Ordner in /home/ubuntu/
namens my_folder_1
my_folder_2
und Sie möchten den Pfad /home/ubuntu/my_folder_2
wie gewöhnlich:
Aktivieren Sie den Einfügemodus
Schreiben Sie /h
und drücken Sie Strg x und dann Strg f . Jetzt haben Sie /home/
Next und fügen Sie nach / home / hinzu und drücken Sie Strg x und dann Strg f . Jetzt haben Sie /home/ubuntu/
weil dieser Pfad eindeutig ist. Nun schreibe my
after /home/ubuntu/
und drücke Strg x und dann Strg f . Der Editor vervollständigt Ihr Wort bis my_folder_
und der Verzeichnisbaum wird my_folder_
Verwenden Sie die Pfeiltasten, um den gewünschten auszuwählen.
Aktivieren Sie relative Zeilennummern
Um einige Textzeilen zu löschen, wenn Sie die genaue Anzahl der zu 10dd
Zeilen nicht kennen, versuchen Sie es mit 10dd
, 5dd
und 3dd
bis Sie alle Zeilen entfernen.
Relative Zeilennummern lösen dieses Problem. Angenommen, wir haben eine Datei, die Folgendes enthält:
sometimes, you see a block of
text. You want to remove
it but you
cannot directly get the
exact number of
lines to delete
so you try
10d , 5d
3d until
you
remove all the block.
Wechseln Sie in den NORMAL-Modus: Esc
Nun führe aus :set relativenumber
. Wenn Sie fertig sind, wird die Datei wie folgt angezeigt:
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 0 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
Dabei ist 0
die Zeilennummer für die aktuelle Zeile und sie zeigt auch die reale Zeilennummer vor der relativen Nummer. Sie müssen also nicht die Anzahl der Zeilen aus der aktuellen Zeile schätzen, um sie zu schneiden oder zu löschen, oder sie zu zählen einzeln.
Sie können jetzt Ihren üblichen Befehl wie 6dd
und sind sich der Anzahl der Zeilen sicher.
Sie können auch die Kurzform desselben Befehls verwenden :set rnu
, um relative Zahlen zu :set nornu
, und :set nornu
, um dieselben auszuschalten.
Wenn Sie auch :set number
oder :set number
bereits eingestellt haben, erhalten Sie die Zeilennummer der Zeile, in der sich der Cursor befindet.
3 sometimes, you see a block of 2 text. You want to remove 1 it but you 4 cannot directly get the 1 exact number of 2 lines to delete 3 so you try 4 10d , 5d 5 3d until 6 you 7 remove all the block.
Zeilennummern anzeigen
Um die Zeilennummern in der Standardansicht anzuzeigen, geben Sie ein
:set number
Zeilennummern ausblenden
:set nonumber
Es gibt auch eine Abkürzung für oben. nu
ist gleich number
.
:set nonu
Zum Ausblenden von Zeilennummern können wir auch verwenden
:set nu!
Zuordnungen zum Beenden des Einfügemodus
Für viele Vim-Benutzer ist der Esc zu schwer zu erreichen, und am Ende finden Sie ein anderes Mapping, das von der Home-Reihe aus leicht zu erreichen ist. Beachten Sie, dass Strg - [ auf einer englischen Tastatur mit Esc übereinstimmen kann und viel einfacher zu erreichen ist.
j k
inoremap jk <ESC>
Dieser ist wirklich leicht auszulösen; Zerschlage einfach deine ersten beiden Finger gleichzeitig in der Heimatreihe. Es ist auch schwer aus Versehen auszulösen, da "jk" in keinem englischen Wort vorkommt und wenn Sie sich im normalen Modus befinden, tut es nichts. Wenn Sie nicht zu viel "Blackjack" inoremap kj <ESC>
, sollten Sie auch die inoremap kj <ESC>
hinzufügen, damit Sie sich keine Gedanken über das Timing der beiden Schlüssel machen müssen.
Feststelltaste
Linux
Unter Linux können Sie mit xmodmap
dasselbe wie Esc mit Caps Lock tun. Fügen Sie dies in eine Datei ein:
!! No clear Lock
clear lock
!! make caps lock an escape key
keycode 0x42 = Escape
Führen Sie dann die xmodmap file
. Damit wird Caps Lock wieder mit Esc belegt .
Windows
Unter Windows können Sie SharpKey oder AutoHotkey verwenden .
Mac OS
Wenn Sie über macOS 10.12.1 oder höher verfügen, können Sie Caps Lock mit Escape in den Systemeinstellungen neu zuordnen. Wählen Sie Tastatur aus, wechseln Sie zur Registerkarte Tastatur und klicken Sie auf Modifikatortasten.
Wie Sie das Verzeichnis und / oder den Pfad der Datei, die Sie bearbeiten, kennen
Um den Pfad des Verzeichnisses zu kennen, in dem sich Ihre Datei befindet, können Sie Folgendes verwenden:
Esc zum Aufrufen des Befehlsmodus
:pwd
Dadurch wird der Pfad zum Verzeichnis am unteren Rand des Editors wie folgt gedruckt
I'm a ninja
~
~
~
~
~
/home/ubuntu/myfolder 1,5 All
Wenn Sie wissen möchten, welchen Dateinamen Sie relativ zum vim-Arbeitsverzeichnis bearbeiten, können Sie Folgendes verwenden:
Esc zum Aufrufen des Befehlsmodus CTRL G
I'm a ninja
~
~
~
~
~
"myfile"[Modified][New file] 1 line --100%-- 1,5 All
Um den absoluten Pfad zu der Datei zu erhalten, die Sie gerade bearbeiten, verwenden Sie
Esc zum Aufrufen des Befehlsmodus
1 und dann STRG G
I'm a ninja
~
~
~
~
~
"~/myfolder/myfile"[Modified][New file] 1 line --100%-- 1,5 All
Suche innerhalb eines Funktionsblocks
Für die Suche nach Text foo
innerhalb eines {}
Block umgibt den Cursor verwenden Sie den folgenden Befehl ( <ESC>
- Escape - Taste, <CR>
- Enter - Taste):
vi{<ESC>/\%Vfoo<CR>
Jetzt können Sie durch Drücken von n
und p
zwischen den Übereinstimmungen innerhalb des Blocks springen. Wenn Sie die hlsearch
Option aktiviert haben, werden alle Übereinstimmungen hervorgehoben. \%V
ist ein spezieller Suchmusterteil, der vim anweist, nur im visuell ausgewählten Bereich zu suchen. Sie können auch ein Mapping wie folgt erstellen:
:vnoremap g/ <ESC>/\%V
Danach wird der obige Befehl folgendermaßen gekürzt:
vi{g/foo<CR>
Ein weiterer nützlicher Trick besteht darin, alle Zeilen mit dem Muster zu drucken:
vi{
:'<,'>g/foo/#
Der Bereich '<,'>
wird automatisch eingefügt.
Siehe :help range
und :help :g
.
Gefundene Zeile kopieren, verschieben oder löschen
Viele Benutzer befinden sich in einer Situation, in der sie eine Zeile nur schnell kopieren, verschieben oder löschen und dorthin zurückkehren möchten, wo sie sich befanden.
Wenn Sie eine Zeile verschieben möchten, die das lot
unterhalb der aktuellen Zeile enthält, geben Sie normalerweise Folgendes ein:
/lot<Esc>dd<C-o>p
Um die Produktivität zu steigern, können Sie diese Abkürzung in folgenden Fällen verwenden:
" It's recommended to turn on incremental search when doing so
set incsearch
" copy the found line
cnoremap $t <CR>:t''<CR>
" move the found line
cnoremap $m <CR>:m''<CR>
" delete the found line
cnoremap $d <CR>:d<CR>``
Also eine Suche wie diese:
/lot$m
verschiebt die Zeile mit dem lot
unter die Zeile, auf der sich der Cursor befand, als Sie die Suche gestartet haben.
Schreiben Sie eine Datei, wenn Sie `sudo` vergessen haben, bevor Sie vim starten
Dieser Befehl speichert die geöffnete Datei mit Sudo-Rechten
:w !sudo tee % >/dev/null
Sie können auch w!!
eine Datei als root ausschreiben
:cnoremap w!! w !sudo tee % >/dev/null
Laden Sie vimrc beim Speichern automatisch neu
Um vimrc
beim Speichern automatisch neu zu laden, fügen Sie dem vimrc
Folgendes vimrc
:
if has('autocmd') " ignore this section if your vim does not support autocommands
augroup reload_vimrc
autocmd!
autocmd! BufWritePost $MYVIMRC,$MYGVIMRC nested source %
augroup END
endif
und dann zum letzten Mal:
:so $MYVIMRC
vimrc
Sie das nächste Mal Ihren vimrc
, wird er automatisch neu geladen.
nested
ist nützlich, wenn Sie vim-airline verwenden. Beim Laden der Airline werden einige automatische Befehle ausgelöst. Da Sie jedoch gerade einen automatischen Befehl ausführen, werden diese übersprungen. nested
ermöglicht das Auslösen verschachtelter Autobefehle und das ordnungsgemäße Laden der Fluggesellschaft.
Kommandozeilenabschluss
wildmenu
im wildmenu
, wildmenu
Vorschläge zur Fertigstellung der Befehlszeile wildmenu
werden sollen.
Führen Sie folgendes aus
set wildmenu
set wildmode=list:longest,full
Wenn Sie jetzt sagen :color
Tab ,
Du wirst kriegen
256-jungle Benokai BlackSea C64 CandyPaper Chasing_Logic ChocolateLiquor :color 0x7A69_dark