VIM Cheat Sheet

VIM Tutor

kopieren / einfügen

Befehl Taste(n) Eselbrücke
löschen(Entf) x,X x=unter Cursor, X=vor Cursor
einfügen i,I Insert(I = Zeilenanfang)
(Am Ende) Einfügen a,A Append(A=Zeilenende)
copy y / yy /:y2y2w, y3w,… yy= Zeile, 5yy/:y5= 5 Zeilen
put(Register einfügen)p,P put(p unter, P Über)
ersetzen r / R replace
löschen bis wortende ce change end
löschen bis Zeilenendec$
Wort löschen dw / de del word / del end
Bis Zeilenende löschend$ del Dollar
Wörter löschen d2w del 2 words
(2)Zeile löschen (2)dd /:d2
Neue Zeile o/O unter/über
Zeile(n) verbinden J
undo u/U last Command/Last Zeile
Reundo STRG+R

lesen / speichern

Befehl Taste(n) Eselbrücke
Speicher und Ende :wq , :x Write+Quit
Ende ohne Speichern :q! Quit!
Befehl in Shell ausführen:!<Befehl>
Speichern :w <Filename>
Auswahl speichern ,<,>,w: <NAME>Visualmode
Datei einfügen :r <Filename> read
Datei öffnen :e <Filename> edit
Shellausgabe in File :r !<Befehl>

Bewegen / springen

Befehl Taste(n) Eselbrücke
Bewegen h,j,k,l
Springen 2w, 3e, 0 2 wörter, 3wörter ende, Zeilenanfang zero
Sprung Datei Ende G
Sprung Anfang Dateigg
Positionanzeige STRG + G
Sprung Postion Nr+G /:Nummer

Suchen und ersetzen

Befehl Taste(n) Eselbrücke
Suchen / oder ?
Suchen vor/zur n oder N next
Zurück zum letzten SprungCTRL + O/ I
Klammerende finden %
Suchen/Ersetzen (%)s/old/new/search/o/n/g g für gobal,%hole file

Visual mode

