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 [2016/01/18 11:13] – ingo_wichmannadmin_grundlagen:vim [2022/09/28 14:25] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 ====== vi überleben ====== ====== vi überleben ======
-^ Befehl ^ Funktion                   ^+ 
 +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)  | | ''i''      | Einfügemodus (**i**nsert)  |
 | ''<ESC>''  | Befehlsmodus               | | ''<ESC>''  | Befehlsmodus               |
Zeile 17: Zeile 20:
   * mit einem Browser-Spiel: http://vim-adventures.com/   * mit einem Browser-Spiel: http://vim-adventures.com/
   * mit vimtutor:   * mit vimtutor:
 +
   vimtutor   vimtutor
  
Zeile 22: Zeile 26:
 ===== Navigationsbefehle I ===== ===== Navigationsbefehle I =====
 {{:admin_grundlagen:adm-3a-hjkl-keyboard.jpg?200|}} {{:admin_grundlagen:adm-3a-hjkl-keyboard.jpg?200|}}
 +
 +Aufbau: [Anzahl] Befehl
 +
 +Beispiel: ''10w'' (10 Wörter weiter springen)
  
 | ''w''    | ein Wort weiter (**w**ord) | | ''w''    | ein Wort weiter (**w**ord) |
Zeile 27: Zeile 35:
 | ''e''    | zum nächsten Wortende (**e**nd)| | ''e''    | zum nächsten Wortende (**e**nd)|
 | ''0''    | zum Zeilenanfang | | ''0''    | zum Zeilenanfang |
-| ''$''    | zum Zeileneinde |+| ''$''    | zum Zeilenende |
 | ''gg''   | Dateianfang (**g**o)       | | ''gg''   | Dateianfang (**g**o)       |
 | ''10gg'' | Zeile 10               | | ''10gg'' | Zeile 10               |
Zeile 37: Zeile 45:
  
 ===== Änderungsbefehle I ===== ===== Ä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)                   ^ ^ c…    ^ ersetzen (**c**hange)                   ^
-| cw    | Wort ersetzen (change word)             | +| ''cw''    | Wort ersetzen (change word)             | 
-| cc    | Zeile ersetzen                          | +| ''cc''    | Zeile ersetzen                          | 
-| C     | bis zum Ende der Zeile ersetzen         | +| ''C''     | bis zum Ende der Zeile ersetzen         | 
-^       ^                                         ^+ 
 +^       ^                            ^
 | .     | letzten Befehl wiederholen | | .     | letzten Befehl wiederholen |
  
Zeile 47: Zeile 64:
 | /      | suchen                    | | /      | suchen                    |
 |.. Suchwort eingeben .. || |.. Suchwort eingeben .. ||
-| cw     | 1 Wort ersetzen    |+| ''cw''     | 1 Wort ersetzen    |
 |.. Ersatzwort eingeben ..|| |.. Ersatzwort eingeben ..||
-| <ESC>  | Änderung beenden          | +| ''<ESC>''  | Änderung beenden          | 
-| n      | zum nächsten Treffer springen          | +| ''n''      | zum nächsten Treffer springen          | 
-| .      | Ersetzung wiederholen |+| ''.''      | Ersetzung wiederholen |
  
 ==== copy & paste ==== ==== copy & paste ====
 ^ d…    ^ ausschneiden (**d**elete)               ^ ^ d…    ^ ausschneiden (**d**elete)               ^
-| dw    | Wort ausschneiden (delete word)         | +| ''dw''    | Wort ausschneiden (delete word)         | 
-| dd    | Zeile ausschneiden                      | +| ''dd''    | Zeile ausschneiden                      | 
-| dj    | Zeile und nächste Zeile ausschneiden    | +| ''D''     | bis zum Ende der Zeile ausschneiden     |
-| dk    | Zeile und vorherige Zeile ausschneiden  | +
-| D     | bis zum Ende der Zeile ausschneiden     |+
 ^ y…    ^ kopieren (**y**ank) ^ ^ y…    ^ kopieren (**y**ank) ^
