====== ~/.vimrc ====== My ''.vimrc'': filetype on " Auto-detect filetype filetype plugin indent on " Auto-indent set expandtab " No TABs... autocmd FileType make set noexpandtab " ...except in Makefiles autocmd FileType cpp set keywordprg=cppman " Using cppman for 'K' keyword help in C++ files autocmd BufWritePost *.c,*.h,*.cs silent! !ctags . & " Ctrl-], Ctrl-t " If some system gives you problems with encodings and you suspect a " broken Vim setup, try uncommenting this. "set encoding=utf-8 set shiftwidth=4 " 1 indent = 4 spaces set tabstop=4 " 1 TAB = 4 columns set ruler " Display cursor position set laststatus=2 " Display status line "set statusline=%F%m%r%h%w\ [FORMAT=%{&ff},%{&fenc}]\ [TYPE=%Y]\ F2-Paste,\ F8-Tags\ %=[COL=%03v][ROW=%04l/%04L]\ %03p%% set statusline=%F%m%r%h%w\ %=[%{&fenc}][C%03v][R%04l/%04L] set listchars=tab:>-,trail:·,nbsp:»,extends:# " How to display whitespaces set list " Display whitespaces syntax on " Syntax highlighting color koehler " Color scheme set background=dark " Contrast for on-black xterms (which I prefer) set wrap " Wrap long lines set showmatch " Briefly jump to opening brace set vb t_vb= " Disable terminal beeps set incsearch " Incremental search (remember to press when done) set scrolloff=3 " Keep 3 lines above / below cursor when scrolling "set spell " Spellchecker on (]s - next word, zg - add good, zug - undo add, z= - suggest, " :spellr(epall) - replace all occurences) setlocal spelllang=de " Setting language for spellchecker set mouse=a " Enable mouse support for all modes set pastetoggle= " Toggle 'paste' mode to en-/disable auto-formatting of pasted text set tags=./tags;$HOME highlight ColorColumn ctermbg=magenta call matchadd( 'ColorColumn', '\%76v', 100 ) " Set a 'warning' highlight on column 76 set hlsearch " Highlight search matches " 'hlsearch' makes it hard to tell which is the *current* match, so we " do some trickery to highlight that one in a special way (flashing for " 0.4 seconds). " function to flash the current match a number of times function! HLNext (blink) let [bufnum, lnum, col, off] = getpos('.') let matchlen = strlen(matchstr(strpart(getline('.'),col-1),@/)) let target_pat = '\c\%#\%('.@/.'\)' let i = 1 while i < a:blink exec 'sleep 50m' let ring = matchadd('Comment', target_pat, 101) redraw exec 'sleep 50m' call matchdelete(ring) redraw let i += 1 endwhile endfunction " Rewire n and N to step-and-call-function " Disabled by default because, if you step through many matches often, " the blink delay can slow you down considerably. "nnoremap n n:call HLNext(5) "nnoremap N N:call HLNext(5) " Settings for vim-taglist (http://vim-taglist.sourceforge.net) nnoremap :TlistToggle " F8 toggles taglist let g:Tlist_GainFocus_On_ToggleOpen = 1 " ...give focus... let g:Tlist_Exit_OnlyWindow = 1 " ...exit if last window open... let g:Tlist_Use_Right_Window = 1 " ...open taglist to the right... let g:Highlight_Tag_On_BufEnter = 1 " ...highlight tag when entering buffer... let g:Tlist_Auto_Open = 0 " ...do not open by default... let g:Tlist_Auto_Update = 1 " ...update automatically... let g:Tlist_Show_One_File = 0 " ...show all open files... let g:Tlist_Enable_Fold_Column = 0 " ...disable folding... let g:Tlist_Use_SingleClick = 1 " ...enable jump-on-click... " Settings for vim-latex (http://vim-latex.sourceforge.net) set shellslash " Convert backward slashes to forward ones in filename references set grepprg=grep\ -nH\ $* " Force grep to display file name even in single-file searches let g:tex_flavor='latex' " Force .tex to mean LaTeX, not plain TeX let g:Tex_SmartQuoteOpen = "``" " Opening quote, English style (German would be "\"`") let g:Tex_SmartQuoteClose = "''" " Closing quote, English style (German would be "\"'") let g:Tex_AutoFolding = 0 " Do not fold on opening file let g:Tex_Env_table = "\\begin{table}\\\caption{<++>}\\\label{tab:<++>}\\\begin{tabularx}{<+width+>}{<+columns+>}\\\hline\<++>\\\hline\\\end{tabularx}\\\end{table}<++>" let g:Tex_Env_list = "\\begin{lstlisting}[<++>]\<++>\\\end{lstlisting}<++>" " list gives lstlisting environment let g:Tex_Com_list = "\\lstinline{<++>}<++>" " list gives lstinline command " Workaround for Gnome-Terminal bug showing >4;m escape sequence set keyprotocol = "" let &term = &term My .gvimrc: highlight Normal guifg=green guibg=black " Colors as I like them set guifont=Monospace\ 10 " The default font sucks set lines=50 columns=150 " Just for example " From https://vim.fandom.com/wiki/Restore_screen_size_and_position if has("gui_running") function! ScreenFilename() if has('amiga') return "s:.vimsize" elseif has('win32') return $HOME.'\_vimsize' else return $HOME.'/.vimsize' endif endfunction function! ScreenRestore() " Restore window size (columns and lines) and position " from values stored in vimsize file. " Must set font first so columns and lines are based on font size. let f = ScreenFilename() if has("gui_running") && g:screen_size_restore_pos && filereadable(f) let vim_instance = (g:screen_size_by_vim_instance==1?(v:servername):'GVIM') for line in readfile(f) let sizepos = split(line) if len(sizepos) == 5 && sizepos[0] == vim_instance silent! execute "set columns=".sizepos[1]." lines=".sizepos[2] silent! execute "winpos ".sizepos[3]." ".sizepos[4] return endif endfor endif endfunction function! ScreenSave() " Save window size and position. if has("gui_running") && g:screen_size_restore_pos let vim_instance = (g:screen_size_by_vim_instance==1?(v:servername):'GVIM') let data = vim_instance . ' ' . &columns . ' ' . &lines . ' ' . \ (getwinposx()<0?0:getwinposx()) . ' ' . \ (getwinposy()<0?0:getwinposy()) let f = ScreenFilename() if filereadable(f) let lines = readfile(f) call filter(lines, "v:val !~ '^" . vim_instance . "\\>'") call add(lines, data) else let lines = [data] endif call writefile(lines, f) endif endfunction if !exists('g:screen_size_restore_pos') let g:screen_size_restore_pos = 1 endif if !exists('g:screen_size_by_vim_instance') let g:screen_size_by_vim_instance = 1 endif autocmd VimEnter * if g:screen_size_restore_pos == 1 | call ScreenRestore() | endif autocmd VimLeavePre * if g:screen_size_restore_pos == 1 | call ScreenSave() | endif endif My .vim/after/syntax/tex/lstlisting.vim: " To keep Vim from trying to syntax-highlight included source as LaTeX " (http://stackoverflow.com/a/21651323/60281) syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" syn region texZone start="\\lstinputlisting" end="{\s*[a-zA-Z/.0-9_^]\+\s*}" syn match texInputFile "\\lstinline\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt My .vim/indent/tex.vim: let b:did_indent = 1 " Disable indenting for LaTeX files