Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
lpi2:vim [2018/11/05 18:50] |
lpi2:vim [2022/09/28 14:25] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== vi überleben ====== | ||
+ | Für Debian/Ubuntu empfohlen: Das Paket ''vim'' installieren, welches eine komfortablere Version von ''vi'' enthält. Dann wird u.a. immer angezeigt, wenn sich der Editor im Einfüge-Modus befindet. | ||
+ | |||
+ | ^ Befehl ^ Funktion ^ | ||
+ | | ''i'' | Einfügemodus (**i**nsert) | | ||
+ | | ''<ESC>'' | Befehlsmodus | | ||
+ | | '':w'' | speichern (**w**rite) | | ||
+ | | '':q'' | beenden (**q**uit) | | ||
+ | | '':q!'' | beenden ohne speichern | | ||
+ | | '':wq'' | speichern und beenden | | ||
+ | |||
+ | | ''u'' | Rückgängig (**u**ndo) | | ||
+ | | ''Strg+r'' | undo Wiederherstellen (**r**edo) | | ||
+ | |||
+ | In älteren Vim-Versionen nützlich: | ||
+ | | ''J'' | hängt die nächste Zeile an das Ende der aktuellen Zeile an (**j**oin) | | ||
+ | |||
+ | ====== VIM lernen ====== | ||
+ | * mit einem Browser-Spiel: http://vim-adventures.com/ | ||
+ | * mit vimtutor: | ||
+ | |||
+ | vimtutor | ||
+ | |||
+ | ====== Grundlagen ====== | ||
+ | ===== Navigationsbefehle I ===== | ||
+ | {{:admin_grundlagen:adm-3a-hjkl-keyboard.jpg?200|}} | ||
+ | |||
+ | Aufbau: [Anzahl] Befehl | ||
+ | |||
+ | Beispiel: ''10w'' (10 Wörter weiter springen) | ||
+ | |||
+ | | ''w'' | ein Wort weiter (**w**ord) | | ||
+ | | ''b'' | ein Wort zurück (**b**ack) | | ||
+ | | ''e'' | zum nächsten Wortende (**e**nd)| | ||
+ | | ''0'' | zum Zeilenanfang | | ||
+ | | ''$'' | zum Zeilenende | | ||
+ | | ''gg'' | Dateianfang (**g**o) | | ||
+ | | ''10gg'' | Zeile 10 | | ||
+ | | ''G'' | letzte Zeile | | ||
+ | | ''/'' | Vorwärts suchen | | ||
+ | | ''?'' | Rückwärts suchen | | ||
+ | | ''n'' | Zum nächsten Treffer in gleicher Richtung springen (**n**ext)| | ||
+ | | ''N'' | Zum nächsten Treffer in entgegengesetzter Richtung springen | | ||
+ | |||
+ | ===== Änderungsbefehle I ===== | ||
+ | Aufbau: [''Anzahl''] ''Befehl'' ''Anwendungsbereich'' | ||
+ | |||
+ | ''Anzahl'' ist dabei optional. Es gibt an, wie oft der ''Befehl'' | ||
+ | ausgeführt werden soll. Mit ''Anwendungsbereich'' bezeichne ich Navigationsbefehle. Sie werden benutzt, um sich innerhalb | ||
+ | der Datei zu bewegen. Manche Befehle erwarten keinen Anwendungsbereich. | ||
+ | |||
+ | Beispiel: ''cwERSATZTEXT'' (Text bis zum nächster Wort durch ERSATZTEXT ersetzen) | ||
+ | |||
+ | ^ c… ^ ersetzen (**c**hange) ^ | ||
+ | | ''cw'' | Wort ersetzen (change word) | | ||
+ | | ''cc'' | Zeile ersetzen | | ||
+ | | ''C'' | bis zum Ende der Zeile ersetzen | | ||
+ | |||
+ | ^ ^ ^ | ||
+ | | . | letzten Befehl wiederholen | | ||
+ | |||
+ | ==== Anwendungsbeispiel: suchen und ersetzen I ==== | ||
+ | | / | suchen | | ||
+ | |.. Suchwort eingeben .. || | ||
+ | | ''cw'' | 1 Wort ersetzen | | ||
+ | |.. Ersatzwort eingeben ..|| | ||
+ | | ''<ESC>'' | Änderung beenden | | ||
+ | | ''n'' | zum nächsten Treffer springen | | ||
+ | | ''.'' | Ersetzung wiederholen | | ||
+ | |||
+ | ==== copy & paste ==== | ||
+ | ^ d… ^ ausschneiden (**d**elete) ^ | ||
+ | | ''dw'' | Wort ausschneiden (delete word) | | ||
+ | | ''dd'' | Zeile ausschneiden | | ||
+ | | ''D'' | bis zum Ende der Zeile ausschneiden | | ||
+ | ^ y… ^ kopieren (**y**ank) ^ | ||
+ | | ''yw'' | Wort kopieren | | ||
+ | | ''yy'' | Zeile kopieren | | ||
+ | | ''Y'' | Zeile kopieren | | ||
+ | | ''y$'' | bis zum Ende der Zeile kopieren | | ||
+ | ^ ^ einfügen (**p**aste)^ | ||
+ | | ''P'' | an aktueller Position einfügen | | ||
+ | | ''p'' | nach aktueller Position einfügen | | ||
+ | |||
+ | ===== Visueller Modus ===== | ||
+ | | ''v'' | markieren (visual) | | ||
+ | | ''V'' | markieren, zeilenweise | | ||
+ | | ''Strg+v'' | markieren, blockweise | | ||
+ | |||
+ | ==== Anwendungsbeispiel: suchen und ersetzen II ==== | ||
+ | | ''/'' | suchen | | ||
+ | |.. Suchwort eingeben .. || | ||
+ | | ''vec'' | 1 Wort ersetzen | | ||
+ | |.. Ersatzwort eingeben ..|| | ||
+ | | ''<ESC>'' | Änderung beenden | | ||
+ | | ''n'' | zum nächsten Treffer springen | | ||
+ | | ''.'' | Ersetzung wiederholen | | ||
+ | |||
+ | ==== Text Markieren ==== | ||
+ | | ''vip'' | aktuellen Absatz markieren | | ||
+ | | ''vit'' | Text innerhalb des aktuellen xml-Tags markieren | | ||
+ | | ''vi('' oder ''vib''| Text innerhalb der (Klammern) markieren | | ||
+ | | ''vi{'' oder ''viB''| Text innerhalb der {Klammern} markieren | | ||
+ | | ''vi['' | Text innerhalb der [Klammern] markieren | | ||
+ | | ''vi%%"%%'' | Text innerhalb der %%"Anführungszeichen"%% markieren | | ||
+ | | ''vi%%'%%'' | Text innerhalb der 'Anführungszeichen' markieren | | ||
+ | | ''vap'' | aktuellen Absatz inklusive Leerzeilen außenrum markieren | | ||
+ | | ''vat'' | Text um das aktuelle xml-Tag markieren | | ||
+ | | ''va('' oder ''vab''| Text inklusive der (Klammern) markieren | | ||
+ | | ''va{'' oder ''vaB''| Text inklusive der {Klammern} markieren | | ||
+ | | ''va['' | Text inklusive der [Klammern] markieren | | ||
+ | | ''va%%"%%'' | Text inklusive der %%"Anführungszeichen"%% markieren | | ||
+ | | ''va%%'%%'' | Text inklusive der 'Anführungszeichen' markieren | | ||
+ | Quelle: http://vimdoc.sourceforge.net/htmldoc/motion.html#object-select | ||
+ | |||
+ | ===== weitere Wege in den Einfügemodus ===== | ||
+ | | ''i'' | an der aktuellen Position| | ||
+ | | ''I'' | am Zeilen- bzw. Blockanfang | | ||
+ | | ''a'' | hinter der aktuellen Position| | ||
+ | | ''A'' | am Zeilen- bzw. Blockende | | ||
+ | | ''o'' | neue Zeile darunter einfügen| | ||
+ | | ''O'' | neue Zeile darüber einfügen| | ||
+ | |||
+ | ====== Beispiel Texte ====== | ||
+ | [[admin_grundlagen:vim beispiel texte]] zum Üben | ||
+ | |||
+ | ====== Suchen und Ersetzen III ====== | ||
+ | ^ Befehl ^ Funktion ^ | ||
+ | | '':%s/suchwort/ersatz/g'' | suchen und ersetzen (**s**ubstitute, **g**lobal) | | ||
+ | | '':g/^$/d'' | Alle Leerzeilen löschen | | ||
+ | |||
+ | ====== Eingabehilfen im Einfügemodus ====== | ||
+ | | ''Strg+n'' | Wort-Ergänzung | | ||
+ | | ''Strg+x'' ''f'' | Dateinamen-Ergänzung a la Tab-Taste | Mehr dazu: [[ http://vimdoc.sourceforge.net/htmldoc/insert.html#ins-completion | vim.org Dokumentation ]] | ||
+ | |||
+ | ====== Mehrere Dateien bearbeiten ====== | ||
+ | |''vi -o file1 file2'' |horizontaler Split\\ (Fenster wechseln mit ''Ctrl+W Cursortaste'') | | ||
+ | |''vi -O file1 file2'' |vertikaler Split (Dateien nebeneinander) | | ||
+ | |''vi -p file1 file2'' |Tab-Modus\\ (Dateitabs wechseln mit ''g'' ''t'' (__g__o__t__o) - ''T'' für rückwärts | | ||
+ | |||
+ | ====== Einstellungen ====== | ||
+ | ===== Den vim.tiny smart machen ===== | ||
+ | |||
+ | Folgende Zeilen in der ~/.vimrc sorgen dafür, dass auch im vim.tiny im Insert-Modus die Cursortasten und Backspace vernünftig, auch über die Grenzen des gerade eingefügten Textes hinaus, funktionieren: | ||
+ | set nocompatible | ||
+ | set backspace=2 | ||
+ | |||
+ | ===== Groß-/Kleinschreibung beim Suchen ignorieren ===== | ||
+ | :set ignorecase | ||
+ | |||
+ | ===== Konfigurationsdateien ohne Kommentare anzeigen ===== | ||
+ | :set fdm=expr | ||
+ | :set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0 | ||
+ | |||
+ | ===== Syntax-Highlighting einschalten ===== | ||
+ | :syntax on | ||
+ | |||
+ | ===== Zeilennummern ein-/ausschalten ===== | ||
+ | :set number | ||
+ | :set nonumber | ||
+ | |||
+ | ===== Steuerzeichen anzeigen ===== | ||
+ | :set list | ||
+ | |||
+ | ====== Navigationsbefehle II ====== | ||
+ | | { | zum nächsten Absatz | | ||
+ | | } | zum vorherigen Absatz | | ||
+ | | * | | | ||
+ | | # | | | ||
+ | |||
+ | ====== Weitere Informationen und Befehle ====== | ||
+ | Modi: | ||
+ | |||
+ | * Command/normal Mode | ||
+ | * Insert Mode (zum normalen Schreiben) | ||
+ | * Ex Mode (das was man kriegt, wenn man im command-Mode ":" drückt) | ||
+ | * Visual Mode | ||
+ | |||
+ | ===== Ex Mode ===== | ||
+ | |||
+ | ^ Befehl ^ Funktion ^ | ||
+ | | ZZ | speichern & verlassen | | ||
+ | | :x | speichern & verlassen | | ||
+ | | :w <Datei> | Speichert es in einer neuen Datei| | ||
+ | | :e . | Eine andere Datei auf dem aktuellen Verzeichnis öffnen| | ||
+ | | :e /etc/passwd | Die Datei passwd öffnen| | ||
+ | | :r /etc/hosts | Den Inhalt der angegebenen Datei an die Cursorposition des offenen Dokuments einlesen| | ||
+ | | :tabnew | Neuen Tab erstellen| | ||
+ | | :tabnext | In den nächsten Tab springen| | ||
+ | | :tabclose | Tab schließen| | ||
+ | | :redo | Holt den Text wieder wenn ich zuviele undos gemacht habe| | ||
+ | || | ||
+ | | :help <Befehl>| | ||
+ | | :set all | Zeigt alle Befehle an in Kombination mit set| | ||
+ | |||
+ | ====== Alternative Editoren ====== | ||
+ | |||
+ | Eigentlich keine. | ||
+ | |||
+ | | Befehl | SuSE Paket | Debian Paket | CentOS Paket | Beschreibung | | ||
+ | | mcedit | mc | mc | | Teil vom Midnight Commander | | ||
+ | | nano | | | | | | ||
+ | |||
+ | ====== Dokus und Links ===== | ||
+ | |||
+ | * [[http://www.debian-administration.org/article/Hiding_comments_in_configuration_files]] | ||
+ | * [[https://blog.interlinked.org/tutorials/vim_tutorial.html|Tutorial mit Graphiken zur Navigation]] | ||
+ | * Interview mit Bill Joy über die Entstehung von "vi" [[http://web.cecs.pdx.edu/~kirkenda/joy84.html]] | ||
+ | * {{:vi-vim-cheat-sheet.gif|http://www.viemu.com/vi-vim-cheat-sheet.gif}} | ||
+ | |||
+ | {{ :admin_grundlagen:vim_grafiken.svg |}} |