177 lines
5.2 KiB
VimL
177 lines
5.2 KiB
VimL
" Set up vim
|
|
|
|
" Basic configuration
|
|
set nocompatible
|
|
|
|
set encoding=utf-8
|
|
set binary
|
|
|
|
" Presentation settings
|
|
set number " Precede each line with its line number
|
|
set numberwidth=3 " Number of culumns for line numbers
|
|
set textwidth=0 " Do not wrap words (insert)
|
|
set wrap " Wrap words (view)
|
|
set showcmd " Show (partial) command in status line.
|
|
set showmatch " Show matching brackets.
|
|
set ruler " Line and column number of the cursor position
|
|
set wildmenu " Enhanced command completion
|
|
set visualbell " Use visual bell instead of beeping
|
|
set noerrorbells " Disable error bells"
|
|
set laststatus=2 " Always show the status lines
|
|
set cursorline " Highligh the cursor line
|
|
set t_Co=256 " Use 256 colors
|
|
set background=dark " Use a dark background
|
|
|
|
" Highlight spell errors
|
|
hi SpellErrors guibg=red guifg=black ctermbg=red ctermfg=black
|
|
|
|
" Toggle spell check with F7
|
|
map <F7> :setlocal spell! spell?<CR>
|
|
|
|
" Behavior
|
|
" Ignore these files when completing names and in explorer
|
|
set wildignore=.svn,CVS,.git,.hg,*.o,*.a,*.class,*.mo,*.la,*.so,*.obj,*.swp,*.jpg,*.png,*.xpm,*.gif
|
|
set shell=$SHELL " Use current shell for shell commands
|
|
set hidden " Enable multiple modified buffers
|
|
set history=1000 " History size
|
|
set autoread " Automatically read feil that has been changed on disk and doesn't have changes in vim
|
|
set backspace=indent,eol,start
|
|
set guioptions-=T " Disable toolbar"
|
|
set completeopt=menuone,preview
|
|
set cinoptions=:0,(s,u0,U1,g0,t0 " Some indentation options ':h cinoptions' for details
|
|
set modelines=5 " Number of lines to check for vim: directives at the start/end of file
|
|
set autoindent " AutomaticAlly indent new line
|
|
|
|
" Indentation
|
|
set ts=2 " Number of spaces in a tab
|
|
set sw=2 " Number of spaces for indent
|
|
set et " Expand tabs into spaces
|
|
|
|
" Mouse settings
|
|
if has("mouse")
|
|
set mouse=a
|
|
endif
|
|
set mousehide " Hide mouse pointer on insert mode."
|
|
|
|
" Search settings
|
|
set incsearch " Incremental search
|
|
set nohlsearch " Do not highlight search match
|
|
set ignorecase " Do case insensitive matching
|
|
set smartcase " Do not ignore if search pattern has CAPS
|
|
|
|
" Directory settings
|
|
set nobackup " Do not write backup files
|
|
set noswapfile " Do not write .swp files
|
|
|
|
" Stop here if running in restricted mode
|
|
if v:progname =~? "rvim"
|
|
finish
|
|
endif
|
|
|
|
" Backup settings
|
|
if has("persistent_undo")
|
|
silent !mkdir -vp ~/.backup/vim/undo/ > /dev/null 2>&1
|
|
set backupdir=~/.backup/vim,. " List of directories for the backup file
|
|
set directory=~/.backup/vim,~/tmp,. " List of directory names for the swap file
|
|
set undofile
|
|
set undodir=~/.backup/vim/undo/,~/tmp,.
|
|
endif
|
|
|
|
" Folding
|
|
if has("folding")
|
|
set foldcolumn=0 " Columns for folding
|
|
set foldmethod=indent
|
|
set foldlevel=9
|
|
set nofoldenable " Don't fold by default
|
|
endif
|
|
|
|
if has("user_commands")
|
|
let mapleader = ","
|
|
let maplocalleader = "\\"
|
|
endif
|
|
|
|
" Remember last position in file
|
|
if has("autocmd")
|
|
autocmd BufReadPost *
|
|
\ if line("'\"") > 0 && line("'\"") <= line("$") |
|
|
\ exe "normal g`\"" |
|
|
\ endif
|
|
endif
|
|
|
|
" In this house we obey the laws of airline
|
|
let g:airline_powerline_fonts = 1
|
|
let g:airline_enable_fugitive = 1
|
|
let g:airline_theme = 'base16'
|
|
|
|
" Use Q for formatting
|
|
map Q gq
|
|
|
|
" In many terminal emulators the mouse works just fine, thus enable it.
|
|
if has('mouse')
|
|
set mouse=a
|
|
endif
|
|
|
|
if has("autocmd")
|
|
" Put these in an autocmd group, so that we can delete them easily.
|
|
augroup vimrcEx
|
|
au!
|
|
|
|
" For all text files set 'textwidth' to 78 characters.
|
|
autocmd FileType text setlocal textwidth=78
|
|
|
|
" When editing a file, always jump to the last known cursor position.
|
|
" Don't do it when the position is invalid or when inside an event handler
|
|
" (happens when dropping a file on gvim).
|
|
" Also don't do it when the mark is in the first line, that is the default
|
|
" position when opening a file.
|
|
autocmd BufReadPost *
|
|
\ if line("'\"") > 1 && line("'\"") <= line("$") |
|
|
\ exe "normal! g`\"" |
|
|
\ endif
|
|
|
|
augroup END
|
|
|
|
" Makefile sanity
|
|
autocmd BufEnter ?akefile* set noet ts=8 sw=8
|
|
autocmd BufEnter */debian/rules set noet ts=8 sw=8
|
|
endif " has("autocmd")
|
|
|
|
" Various options
|
|
set shortmess+=I " Don't show the intro message when starting vim
|
|
set complete+=k " Scan files with the 'dictionary' option
|
|
set completeopt+=longest
|
|
set scrolloff=15 " Minimal number of screen lines above/below the cursor
|
|
set linebreak " Wrap long lines at a blank
|
|
|
|
|
|
if has("syntax")
|
|
syntax on " Enable syntax highlighting
|
|
filetype plugin indent on
|
|
endif
|
|
|
|
:noremap k gk
|
|
:noremap j gj
|
|
|
|
"" Take care of screen/tmux settings
|
|
if &term =~ '^screen'
|
|
" tmux will send xterm-style keys when its xterm-keys option is on
|
|
execute "set <xUp>=\e[1;*A"
|
|
execute "set <xDown>=\e[1;*B"
|
|
execute "set <xRight>=\e[1;*C"
|
|
execute "set <xLeft>=\e[1;*D"
|
|
endif
|
|
|
|
" base16 color theme
|
|
let base16colorspace=256
|
|
colorscheme base16-solarized-dark
|
|
|
|
" Python-black
|
|
if has("python3")
|
|
packadd black
|
|
endif
|
|
|
|
" ALE conflicts with typescript-vim at the moment
|
|
if ! &ft=="typescript"
|
|
packadd ale
|
|
endif
|