Vim
Vim (Vi improved) ist ein Texteditor welcher auf dem vi Textverarbeiter basiert. Vim kann über die Kommandozeile oder als eine eigenständige Anwendung über eine Benutzeroberfläche verwendet werden.
Vim sollte nicht mit Neovim verwechselt werden, ein ähnliches Programm welches den selben Anwendungszweck erfüllt.
Installation
USE Marker
USE flags for app-editors/vim Vim, an improved vi-style text editor
X
|
Link console vim against X11 libraries to enable title and clipboard features in xterm |
acl
|
Add support for Access Control Lists |
crypt
|
Use dev-libs/libsodium for crypto support |
cscope
|
Enable cscope interface |
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
gpm
|
Add support for sys-libs/gpm (Console-based mouse driver) |
lua
|
Enable Lua scripting support |
minimal
|
Install a very minimal build (disables, for example, plugins, fonts, most drivers, non-critical features) |
nls
|
Add Native Language Support (using gettextGNU locale utilities) |
perl
|
Add optional support/bindings for the Perl language |
python
|
Add optional support/bindings for the Python language |
racket
|
Enable support for Scheme using dev-scheme/racket |
ruby
|
Add support/bindings for the Ruby language |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
sound
|
Enable sound support |
tcl
|
Add support the Tcl language |
terminal
|
Enable terminal emulation support |
vim-pager
|
Install vimpager and vimmanpager links |
Emerge
Wenn Unterstützung für das X Fenstersystem nicht notwendig ist, kann app-editors/vim installiert werden:
root #
emerge --ask app-editors/vim
Zusätzliche Software
Gvim
Um Vim mit der Ncurses basierten Schnittstelle (/usr/bin/vim) und der grafischen Schnittstelle (für das X Fenster System - /usr/bin/gvim) zu installieren, installiere das app-editors/gvim Paket:
root #
emerge --ask app-editors/gvim
Pakete
Vim unterstützt Pakete, welche einen nativen Mechanismus zur Verfügung stellen, um die Funktionalität zu erweitern. Lese die Dokumentation über eingebaute Pakete, um mehr zu erfahren: :help packages
Plugins
Die Kategorie app-vim enthält viele zusätzliche Syntax Definitionen, Plugins und anderes Vim Zugehöriges.
Nutze emerge oder eix um einen Überblick über verfügbare Pakete in der app-vim Kategorie zu erhalten:
user $
emerge --search "%@^app-vim"
user $
eix -cC app-vim
Nicht alle Vim Plugins werden im Gentoo Repository verfügbar sein. Vim enthält jetzt native Pakete, als Möglichkeit Vim Plugins zu installieren. Zusätzlich gibt es mehrere Plugin Verwalterungsprogramme für Vim.
Konfiguration
Dateien
Vim kann für jeden Nutzer einzeln oder über eine systemweiten Konfigurationsdatei konfiguriert werden:
- /etc/vim/vimrc - Die globale Konfigurationsdatei
- ~/.vimrc - Die Konfigurationsdatei des Nutzers. Das Tilde (~) ist eine Verkürzung für das Home Verzeichnis des Nutzers.
- ~/.vim/pack/foo - Ort, wo Vim Plugins installiert sind.[1] Ersätze foo durch den Namen jedes Plugins.
Farb-Themen
About a dozen color schemes are shipped with the base Vim package. They can be listed in last line mode by typing colorscheme, then pressing either Ctrl+d or pressing the Tab key twice:
:
colorscheme
blue darkblue default delek desert elflord evening industry koehler morning murphy pablo peachpuff ron shine slate torte zellner
They can be changed in Vim by using the colorscheme (alternatively use colo) command while in last line mode:
:
colorscheme peachpuff
Color schemes can be permanently applied in the .vimrc file:
~/.vimrc
colorscheme peachpuff syntax on
The first line sets the default color scheme while the last line activates the color scheme.
Selecting vi editor and system default editor
If Vim - and only Vim - is installed, the vi command should launch Vim. If other vi-like editors are installed, eselect may be used to choose which editor the vi command launches.
The text editor article may also be of interest for setting a system default editor, if Vim is to be set as the default.
Usage
Invocation
From the command line:
user $
vim --help
vim --help VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Nov 26 2021 11:56:27) Usage: vim [arguments] [file ..] edit specified file(s) or: vim [arguments] - read text from stdin or: vim [arguments] -t tag edit file where tag is defined or: vim [arguments] -q [errorfile] edit file with first error Arguments: -- Only file names after this -v Vi mode (like "vi") -e Ex mode (like "ex") -E Improved Ex mode -s Silent (batch) mode (only for "ex") -d Diff mode (like "vimdiff") -y Easy mode (like "evim", modeless) -R Readonly mode (like "view") -Z Restricted mode (like "rvim") -m Modifications (writing files) not allowed -M Modifications in text not allowed -b Binary mode -l Lisp mode -C Compatible with Vi: 'compatible' -N Not fully Vi compatible: 'nocompatible' -V[N][fname] Be verbose [level N] [log messages to fname] -D Debugging mode -n No swap file, use memory only -r List swap files and exit -r (with file name) Recover crashed session -L Same as -r -A Start in Arabic mode -H Start in Hebrew mode -T <terminal> Set terminal type to <terminal> --not-a-term Skip warning for input/output not being a terminal --ttyfail Exit if input or output is not a terminal -u <vimrc> Use <vimrc> instead of any .vimrc --noplugin Don't load plugin scripts -p[N] Open N tab pages (default: one for each file) -o[N] Open N windows (default: one for each file) -O[N] Like -o but split vertically + Start at end of file +<lnum> Start at line <lnum> --cmd <command> Execute <command> before loading any vimrc file -c <command> Execute <command> after loading the first file -S <session> Source file <session> after loading the first file -s <scriptin> Read Normal mode commands from file <scriptin> -w <scriptout> Append all typed commands to file <scriptout> -W <scriptout> Write all typed commands to file <scriptout> -x Edit encrypted files --startuptime <file> Write startup timing messages to <file> -i <viminfo> Use <viminfo> instead of .viminfo --clean 'nocompatible', Vim defaults, no plugins, no viminfo -h or --help Print Help (this message) and exit --version Print version information and exit
The vi command may also be used to launch Vim, if so configured.
Specify a name, to open an existing file, or to create a new one:
user $
vim <filename>
Tutorial
Vim has a built-in tutorial which should require around 30 minutes to go through. Start it using the vimtutor command:
user $
vimtutor
Tips and tricks
Using Vim like ex or ed from the command line
It is possible to use Vim for one-liners — commands that can be used in scripts or on the command-line to make changes in an unattended manner.
For instance, the following command adds #
to the beginning of each line in the file.txt file:
user $
vim -c ":%s/^/#/g" -c ":x" file.txt
What happens is that Vim interprets the passed on commands (through the -c
option). The first command is Vim's substitution command (which is very similar to sed's), the second one is Vim's instruction to save and exit the editor.
Change file encoding
To change the file encoding of a file to UTF-8, use the following command (in last line mode):
:
e ++enc=utf8
As shown in the previous trick, it is possible to do this from the command line as well:
user $
vim -c ":wq! ++enc=utf8" file.txt
Troubleshooting
I'm trapped in vim!
For someone entering vim without knowing how to use it, it may not be evident how to quit.
Press esc several times, then :, q, enter. To quit without saving, press esc several times, then :, q, !, enter.
If several files are open, try pressing esc several times, then :, q, a, enter. To quit without saving, press esc several times, then :, q, a, !, enter.
If this doesn't help, and desperate measures are needed, something like killall vim may be a last ditch solution (from another terminal). Beware that this will terminate all the vim sessions for a user, without saving. If run as root, such a command will terminate all vim sessions for all users on the system.
See also
- Knowledge Base:Edit a configuration file
- Neovim — a hyperextensible Vim-based text editor.
- Text editor — a program to create and edit text files.
- Vim/Guide — explain basic usage for users new to vi-like text editors in general, and vim in particular.
- Useful plugin: app-vim/gentoo-syntax
External resources
- Vim Documentation Includes Manuals (aka ":help" and Free VIM OPL Book), FAQS, HOWTO's, Tutorials, in HTML PDF, and PS formats.
- A vim Tutorial and Primer - An excellent vim tutorial/primer. Read this first.
- VIM Scripts/Plugins
- Vim for Humans (free ebook) - Clone and cd into the sources directory, mkdir dist, change
sphinx2-build
tosphinx-build
for SPHINXBUILD in rst/en/Makefile. Run ./makedist.sh. Read PDF in ./dist/vimpourleshumains/. - Learning the vi and Vim Editors, 7th Edition O'Reilly Print ISBN: 978-0-596-52983-3, Ebook ISBN: 978-0-596-15935-1
- Vim anti-patterns - A blog entry on maintaining flow with Vim.
- Vim Tips Wiki - Previously known as Wikia, Vim Tips Wiki is now on Fandom.com.
- Vim: Seven habits of effective text editing - A guide written in the year 2000 that still is relevant today!