1---
2title: "Personal sane Vim defaults"
3url: apersonal-sane-vim-defaults.html
4date: 2023-11-07T01:04:28+02:00
5type: note
6draft: false
7tags: [vim]
8---
9
10I have found many "sane" default configs on the net and this is my favorite
11personal list. This is how my `.vimrc` file looks like.
12
13[Updated version is available on GitHub.](https://github.com/mitjafelicijan/dotfiles/blob/master/vimrc)
14
15```vimrc
16" General sane defaults.
17syntax enable
18colorscheme sorbet
19nnoremap q: <nop>
20set nocompatible
21set relativenumber
22set nohlsearch
23set smartcase
24set ignorecase
25set incsearch
26set autoindent
27set nowrap
28set nobackup
29set noswapfile
30set autoread
31set wildmenu
32set encoding=utf8
33set backspace=2
34set scrolloff=4
35set spelllang=en_us
36
37" Status Line enhancements.
38set laststatus=2
39set statusline=%f%m%=%y\ %{strlen(&fenc)?&fenc:'none'}\ %l:%c\ %L\ %P
40hi StatusLine cterm=NONE ctermbg=black ctermfg=brown
41hi StatusLineNC cterm=NONE ctermbg=black ctermfg=darkgray
42
43" Commenting blocks of code.
44augroup commenting_blocks_of_code
45 autocmd!
46 autocmd FileType c,cpp,go,scala let b:comment_leader = '// '
47 autocmd FileType sh,ruby,python let b:comment_leader = '# '
48 autocmd FileType conf,fstab let b:comment_leader = '# '
49 autocmd FileType lua let b:comment_leader = '-- '
50 autocmd FileType vim let b:comment_leader = '" '
51augroup END
52noremap <silent> ,cc :<C-B>silent <C-E>s/^/<C-R>=escape(b:comment_leader,'\/')<CR>/<CR>:nohlsearch<CR>
53noremap <silent> ,cu :<C-B>silent <C-E>s/^\V<C-R>=escape(b:comment_leader,'\/')<CR>//e<CR>:nohlsearch<CR>
54
55" Language specific indentation.
56filetype plugin indent on
57autocmd Filetype make,go,c,cpp setlocal noexpandtab tabstop=4 shiftwidth=4
58autocmd Filetype html,js,css setlocal expandtab tabstop=2 shiftwidth=2
59```
60
61I keep it pretty vanilla so this is about everything I have in the file.
62