Befehl Taste(n) Eselbrücke
VISUAL mode (V)
VISUAL BLOCK mode (Ctrl+V)
VISUAL LINE mode (Shift+V)
suchen/ersetzen auswählen→ :s/old/new/g ‘<,’> = Bereich, wird automatisch gesetzt
Copy&Paste v → markieren → y →p
autocomplete STRG+P
multi-line kommentarShift-V → Zeilen markieren → Shift I → # → ESC
Anfang Ersetzen Strg-V → Block markieren → c → “Text” → ESC
Code Block intent Shift-V → Block markieren → “<” oder “>” Enter (Externer Link

Optionen und EInstellungen

Befehl Taste(n) Eselbrücke
GroßKleinschr aus set (no)ic Ignore Case
Search Highlight set (no)hls highlight search
Teilweise suche set is
hilfe :help
VIM konfigurieren .vimrc
Autokompletion :<Befehl> STRG+D/Tab
Optionen set: … number, syntax on, paste, nowrap,autointend,…
Command History q: commands
Fenster teilenn :split :tabe :new :vnew linklink2
Zwischen split Fenster wechselnSTRG w + h,j,k,l strg w + hoch, runter,links,rechts
Color/Fabr Scheme/Theme :colorscheme delek

Plugins - Scripte - Lösungen

Multiline Comment

https://unix.stackexchange.com/questions/120615/how-to-comment-multiple-lines-at-once * v(visual mode) → markieren →:s/^/#/ (Zeilenanfang suchen und # setzen)

 * STRG+V -> markieren -> j (Blockende) -> STRG +I -> # -> ESC
 * Entfernen: STRG+V -> markieren -> j (Blockende) -> STRG +X -> # -> ESC
 * :(ZeilnrAnfang),(ZeilennummerEnde)s/^/#
Autocomplete

https://vim.fandom.com/wiki/Omni_completion filetype plugin on set omnifunc=syntaxcomplete#Complete

verschiedene Vim configs
keine einrückung / intent bei copy und paste

https://stackoverflow.com/a/2514520

: set paste
: set nopaste

#vimrc
set pastetoggle=<F3>

Vim-RC

https://shapeshed.com/vim-netrw/

" Pathogen (Sowas Addon Manager)
call pathogen#infect()
 
" Erweiterte Vi-Funktionen erlauben:
set nocompatible
 
 
""""""""""""""""Themes und Ausehen """"""""""
"Colorscheme
colorscheme koehler
" Syntax-Highlight anschalten:
syntax on
" Zeilennummern
set number
 
 
""""""Dateibehandlung"""""""""""
" Text- und Datei-Encodierung auf UTF-8 setzen:
set encoding=utf-8
set fileencoding=utf-8
filetype on " Dateityp-Erkennung aktivieren:
" Einrückungen und Plugins nach Dateityp aktivieren:
filetype indent on
filetype plugin on
" Erstelle einen Backup von jeder geöffneten Datei im Backup-Verzeichnis:
"set backup
"set backupdir=$HOME/.vim/backupdir
 
""""""""Bedienung """""""""""""""""""
" Maus-Unterstützung in allen Vim-Modi erlauben:
set mouse=a
" make backspaces more powerfull
set backspace=indent,eol,start
 
" Verwende beim Kopieren/Einfügen die systemweite Zwischenablage ("*):
set clipboard+=unnamed
"set pastetoggle=<F2>
 
 
""""""""""""Suche""""""""""""""""""""""""""""""""""""""
" Hebe Suchergebnisse durch Highlighting hervor:
set hlsearch
" Ignoriere Groß-/Kleinschreibung bei der Suche:
set ignorecase
" Suche bereits während der Eingabe des Suchstrings:
set incsearch
" Führe die Suche am Anfang der Datei fort, wenn das Ende erreicht ist:
set wrapscan
 
 
"""""""""""""""""Statuszeile """""""""""""""""""""""""""""""""
" Zeige die Statuszeile permanent an:
set laststatus=2
" Zeige rechts in der Info-Zeile die markierte(n) Zeichen/Zeilen an:
set showcmd
" Zeige den aktuellen Modus an:
set showmode
 
 
" Hebe zugehörige Klammern durch Highlighting hervor:
set showmatch
 
""""""""""Quelltextbehandlung """""""""""""""""
" Aktiviere automatische Einrückungen:
set smartindent
" Aktiviere automatischen Texteinzug:
"set smarttab
"Setze die Breite bei Einrückungen mit < und > auf 4:
set softtabstop=4
" Setze die Breite eines Tab-Zeichens auf 4:
set tabstop=4
" Lege die maximale Textweite je Zeile fest:
set textwidth=79
" Erlaube Tab-Vervollständigung in der Kommandozeile
set wildmenu
" expand tabs into spaces
set expandtab
set shiftwidth=4
set shiftround
 
""""""""""Dateibau """"""""""""""""""
""Nerdtreelike
"let g:netrw_banner = 0
"let g:netrw_liststyle = 3
"let g:netrw_browse_split = 4
"let g:netrw_altv = 1
"let g:netrw_winsize = 20
"augroup ProjectDrawer
"  autocmd!
"  autocmd VimEnter * :Vexplore
"augroup END
 
 
"""Python-IDE"""
""Quelle: https://github.com/mbrochh/vim-as-a-python-ide/blob/master/.vimrc
" Settings for ctrlp
let g:ctrlp_max_height = 30
set wildignore+=*.pyc
set wildignore+=*_build/*
set wildignore+=*/coverage/*
 
" Settings for jedi-vim
let g:jedi#usages_command = "<leader>z"
let g:jedi#popup_on_dot = 0
let g:jedi#popup_select_first = 0
map <Leader>b Oimport ipdb; ipdb.set_trace() # BREAKPOINT<C-c>
 
" Better navigating through omnicomplete option list
" See http://stackoverflow.com/questions/2170023/how-to-map-keys-for-popup-menu-in-vim
set completeopt=longest,menuone
function! OmniPopup(action)
    if pumvisible()
        if a:action == 'j'
            return "<C-N>"
        elseif a:action == 'k'
            return "<C-P>"
        endif
    endif
    return a:action
endfunction
 
inoremap <silent><C-j> <C-R>=OmniPopup('j')<CR>
inoremap <silent><C-k> <C-R>=OmniPopup('k')<CR>
 
" Python folding
"" set nofoldenable
 
" Useful settings
"" set history=700
"" set undolevels=700
 
"""""Was war das noochmal?????
au BufEnter,BufNewFile *.py         noremap <F2> :VoomToggle python<CR>
 
""Apt
"sudo apt install vim-addon-manager vim-airline vim-airline-themes vim-ctrlp vim-syntastic vim-youcompleteme vim-python-jedi vim-pathogen vim-scripts vim-nox vim-voom flake8
 
"""""Braucht man das bei Patogen noch?
""Addons
"vam install youcompletme
"vam install python-jedi
"vam install syntastic
"vam install airline
"vam install airline-temes

Python mit VIM

Python mit neovim