Benutzer-Werkzeuge

Webseiten-Werkzeuge


vi_vim

Dies ist eine alte Version des Dokuments!


vi / vim

    • :wq → schreibt die Datei immer auf die Platte und beendet dann den vim
    • :x → schreibt die Datei nur dann auf die Platte wenn es Änderungen in der Datei gegeben hat und beendet dann den vim
> 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:

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

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
    • 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.

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

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.1719708085.txt · Zuletzt geändert: von david