Vim Tricks
Hier werden nützliche und coole Vim Befehle gesammelt mit den man sich schnell durch eine Datei bewegen und Text ändern kann. Weiter unten ist ein Beispiel für die Konfigurationsdatei vimrc gegeben, die als Basis zum Konfigurieren von Vim genutzt werden kann.
Bewegung durch den Text
0: Springe zum Zeilenanfang
_: Springe zum ersten Wort in der Zeile
$: Springe zum Ende der Zeile
w: word - Springe zum nächsten Wort (getrennt von Whitespace und Sonderzeichen)
W: Word - Springe zum nächsten Wort (getrennt von Whitespace)
b: back - Springe zum vorherigen Wort (getrennt von Whitespace und Sonderzeichen)
B: Back - Springe zum vorherigen Wort (getrennt von Whitespace)
e: end - Springe zum nächsten Ende eines Wortes (getrennt von Whitespace)
E: End - Springe zum nächsten Ende eines Wortes (getrennt von Whitespace)
fx: find x - Springe zum nächsten x in der Zeile. x kann jedes Symbol sein
Fx: Find x - Springe zum vorherigen x in der Zeile. x kann jedes Symbol sein
tx: till x - Springe genau vor das nächsten x in der Zeile. x kann jedes Symbol sein
Editieren von Text
dw: delete word - Vom Curser bis zum Ende des Wortes
löschendiw: delete inside word - Vom Anfang des Wortes bis zum
Ende des Wortes löschendi(: delete inside parenthesis - Alles innerhalb der
Klammern, in der sich der Cursor befindet, löschen. Das gleiche funktioniert mit {, [, <.dit: delete inside tag - Alles innerhalb von XML Tags löschenAlle Kommandos mit
d für delete funktionieren auch mit
c für change. Damit wird ein Text gelöscht und danach
direkt in den Insert-Mode gewechselt um ihn zu ersetzen.delete und change können auch mit find und till find kombiniert werden:
df-: delete find : - Lösche vom Cursor bis einschließlich dem nächsten :ct.: change till . - Ändere den Rest des Satzes aber behalte den Punkti: insert - Vor dem Cursor in den Insert-Mode wechselnI: Insert - Am Anfang der Zeile in den Insert-Mode wechselna: append - Nach dem Cursor in den Insert-Mode wechselnA: Append - Am Ende der Zeile in den Insert-Mode wechselno: new line - Neue Zeile unterm Cursor einfügen und dort in den Insert-Mode wechselnO: new line - Neue Zeile überm Cursor einfügen und dort in den Insert-Mode wechselngq: format - Formatiere den markierten Textgqq: format line - Formatiere die aktuelle Zeilegq2j: format 2 down - Formatiere diese und die 2
nächsten ZeilenBearbeiten von mehreren Zeilen
Mit Ctrl+v in den Visual Block Modus wechseln und einen Block selektieren. Jetzt kann vor dem Block inserted oder nach dem Block appended werden:I: Insert - Insert in every line at the start of
the blockA: Append - Append to every line at the end of
the blockKonfigurationsdatei .vimrc
Die Datei vimrc ist die zentrale Konfigurationsdatei für Vim. Sie liegt meistens unter $HOME/.vimrc oder $/HOME/.vim/vimrc. Hier können Einstellungen wie Tabs vs Spaces, Zeilennummern und Custom Keybindings eingerichtet werden oder sogar Plugins eingefügt werden. Eine Beispiel Konfiguration:
set nocompatible
set notermguicolors " term is recognized as gui, prevent colorchange
set encoding=utf-8
set mouse= " disable the mouse
set visualbell " set bell to visual instead of audio
set t_vb= " set visual bell to nothing
" Indenting
filetype plugin indent on
set autoindent " Copy indent from current line when starting a new line
set smartindent " Do smart autoindenting when starting a new line
set smarttab " A <Tab> in front of a line inserts 'shiftwidth' blanks
set tabstop=4 " Number of spaces that a <Tab> in the file counts for
set shiftwidth=4 " Number of spaces to use for each step of (auto)indent.
set expandtab " Use spaces for <Tab>
" You can get rid of tabs by having 'expandtab' set and using the command :%retab!
set backspace=indent,eol,start " allow backspace over autoindent, line breaks, beginning of insert
" Quality of Life
set number " show line numbers
set relativenumber " show linenumbers as relative to current line
set scrolloff=5 " number of lines that are kept visible above and below the cursor
set textwidth=100 " A line will be broken after white space to get this width (disable with 0)
" set colorcolumn=100 " insert a warning line to keep your lines short
" set showmatch " when inserting a bracket, jump to the matching one for a short time
set showmode " show mode in bottom left corner
set showcmd " show command in bottom left corner
" Rendering
" set ttyfast " If you have a slow connection you may want to set this option off
" set list " Show special characters defined in listchars (set nolist)
set listchars=tab:▸\ ,eol:¬
syntax on " Syntax highlighting according to the current value of the 'filetype' option
" Search settings
set hlsearch " search results stay highlighted
set incsearch " highlight search while typing
set ignorecase " ignore case when searching
set smartcase " ignore case only when searching for lower case letters
" How to do 90% of what Plugins do with just Vim (Youtube Video)
" 'Fuzzy Finder' with :find command (looking in path, wildmenu to display all matches when using
" wildcard *
set path+=**
set wildmenu
" Custom Keybindings
" set leader to space
nnoremap <SPACE> <Nop>
let mapleader=" "
nnoremap <Esc> <cmd>nohlsearch<CR> " Remove search highlighting with <Esc>
nnoremap <Leader>pv :Ex<CR> " project view
nnoremap <Leader>bn :bn!<CR> " buffer next
nnoremap <Leader>bp :bp!<CR> " buffer previous
nnoremap <Leader>bv :bp!<CR> " buffer previous
nnoremap <Leader>bb :buffers<CR>:b<Space> " list all buffers and and type number to open
noremap <C-u> <C-u>zz " scroll half page and center on cursor
noremap <C-d> <C-d>zz " scroll half page and center on cursor
" write with sudo tee trick - asks for password, which does not work in NeoVim :(
cnoremap w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit!