Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi2:vim

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

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 |}}
lpi2/vim.txt · Zuletzt geändert: 2022/09/28 14:25 (Externe Bearbeitung)