Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:vim

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
admin_grundlagen:vim [2014/06/03 13:52] – [Alternative Editoren] carsten_strotmannadmin_grundlagen:vim [2022/09/28 14:25] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
-====== Überleben mit vi ====== +====== vi überleben ======
-| Befehl | Funktion               | +
-| i      | Einfügemodus           | +
-| <ESC>  | Befehlsmodus           | +
-| :w     | speichern              | +
-| :q!    | beenden ohne speichern | +
-| :wq    | speichern und beenden  | +
-| :x     | speichern und beenden  |+
  
-===== Weitere Befehle ===== +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. 
-| u      | Rückgängig             | + 
-| Strg+r | undo Wiederherstellen  |+^ 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: In älteren Vim-Versionen nützlich:
-| J      | hängt die nächste Zeile an das Ende der aktuellen Zeile an (join) |+| ''J''      | hängt die nächste Zeile an das Ende der aktuellen Zeile an (**j**oin) |
  
-====== VIM lernen mit einem Browser-Spiel ======+====== VIM lernen ====== 
 +  * mit einem Browser-Spiel: http://vim-adventures.com/ 
 +  * mit vimtutor:
  
-http://vim-adventures.com/+  vimtutor
  
 ====== Grundlagen ====== ====== Grundlagen ======
Zeile 23: Zeile 27:
 {{:admin_grundlagen:adm-3a-hjkl-keyboard.jpg?200|}} {{:admin_grundlagen:adm-3a-hjkl-keyboard.jpg?200|}}
  
-| w    | ein Wort weiter (word) | +Aufbau: [Anzahl] Befehl
-| b    | ein Wort zurück (back) | +
-| gg   | Dateianfang (go)       | +
-| 10gg | Zeile 10               | +
-| G    | Dateiende (go)         | +
-| /    | suchen                 |+
  
-===== Änderungsbefehle I ===== +Beispiel: ''10w'' (10 Wörter weiter springen)
-| dw    | Wort löschen (delete word)         | +
-| dd    | Zeile löschen                      | +
-| D     | bis zum Ende der Zeile löschen     | +
-| cw    | Wort ändern (change word)          | +
-| cc    | Zeile ändern                       | +
-| C     | bis zum Ende der Zeile ändern      |+
  
-==== copy & paste ==== +| ''w''    | ein Wort weiter (**w**ord) | 
-| yy     | Zeile kopieren            | +| ''b''    | ein Wort zurück (**b**ack) | 
-| dd     | Zeile ausschneiden        | +| ''e''    | zum nächsten Wortende (**e**nd)| 
-| P      | einfügen                  | +| ''0''    | zum Zeilenanfang | 
-| vwy    | Wort kopieren             | +| ''$''    | zum Zeilenende | 
-| yw     | Wort kopieren             |+| ''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  |
  
-====== Anwendung der Grundlagen ====== +===== Änderungsbefehle I ===== 
-===== suchen und ersetzen I ===== +Aufbau: [''Anzahl''] ''Befehl'' ''Anwendungsbereich''
-| /      | suchen                    | +
-.. Suchwort eingeben .. +
-| v      | visueller modus - zeichenweise          | +
-| [Shift] v | visueller modus - zeilenweise          | +
-| [Strg] v | visueller modus - spaltenweise          | +
-.. Suchwort markieren .. +
-| c      | markierten text ändern    | +
-| I      | einfügen                  | +
-| d      | löschen                   | +
-| y      | kopieren                  | +
-.. Ersatzwort eingeben +
-| <ESC>  | Änderung beenden          | +
-| n      | nächster Treffer          | +
-| .      | letzen Befehl wiederholen |+
  
 +''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.
  
-====== Fortgeschrittene Befehle ====== +Beispiel: ''cwERSATZTEXT'' (Text bis zum nächster Wort durch ERSATZTEXT ersetzen)
-| Befehl | Funktion | +
-| ZZ     | speichern & verlassen | +
-| :x     | speichern & verlassen |+
  