-| yw    | Wort kopieren            | +| ''yw''    | Wort kopieren            | 
-| yy    | Zeile kopieren            | +| ''yy''    | Zeile kopieren            | 
-| Y     | bis zum Ende der Zeile kopieren |+| ''Y''     | Zeile kopieren | 
 +| ''y$''    | bis zum Ende der Zeile kopieren            |
 ^       ^ einfügen (**p**aste)^ ^       ^ einfügen (**p**aste)^
-| P     | an aktueller Position einfügen | +| ''P''     | an aktueller Position einfügen | 
-| p     | nach aktueller Position einfügen |+| ''p''     | nach aktueller Position einfügen |
  
 ===== Visueller Modus ===== ===== Visueller Modus =====
-| v      | Visueller Modus | +| ''v''      | markieren (visual) | 
-| V      | Visueller Modus, zeilenweise | +| ''V''      | markieren, zeilenweise | 
-| Strg+v | Visueller Modus, blockweise |+| ''Strg+v'' | markieren, blockweise |
  
 ==== Anwendungsbeispiel: suchen und ersetzen II ==== ==== Anwendungsbeispiel: suchen und ersetzen II ====
-| /      | suchen                    |+| ''/''      | suchen                    |
 |.. Suchwort eingeben .. || |.. Suchwort eingeben .. ||
-| vwc    | 1 Wort ersetzen    |+| ''vec''    | 1 Wort ersetzen    |
 |.. Ersatzwort eingeben ..|| |.. Ersatzwort eingeben ..||
-| <ESC>  | Änderung beenden          | +| ''<ESC>''  | Änderung beenden          | 
-| n      | zum nächsten Treffer springen          | +| ''n''      | zum nächsten Treffer springen          | 
-| .      | Ersetzung wiederholen |+| ''.''      | 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 ====== ====== Beispiel Texte ======
-[[vim beispiel texte]] zum Üben+[[admin_grundlagen:vim beispiel texte]] zum Üben
  
-====== Fortgeschrittene Befehle ====== +====== Suchen und Ersetzen III ====== 
-| Befehl | Funktion | +^ Befehl                    ^ Funktion ^ 
-| ZZ     | speichern & verlassen | +| '':%s/suchwort/ersatz/g'' | suchen und ersetzen (**s**ubstitute, **g**lobal) | 
-| :x     | speichern & verlassen |+| '':g/^$/d''               | Alle Leerzeilen löschen | 
  
