Benutzer-Werkzeuge

Webseiten-Werkzeuge


vi_vim

Dies ist eine alte Version des Dokuments!


vi / vim

https://vimhelp.org/editing.txt.html

  • :n: nächste vim datei / nächstes vim fenster
  • :N: vorherige vim datei / vorheriges vim fenster
  • :w: speichern
  • :q: beenden, aber nur wenn keine änderungen vorgenommen wurden und alle vim fenster besucht wurden
  • :q!: beenden ohne zu speichern
  • :wq: speichern und beenden, aber nur wenn alle vim dateien/fenster besucht wurden
  • :wq!: speichern und beenden
  • :x: das gleiche wie :wq, aber nur speichern, wenn änderungen vorgenommen wurden
  • ZZ (kein :): das gleiche wie :x
  • ZQ (kein :): das gleiche wie :q!

Difference Between :wq and :x

  • :wq → schreibt die Datei immer und beendet dann vim
  • :x → schreibt die Datei nur dann, wenn es Änderungen gegeben hat, und beendet dann vim
update-alternatives --config editor
# ODER
echo "SELECTED_EDITOR=\"$(command -v vim 2> /dev/null || command -v vi 2> /dev/null)\"" > ~/.selected_editor
# ODER
export "EDITOR=\"$(command -v vim 2> /dev/null || command -v vi 2> /dev/null)\""; echo "EDITOR=\"$(command -v vim 2> /dev/null || command -v vi 2> /dev/null)\"" > ~/.bashrc
export "VISUAL=\"$(command -v vim 2> /dev/null || command -v vi 2> /dev/null)\""; echo "VISUAL=\"$(command -v vim 2> /dev/null || command -v vi 2> /dev/null)\"" > ~/.bashrc

Automatischen Visual Mode mit Maus deaktivieren

~/.vimrc
set mouse=

oder

> echo "set mouse=" >> ~/.vimrc

minimale vim config

Damit die Farben sowohl bei weißem als auch bei schwarzem Hintergrund im vi/vim gut erkennbar sind, wird das colorscheme geändert.

cat << 'EOF' > ~/.vimrc
unlet! skip_defaults_vim
source $VIMRUNTIME/defaults.vim
set nocompatible
 
colorscheme ron
filetype plugin indent off
syntax on
 
set encoding=utf-8
set fileformats=unix,dos
set mouse=
 
set secure
EOF

ambitioniertere vim config

~/.vimrc
unlet! skip_defaults_vim
source $VIMRUNTIME/defaults.vim
set nocompatible
 
packadd! matchit
 
"colorscheme pablo
colorscheme torte
filetype plugin indent on
syntax on
 
highlight Normal cterm=NONE ctermbg=NONE ctermfg=NONE gui=NONE guibg=NONE guifg=NONE
 
set autoindent
set backspace=indent,eol,start
set encoding=utf-8
set fileformats=unix,dos
set hlsearch
set ignorecase
set incsearch
set list
set listchars=tab:\|·,trail:·,extends:≫,precedes:≪,eol:⏎,nbsp:set mouse=
set number
set relativenumber
set ruler
set scrolloff=5
set shiftwidth=0
set showcmd
set showmatch
set showmode
set signcolumn=number
set smartcase
set smartindent
set smarttab
set smoothscroll
set softtabstop=-1
set tabstop=4
set timeout
set ttimeout
set ttimeoutlen=-1
set wildmenu
 
set secure

allgemeines

den "vim" auf einem Ubuntu-System installieren:

> aptitude -y install vim

vimtutor auf deutsch:

> vimtutor de

vimtutor auf englisch:

> vimtutor en

anständige Farben und guter Kontrast bei weißem und schwarzem Hintergrund + autoindent abschalten:

# echo -e ":colorscheme delek\n:setlocal noautoindent\n:setlocal nocindent\n:setlocal nosmartindent\n:setlocal indentexpr=\nfiletype indent off\n" > ~/.vimrc

oder in Kurzform für das Home-Verzeichnis so autoindent abschalten:

# echo -e ":colors delek\n:setl noai nocin nosi inde=\nfiletype indent off\n" > ~/.vimrc
oder
# echo -e ":colors pablo\n:setl noai nocin nosi inde=\nfiletype indent off\n" > ~/.vimrc

schaltet im vim die Zeilennummerierung an:

:set nu

schaltet im vim die Zeilennummerierung aus:

:set nonu

zeigt im vim die Zeilenumbrüche an:

:set list

Encoding

um eine Datei mit dem VI in einem neuen Encoding zu speichern, muss das neue Encoding dem Schreibkommando übergeben werden:

> vi datei.txt
...
:write ++enc=utf-8 datei.txt

Das Encoding bei Start von vim setzen, bevor die Datei gelesen wurde:

# most shells on *nix / pwsh on windows
vim --cmd 'set encoding=utf-8' file.txt

Es gibt einen Unterschied zwischen ":set encoding=utf-8" und ":set fileencoding=utf-8"!

encoding|enc Legt die in Vim verwendete Zeichencodierung fest. Es gilt für Text in den Puffern, Registern, Strings in Ausdrücken, Text, der in der viminfo-Datei gespeichert ist, usw. Es legt die Art von Zeichen fest, mit denen Vim arbeiten kann. Das Ändern dieser Option wird die Kodierung des bestehenden Textes in Vim nicht ändern. Es kann dazu führen, dass Nicht-ASCII-Text ungültig wird. Es sollte normalerweise auf seinem Standardwert gehalten oder beim Start von Vim gesetzt werden. Normalerweise entspricht 'Encoding' Ihrem aktuellen Gebietsschema. Dies ist die Standardeinstellung, wenn Vim Ihre Umgebungseinstellungen erkennt. Wenn „encoding“ nicht auf das aktuelle Gebietsschema eingestellt ist, muss „termencoding“ eingestellt werden, um eingegebenen und angezeigten Text zu konvertieren.

