Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
vi / vim
-
:wq→ schreibt die Datei immer auf die Platte und beendet dann denvim:x→ schreibt die Datei nur dann auf die Platte wenn es Änderungen in der Datei gegeben hat und beendet dann denvim
> echo 'SELECTED_EDITOR="/usr/bin/vim.basic"' > ~/.selected_editor
damit die Farben sowohl bei weißem als auch bei schwarzem Hintergrund im vi gut erkennbar sind:
> echo "unlet! skip_defaults_vim" >> ~/.vimrc > echo "set nocompatible" >> ~/.vimrc > echo "\"colorscheme delek" >> ~/.vimrc > echo "\"colorscheme pablo" >> ~/.vimrc > echo "colorscheme ron" >> ~/.vimrc > echo "filetype plugin indent off" >> ~/.vimrc > echo "syntax on" >> ~/.vimrc > echo "set mouse=" >> ~/.vimrc > echo "set secure" >> ~/.vimrc
- ~/.vimrc
unlet! skip_defaults_vim set nocompatible "colorscheme delek "colorscheme pablo colorscheme ron filetype plugin indent off syntax on set mouse= set secure
ultimative vim config
ab vim v9
- ~/.vimrc
unlet! skip_defaults_vim source $VIMRUNTIME/defaults.vim set nocompatible packadd! matchit colorscheme pablo 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 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, muß das neue Encoding dem Schreibkommando ünergeben werden:
> vi datei.txt ... :write ++enc=utf-8 datei.txt
Das Encoding bei Start von vim setzen, bevor die Datei gelesen wurde:
# in MicroSoft Windows vim --cmd "set encoding=utf-8" file.txt # in *nix shell 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
fileencodingist "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.
Debian
> echo "let g:skip_defaults_vim = 1" >> ~/.vimrc
- ~/.vimrc
let g:skip_defaults_vim = 1
oder
> echo "set mouse=" >> ~/.vimrc
- ~/.vimrc
set mouse=
Seit 2017:
Standardmäßig liest der Debian-Vim seine Konfigurationsdateien in dieser Reihenfolge: vimrc, vimrc.local, debian.vim, ~/.vimrc
D.h. die debian.vim überschreibt die globale Konfiguration!!!
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
> vi 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
1976: Bill Joy schrieb den "vi"
1991: Bram Moolenaar schrieb "vim"
2014 kam "neovim"/"nvim", Fork von "vim"
siehe auch "nvchad