-===== Suchen und Ersetzen III ===== +====== Eingabehilfen im Einfügemodus ====== 
-^ Befehl ^ Funktion ^ +| ''Strg+n''       | Wort-Ergänzung                | 
-| '':%s/suchwort/ersatz/g'' | suchen und ersetzen, mit Bestätigung | +| ''Strg+x'' ''f'' | Dateinamen-Ergänzung a la Tab-Taste | Mehr dazu: [[ http://vimdoc.sourceforge.net/htmldoc/insert.html#ins-completion | vim.org Dokumentation ]]
-| '':g/^$/d'' | Alle Leerzeilen löschen | +
  
-===== Dateinamen-Ergänzung a la Tab-Taste ===== +====== Mehrere Dateien bearbeiten ======
-Im Einfügemodus: +
-  Strg+x f +
-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''  |horizontaler Split\\ (Fenster wechseln mit ''Ctrl+W Cursortaste'')  |
 |''vi -O file1 file2''  |vertikaler Split (Dateien nebeneinander)  | |''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  | |''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 ===== ===== Konfigurationsdateien ohne Kommentare anzeigen =====
Zeile 109: Zeile 154:
   :set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0   :set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
  
-====== Navigationsbefehle II ====== +=====  Syntax-Highlighting einschalten ===== 
-| {    | zum nächsten Absatz | +  :syntax on
-| }    | zum vorherigen Absatz | +
- +
-====== Nützliche Informationen und Befehle ====== +
-Vim öffnen: +
- +
-  vim <Datei> - öffnet eine leere Datei mit dem Namen welche ich beim Öffnen angegeben habe +
-  vim + <Zeilennummer> + <Datei> - öffnet eine leere Datei mit dem Namen welchen ich angegeben habe und springt in die angegebene Zeile +
-  vim . - Ich kann mit die Datei aussuchen welche ich öffnen will. Durch den Punkt werden die Dateien aus dem aktuellen Verzeichnis angezeigt +
- +
-Modi: +
- +
-  - Command/normal Mode +
-  - Insert Mode (zum normalen Schreiben) +
-  - Ex Mode (das was man kriegt, wenn man im command-Mode ":" drückt) +
-  - Visual Mode +
- +
- +
-Command Mode: +
- +
-Im command-Mode haben Befehle den folgenden Aufbau: +
- +
-  [count][command][range] +
- +
-oder +
- +
-  [command][count][range] +
- +
-[count] ist Dabei optional. Es gibt an, wie oft [command] oder [range]  +
-ausgeführt werden soll. +
- +
-Mit "range" bezeichne ich Sprungbefehle. Sie werden benutzt, um sich innerhalb  +
-der Datei zu bewegen. Manche commands erwarten keine range. +
- +
-Die wichtigsten Commands: +
- +
-  d - delete - löschen +
-  y - yank - in den zwischenspeicher kopieren +
-  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: +
- +
-  w - Wort vorwärts springen +
-  b - Wort rückwärts springen +
- +
-Beispiele: +
- +
-  w - Wort weiterspringen +
-  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 +
- +
-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 +
-  :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 +
- +
-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> +===== Zeilennummern ein-/ausschalten =====
-  :syntax on - Syntax highlighting+
   :set number   :set number
   :set nonumber   :set nonumber
-  :set list - Steuerzeichen anzeigen 
-  :set all - Zeigt alle Befehle an in Kombination mit set 
  
-Visual Mode:+===== Steuerzeichen anzeigen ===== 
 +  :set list
  
-neben den 3 standard-Modi hat vim noch den Visual mode. Er ist wie normales  +====== Navigationsbefehle II ====== 
-Markieren mit shift-Cursortasten und wählt einen Bereich aus, den man dann mit  +| {    | zum nächsten Absatz | 
-commands editieren kann.+| }    | zum vorherigen Absatz | 
 +| *    | | 
 +| #    | |
  
-  v     normales markieren +====== Weitere Informationen und Befehle ====== 
-  V     zeilenweises markieren +Modi:
-  ^V    eckiges markieren (block mode)+
  
-Bsp: Block auskommentieren im Visual Mode:+  * Command/normal Mode 
 +  * Insert Mode (zum normalen Schreiben) 
 +  * Ex Mode (das was man kriegt, wenn man im command-Mode ":" drückt) 
 +  * Visual Mode
  
-  Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. +===== Ex Mode =====
-  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:+^ 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|
  
-  Mit Strg-V in den Modus --VISUELL BLOCK-- wechseln. +====== Alternative Editoren ======
-  Die Zeilen die entkommentiert werden sollen mit den Cursor Tasten markieren. +
-  Die Entf Taste drücken. +
-  Fertig.+
  
 +Eigentlich keine. 
  
-====== Alternative Editoren ====== 
 | Befehl | SuSE Paket | Debian Paket | CentOS Paket | Beschreibung                | | Befehl | SuSE Paket | Debian Paket | CentOS Paket | Beschreibung                |
 | mcedit | mc         | mc           |              | Teil vom Midnight Commander |    | mcedit | mc         | mc           |              | Teil vom Midnight Commander |   
 | nano   |            |              |              |                             |    | nano   |            |              |              |                             |   
- 
- 
  
 ====== Dokus und Links ===== ====== Dokus und Links =====
Zeile 277: Zeile 210:
   * {{: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.1453115603.txt.gz · Zuletzt geändert: (Externe Bearbeitung)