fileencoding|fenc Legt die Zeichencodierung für die Datei dieses Puffers fest. Wenn sich „fileencoding“ von „encoding“ unterscheidet, erfolgt die Konvertierung beim Schreiben der Datei. Wenn 'fileencoding' leer ist, wird derselbe Wert wie 'encoding' verwendet (keine Konvertierung beim Lesen oder Schreiben einer Datei). Beim Setzen des Wertes wird kein Fehler ausgegeben, nur wenn er verwendet wird, nur beim Schreiben einer Datei. Die Konvertierung erfolgt auch, wenn „encoding“ und „fileencoding“ beide eine Unicode-Codierung sind und „fileencoding“ nicht utf-8 ist. Das liegt daran, dass Unicode intern immer als utf-8 gespeichert wird.
WARNUNG: Konvertierung kann zu Informationsverlust führen! Wenn „Kodierung“ „utf-8“ oder eine andere Unicode-Kodierung ist, erfolgt die Konvertierung höchstwahrscheinlich so, dass die umgekehrte Konvertierung denselben Text ergibt. Wenn die 'Kodierung' nicht "utf-8" ist, können einige Zeichen verloren gehen!

Byte Order Mark (BOM)

setzen:

:set bomb

entfernen:

:set nobomb
  • Wenn eine Datei geschrieben wird und die folgenden Bedingungen erfüllt sind, wird der Datei eine BOM (Byte Order Mark) vorangestellt:
    • diese Option ist an
    • die Option 'binary' ist aus
    • fileencoding ist "utf-8", "ucs-2", "ucs-4" oder eine der Little/Big-Endian-Varianten.

Einige Anwendungen verwenden das BOM, um die Codierung der Datei zu erkennen. Wird häufig für UCS-2-Dateien unter MS-Windows verwendet. Bei anderen Anwendungen verursacht es Probleme, zum Beispiel: "cat file1 file2" lässt das BOM von file2 in der Mitte der resultierenden Datei erscheinen. Gcc akzeptiert keinen BOM. Wenn Vim eine Datei liest und fileencodings mit "ucs-bom" beginnt, wird auf das Vorhandensein der BOM geprüft und 'bomb' entsprechend gesetzt. Wenn „binary“ nicht gesetzt ist, wird es aus der ersten Zeile entfernt, sodass Sie es beim Bearbeiten nicht sehen. Wenn Sie die Optionen nicht ändern, wird das BOM beim Schreiben der Datei wiederhergestellt.

die 16 wichtigsten vim-Kommandos

[Esc]           - in den Befehls-Modus wechseln
i               - links vom Cursor in den Einfüge-Modus wechseln
I               - links von der Zeile in den Einfüge-Modus wechseln
o               - unter dem Cursor eine neue Zeile im Einfüge-Modus öffnen
O               - über dem Cursor eine neue Zeile im Einfüge-Modus öffnen
a               - rechts vom Cursor in den Einfüge-Modus wechseln
A               - rechts von der Zeile in den Einfüge-Modus wechseln
s               - das Zeichen, auf dem der Cursor steht, enfernen und genau an der Stelle in den Einfüge-Modus wechseln
S               - die Zeile, auf dem der Cursor steht, leeren und in den Einfüge-Modus wechseln
.               - wiederholt den letzten Befehl -> im nvi anders
u               - macht die letzten Befehle rückgängig (Undo) -> im nvi anders
[Strg]+[R]      - macht die letzten rückgängig gemachten Befehle wieder "rückgängig" (Redo) -> im nvi anders
x               - löscht das Zeichen, auf dem der Cursor steht
dd              - löscht die ganze Zeile (und fügt es in den Puffer ein)
yy              - fügt die Zeile, in der der Cursor steht, in den Puffer ein
p               - fügt den Inhalt aus dem Puffer in der Datei ein

weitere vim-Kommandos

cw              - überschreibt das aktuell ausgewählte Wort
w               - springt ein Wort anhand der Worttrenner weiter
                    z.B.: Ob beispielsweise mehr als nur "Leerzeichen" bzw. "Tabulatoren" Wörter voneinander trennen,
                          kann beispielsweise an Hand einer IP-Adresse (127.0.0.1) getestet werden.
                          Ursprünglich wurden Wörter nur durch Leerzeichen/Tabulatoren getrennt,
                          in dem Fall wäre die komplette IP-Adresse ein Wort, in vielen neueren Shells wird eine
                          IP-Adresse aber als 7 Worte angesehen => "127" + "." + "0" + "." + "0" + "." + "1"
G               - Springt zum Dateiende
[Zahl]G         - Springt zu der angegeben Zeile
dG              - löscht den gesamten Bereich unterhalb des Cursors
d1G             - löscht den gesamten Bereich oberhalb des Cursors

mit vim mehrere Dateien gleichzeitig öffnen

> vim datei_1.txt datei_2.txt datei_3.txt
:n              - zur nächsten Datei wechseln
:N              - zurück zur vorhergehenden Datei wechseln
:e#             - zum Anfang zurück bzw. zur 1. Datei wechseln

ein Vim-Fork

Neovim in 100 Seconds

1976: Bill Joy schrieb den "vi"
1991: Bram Moolenaar schrieb "vim"
2014 kam "neovim"/"nvim", Fork von "vim"
     siehe auch "nvchad
/home/http/wiki/data/attic/vi_vim.1719712461.txt · Zuletzt geändert: von david