-===== Suchen und Ersetzen II ===== +^ c…    ^ ersetzen (**c**hange)                   ^ 
-| Befehl | Funktion | +| ''cw''    | Wort ersetzen (change word)             | 
-| '':g/^$/d'' | Alle Leerzeilen löschen |  +| ''cc''    | Zeile ersetzen                          | 
-| '':%s/suchwort/ersatz/gc'' | suchen und ersetzen, mit Bestätigung |+| ''C''     | bis zum Ende der Zeile ersetzen         |
  
-===== Dateinamen-Ergänzung a la Tab-Taste ===== +^       ^                            ^ 
-Im Einfügemodus: +| .     | letzten Befehl wiederholen |
-  Strg+x f +
-Mehr dazu: [[ http://vimdoc.sourceforge.net/htmldoc/insert.html#ins-completion | vim.org Dokumentation ]]+
  
-===== Mehrere Dateien bearbeiten ===== +==== Anwendungsbeispiel: suchen und ersetzen I ==== 
-|''vi -o file1 file2''  |horizontaler Split\\ (Fenster wechseln mit ''Ctrl+W Cursortaste'')  | +| /      | suchen                    | 
-|''vi -O file1 file2''  |vertikaler Split (Dateien nebeneinander)  | +|.. Suchwort eingeben .. || 
-|''vi -p file1 file2''  |Tab-Modus\\ (Dateitabs wechseln mit ''g'' ''t'' (__g__o__t__o) - ''T'' für rückwärts  |+| ''cw''     | 1 Wort ersetzen    | 
 +|.. Ersatzwort eingeben ..|| 
 +| ''<ESC>''  | Änderung beenden          | 
 +| ''n''      | zum nächsten Treffer springen          | 
 +| ''.''      | Ersetzung wiederholen |
  
-===== Konfigurationsdateien ohne Kommentare anzeigen ===== +==== copy & paste ==== 
-:set fdm=expr +^ d…    ^ ausschneiden (**d**elete)               ^ 
-:set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0+| ''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 |
  
-====== Navigationsbefehle II ====== +===== Visueller Modus ===== 
-| {    | zum nächsten Absatz |+| ''v''      | markieren (visual) | 
 +| ''V''      | markieren, zeilenweise | 
 +| ''Strg+v'' | markieren, blockweise |
  
-====== Nützliche Informationen und Befehle ====== +==== Anwendungsbeispiel: suchen und ersetzen II ==== 
-Vim öffnen:+| ''/''      | suchen                    | 
 +|.. Suchwort eingeben .. || 
 +| ''vec''    | 1 Wort ersetzen    | 
 +|.. Ersatzwort eingeben ..|| 
 +| ''<ESC>''  | Änderung beenden          | 
 +| ''n''      | zum nächsten Treffer springen          | 
 +| ''.''      | Ersetzung wiederholen |
  
-vim <Datein> - öffnet mir eine leere Datei mit dem Namen welche ich beim öffnen angegeben habe +==== Text Markieren ==== 
-vim + <Zeilennummer> + <Datei> - öffnet mir eine leere Datei mit dem Namen welchen ich angegeben habe und springt in die angegebene Zeile +| ''vip'' | aktuellen Absatz markieren | 
-vim . - Ich kann mit die Datei aussuchen welche ich öffnen will. Durch den Punkt werden die Dateien aus dem aktuellen Verzeichnis angezeigt+| ''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
  
-Modis:+===== 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|
  
-- Command/normal mode +====== Beispiel Texte ====== 
-- Insert mode (zum normalen schreiben) +[[admin_grundlagen:vim beispiel texte]] zum Üben
-- Ex mode (das was man kriegt, wenn man im command-mode ":" drückt) +
-- Visual mode+
  
 +====== Suchen und Ersetzen III ======
 +^ Befehl                    ^ Funktion ^
 +| '':%s/suchwort/ersatz/g'' | suchen und ersetzen (**s**ubstitute, **g**lobal) |
 +| '':g/^$/d''               | Alle Leerzeilen löschen | 
  
-Command Mode:+====== 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 ]]
  
-im command-mode haben befehle den folgenden aufbau:+====== 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  |
  
-[count][command][range]+====== Einstellungen ====== 
 +===== Den vim.tiny smart machen =====
  
-oder+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
  
-[command][count][range]+===== Groß-/Kleinschreibung beim Suchen ignorieren ===== 
 +  :set ignorecase
  
-[count] ist dabei optional. Es gibt an, wie oft [command] oder [range]  +===== Konfigurationsdateien ohne Kommentare anzeigen ===== 
-ausgeführt werden soll.+  :set fdm=expr 
 +  :set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
  
-Mit "range" bezeichne ich sprungbefehle. Sie werden benutzt, um sich innerhalb  +=====  Syntax-Highlighting einschalten ===== 
-der datei zu bewegen. Manche commands erwarten keine range.+  :syntax on
  
-Die wichtigsten Commands:+===== Zeilennummern ein-/ausschalten ===== 
 +  :set number 
 +  :set nonumber
  
-d - delete - löschen +===== Steuerzeichen anzeigen ===== 
-y - yank - in den zwischenspeicher kopieren +  :set list
-yw - wort kopieren +
-yy - Zeile kopieren +
-3yy - 3 Zeilen kopieren +
-p - vorher kopiertes einfügen (put | leichter zu merken ist "paste") +
-P - vorher kopiertes *vor* dem cursor einfügen +
-c - change - löschen, und danach in den insert-modus wechseln +
-shift + J - fügt Zeilen zusammen+
  
-Die gebräuchlisten Ranges:+====== Navigationsbefehle II ====== 
 +| {    | zum nächsten Absatz | 
 +| }    | zum vorherigen Absatz | 
 +| *    | | 
 +| #    | |
  
-w - wort vorwärts springen +====== Weitere Informationen und Befehle ====== 
-b - wort rückwärts springen+Modi:
  
-Beispiele:+  * Command/normal Mode 
 +  * Insert Mode (zum normalen Schreiben) 
 +  * Ex Mode (das was man kriegt, wenn man im command-Mode ":" drückt) 
 +  * Visual Mode
  
-w - wort weiterspringen +===== Ex Mode =====
-dw - wort löschen - command "delete", reichweite "cursor bis sprungende" (wort) einfach zu merken mit "del word" +
-d2w - einmal zwei worte löschen +
-2dw - zwei mal ein wort löschen (gleiches ergebnis wie d2w) +
-10i- - 10 "-" einfügen (erst beim wechsel in den command-mode, da ja der ganze insert-mode (i) 10 mal ausgeführt wird) +
- +
-Das ist der Grundsätzliche aufbau, den man mit allen anderen befehlen  +
-kombiniert. +
- +
-Andere nützlichkeiten im command-mode: +
- +
-. - letzes command wiederholen. +
-cw - wort austauschen. Wie "dwi". "change word" +
-i - in den insert-modus wechseln +
-I - in den insert-modus wechseln und cursor an den anfang der zeile positionieren. Kurz: Wenn man etwas am anfang der zeile einfügen will +
-a - append -> wenn man etwas hinter dem cursor einfügen will +
-A - append -> wenn man etwas am ende der zeile einfügen will +
-o - open new line - leerzeile anfügen + insert-mode +
-O - open new line - leerzeile einfügen + insert-mode +
-ddp - aktuelle zeile eins nach unten verschieben +
-xp - buchstaben vertauschen  +
- +
-Bewegen im command-mode / "range"-befehle: +
- +
-w - wort weiter springen      +
-W - wie w, überspringt aber mehr (z.B. kommas) +
-b - wort zurück springen +
-B - wie b, überspringt aber mehr (z.B. kommas) +
-e - springt bis zum ende des wortes unter dem cursor +
-E - wie E, überspringt aber mehr (z.B. kommas) +
-{ } - absatz vor/zurück springen. Sehr praktisch in einer .rhosts! +
-0 - pos1 +
-$ - ende +
-* - springt vorwärts zum nächsten vorkommen des wortes unter dem cursor +
-# - springt rücwärts zum vorherigen vorkommen des wortes unter dem cursor +
- +
-Suche: +
- +
-/<was ich suche> (vorwärts) (mit n zum nächsten, mit strg + n zum vorherigen) +
-?<was ich suche> (rückwärts suche) +
- +
-Insert Mode: +
- +
-insert modus - wenn unten "insert" steht. Was man drueckt wird direkt eingefuegt. Verlassen mit ESC +
- +
-Ex Mode: +
- +
-:w <Datei> - Speichert es in einer neuen Datei +
-:e . - Eine andere Datei auf dem aktuellen Verzeichnis öffnen +
-:e /etc/passwd - Die Datei passwd öffnen +
-:tabnew - Neuen Tab erstellen +
-:tabnext - In den nächsten Tab springen +
-:tabclose - Tab schließen +
-:redo - Holt mir meinen Text wieder wenn ich zuviele undos gemacht habe +
- +
-Suchen und ersetzen: +
- +
-:1,60 - ersetzen von Reihe 1-60 +
-:1,$ - ganzer Text (bis Textende) +
-:% - ganzer Text (ebenfalls bis Textende) +
-:.,+10 - von der Courser Position an Zehn Zeilen +
-:-5,10 +
- +
-:%s/bash$/sh/ - ersetzt bash wenn es am Ende steht durch sh +
-:%s/bash/sh/ - ersetzt bash durch sh, aber pro Zeile nur den ersten treffen +
-:%s/bash/sh/g - ersetzt bash durch sh, im ganzen Text, auch mehrmals pro Zeile wenn es vorkommt +
-:%s/bash/sh/gc - ersetzt bash druch sh, im ganzen Text, auch mehrmals pro Zeiel wenn es vorkommt und man wird gefragt ob man das ändern will +
- +
-:%s/^a/A/ - ersetzt alle kleingeschrieben a am Anfang jeder Zeile durch ein A +
- +
-:help <Befehl> +
-:syntax on - Syntax highlighting +
-:set number +
-:set nonumber +
-:set list - Steuerzeichen anzeigen +
-:set all - Zeigt alle befehle an in kombination mit set +
- +
-Visual Mode: +
- +
-neben den 3 standard-modi hat vim noch den Visual mode. Er ist wie normales  +
-markieren mit shift-cursortasten und wählt einen Bereich aus, den man dann mit  +
-commands editieren kann. +
- +
-v     normales markieren +
-V     zeilenweises markieren +
-^V    eckiges markieren (block mode) +
- +
-Bsp: Block auskommentieren im Visual Mode: +
- +
-Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. | +
-Die Zeilen die auskommentiert werden sollen mit den Cursor Tasten markieren. | +
-Mit Shift-I in den Einfüge Modus wechseln. | +
-Das Kommentarzeichen (z.B. #) einfügen. | +
-ESC drücken um aus dem Modus zu kommen. | +
-Die Zeilen bekommen wie von Zauberhand das '#' Zeichen vorangestellt. | +
- +
-Bsp: Block entkommentieren im Visual Mode: +
- +
-Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. | +
-Die Zeilen die entkommentiert werden sollen mit den Cursor Tasten markieren. | +
-Die Entf Taste drücken. | +
-Fertig. |+
  
 +^ 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 ====== ====== Alternative Editoren ======
-| Befehl | SuSE Paket | Debian Paket | Fedora Paket | 
-| mcedit | mc         | mc           |              |    
-| e3ne   | e3         | e3           |              |   
-| aee    |            | aee          |              |   
-| zile   |            | zile         | zile         | 
  
 +Eigentlich keine. 
  
 +| Befehl | SuSE Paket | Debian Paket | CentOS Paket | Beschreibung                |
 +| mcedit | mc         | mc           |              | Teil vom Midnight Commander |   
 +| nano   |            |              |              |                             |   
  
 ====== Dokus und Links ===== ====== Dokus und Links =====
  
   * [[http://www.debian-administration.org/article/Hiding_comments_in_configuration_files]]   * [[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]]    * 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}}   * {{:vi-vim-cheat-sheet.gif|http://www.viemu.com/vi-vim-cheat-sheet.gif}}
  
 +{{ :admin_grundlagen:vim_grafiken.svg |}}
admin_grundlagen/vim.1401803578.txt.gz · Zuletzt geändert: 2014/06/03 13:52 von carsten_strotmann