2016-05-13 08:23:58 +01:00
|
|
|
|
" URL: http://vim.wikia.com/wiki/Example_vimrc
|
|
|
|
|
" Authors: http://vim.wikia.com/wiki/Vim_on_Freenode
|
|
|
|
|
" Description: A minimal, but feature rich, example .vimrc. If you are a
|
|
|
|
|
" newbie, basing your first .vimrc on this file is a good choice.
|
|
|
|
|
" If you're a more advanced user, building your own .vimrc based
|
|
|
|
|
" on this file is still a good idea.
|
|
|
|
|
|
|
|
|
|
"------------------------------------------------------------
|
|
|
|
|
" Features {{{1
|
|
|
|
|
"
|
|
|
|
|
" These options and commands enable some very useful features in Vim, that
|
|
|
|
|
" no user should have to live without.
|
|
|
|
|
|
|
|
|
|
" Set 'nocompatible' to ward off unexpected things that your distro might
|
|
|
|
|
" have made, as well as sanely reset options when re-sourcing .vimrc
|
|
|
|
|
set nocompatible
|
|
|
|
|
|
|
|
|
|
" Attempt to determine the type of a file based on its name and possibly its
|
|
|
|
|
" contents. Use this to allow intelligent auto-indenting for each filetype,
|
|
|
|
|
" and for plugins that are filetype specific.
|
|
|
|
|
filetype indent plugin on
|
|
|
|
|
|
|
|
|
|
" Enable syntax highlighting
|
|
|
|
|
syntax on
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"------------------------------------------------------------
|
|
|
|
|
" Must have options {{{1
|
|
|
|
|
"
|
|
|
|
|
" These are highly recommended options.
|
|
|
|
|
|
|
|
|
|
" Vim with default settings does not allow easy switching between multiple files
|
|
|
|
|
" in the same editor window. Users can use multiple split windows or multiple
|
|
|
|
|
" tab pages to edit multiple files, but it is still best to enable an option to
|
|
|
|
|
" allow easier switching between files.
|
|
|
|
|
"
|
|
|
|
|
" One such option is the 'hidden' option, which allows you to re-use the same
|
|
|
|
|
" window and switch from an unsaved buffer without saving it first. Also allows
|
|
|
|
|
" you to keep an undo history for multiple files when re-using the same window
|
|
|
|
|
" in this way. Note that using persistent undo also lets you undo in multiple
|
|
|
|
|
" files even in the same window, but is less efficient and is actually designed
|
|
|
|
|
" for keeping undo history after closing Vim entirely. Vim will complain if you
|
|
|
|
|
" try to quit without saving, and swap files will keep you safe if your computer
|
|
|
|
|
" crashes.
|
|
|
|
|
set hidden
|
|
|
|
|
|
|
|
|
|
" Note that not everyone likes working this way (with the hidden option).
|
|
|
|
|
" Alternatives include using tabs or split windows instead of re-using the same
|
|
|
|
|
" window as mentioned above, and/or either of the following options:
|
|
|
|
|
" set confirm
|
|
|
|
|
" set autowriteall
|
|
|
|
|
|
|
|
|
|
" Better command-line completion
|
|
|
|
|
set wildmenu
|
|
|
|
|
|
|
|
|
|
" Show partial commands in the last line of the screen
|
|
|
|
|
set showcmd
|
|
|
|
|
|
|
|
|
|
" Highlight searches (use <C-L> to temporarily turn off highlighting; see the
|
|
|
|
|
" mapping of <C-L> below)
|
|
|
|
|
set hlsearch
|
|
|
|
|
|
|
|
|
|
" Modelines have historically been a source of security vulnerabilities. As
|
|
|
|
|
" such, it may be a good idea to disable them and use the securemodelines
|
|
|
|
|
" script, <http://www.vim.org/scripts/script.php?script_id=1876>.
|
|
|
|
|
" set nomodeline
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"------------------------------------------------------------
|
|
|
|
|
" Usability options {{{1
|
|
|
|
|
"
|
|
|
|
|
" These are options that users frequently set in their .vimrc. Some of them
|
|
|
|
|
" change Vim's behaviour in ways which deviate from the true Vi way, but
|
|
|
|
|
" which are considered to add usability. Which, if any, of these options to
|
|
|
|
|
" use is very much a personal preference, but they are harmless.
|
|
|
|
|
|
|
|
|
|
" Use case insensitive search, except when using capital letters
|
|
|
|
|
set ignorecase
|
|
|
|
|
set smartcase
|
|
|
|
|
|
|
|
|
|
" Allow backspacing over autoindent, line breaks and start of insert action
|
|
|
|
|
set backspace=indent,eol,start
|
|
|
|
|
|
|
|
|
|
" When opening a new line and no filetype-specific indenting is enabled, keep
|
|
|
|
|
" the same indent as the line you're currently on. Useful for READMEs, etc.
|
|
|
|
|
set autoindent
|
|
|
|
|
|
|
|
|
|
" Stop certain movements from always going to the first character of a line.
|
|
|
|
|
" While this behaviour deviates from that of Vi, it does what most users
|
|
|
|
|
" coming from other editors would expect.
|
|
|
|
|
set nostartofline
|
|
|
|
|
|
|
|
|
|
" Display the cursor position on the last line of the screen or in the status
|
|
|
|
|
" line of a window
|
|
|
|
|
set ruler
|
|
|
|
|
|
|
|
|
|
" Always display the status line, even if only one window is displayed
|
|
|
|
|
set laststatus=2
|
|
|
|
|
|
|
|
|
|
" Instead of failing a command because of unsaved changes, instead raise a
|
|
|
|
|
" dialogue asking if you wish to save changed files.
|
|
|
|
|
set confirm
|
|
|
|
|
|
|
|
|
|
" Use visual bell instead of beeping when doing something wrong
|
|
|
|
|
set visualbell
|
|
|
|
|
|
|
|
|
|
" And reset the terminal code for the visual bell. If visualbell is set, and
|
|
|
|
|
" this line is also included, vim will neither flash nor beep. If visualbell
|
|
|
|
|
" is unset, this does nothing.
|
|
|
|
|
set t_vb=
|
|
|
|
|
|
|
|
|
|
" Enable use of the mouse for all modes
|
|
|
|
|
set mouse=a
|
|
|
|
|
|
|
|
|
|
" Set the command window height to 2 lines, to avoid many cases of having to
|
|
|
|
|
" "press <Enter> to continue"
|
|
|
|
|
set cmdheight=2
|
|
|
|
|
|
|
|
|
|
" Display line numbers on the left
|
|
|
|
|
set number
|
|
|
|
|
|
|
|
|
|
" Quickly time out on keycodes, but never time out on mappings
|
|
|
|
|
set notimeout ttimeout ttimeoutlen=200
|
|
|
|
|
|
|
|
|
|
" Use <F11> to toggle between 'paste' and 'nopaste'
|
|
|
|
|
set pastetoggle=<F11>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"------------------------------------------------------------
|
|
|
|
|
" Indentation options {{{1
|
|
|
|
|
"
|
|
|
|
|
" Indentation settings according to personal preference.
|
|
|
|
|
|
|
|
|
|
" Indentation settings for using 4 spaces instead of tabs.
|
|
|
|
|
" Do not change 'tabstop' from its default value of 8 with this setup.
|
|
|
|
|
set shiftwidth=4
|
|
|
|
|
set softtabstop=4
|
|
|
|
|
set expandtab
|
|
|
|
|
|
|
|
|
|
" Indentation settings for using hard tabs for indent. Display tabs as
|
|
|
|
|
" two characters wide.
|
|
|
|
|
"set shiftwidth=2
|
|
|
|
|
"set tabstop=2
|
|
|
|
|
|
2017-03-18 14:35:03 +00:00
|
|
|
|
" Force the cursor onto a new line after 80 characters
|
|
|
|
|
set textwidth=80
|
|
|
|
|
set colorcolumn=81
|
|
|
|
|
" However, in Git commit messages, let’s make it 72 characters
|
|
|
|
|
autocmd FileType gitcommit set textwidth=72
|
|
|
|
|
autocmd FileType gitcommit set colorcolumn=73
|
2016-05-13 08:23:58 +01:00
|
|
|
|
|
|
|
|
|
"------------------------------------------------------------
|
|
|
|
|
" Mappings {{{1
|
|
|
|
|
"
|
|
|
|
|
" Useful mappings
|
|
|
|
|
|
|
|
|
|
" Map Y to act like D and C, i.e. to yank until EOL, rather than act as yy,
|
|
|
|
|
" which is the default
|
|
|
|
|
map Y y$
|
|
|
|
|
|
|
|
|
|
" Map <C-L> (redraw screen) to also turn off search highlighting until the
|
|
|
|
|
" next search
|
|
|
|
|
nnoremap <C-L> :nohl<CR><C-L>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"------------------------------------------------------------
|
|
|
|
|
" Personal settings
|
|
|
|
|
" Pathogen for plugins
|
|
|
|
|
execute pathogen#infect()
|
|
|
|
|
execute pathogen#helptags()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" Colour schemes
|
|
|
|
|
set background=dark
|
|
|
|
|
"let g:solarized_termtrans=1
|
|
|
|
|
"let g:solarized_termcolors=256
|
|
|
|
|
"let g:solarized_contrast="high"
|
|
|
|
|
"let g:solarized_visibilty="high"
|
|
|
|
|
colorscheme solarized
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" syntastic settings from the readme
|
|
|
|
|
set statusline+=%#warningmsg#
|
|
|
|
|
set statusline+=%{SyntasticStatuslineFlag()}
|
|
|
|
|
set statusline+=%*
|
|
|
|
|
|
|
|
|
|
let g:syntastic_always_populate_loc_list = 1
|
|
|
|
|
let g:syntastic_auto_loc_list = 1
|
|
|
|
|
let g:syntastic_check_on_open = 1
|
|
|
|
|
let g:syntastic_check_on_wq = 0
|
|
|
|
|
" php syntastic options
|
|
|
|
|
" order of checking
|
|
|
|
|
let g:syntastic_php_checkers = ['php', 'phpcs', 'phpmd']
|
|
|
|
|
let g:syntastic_php_phpcs_args = '--standard=PSR2'
|
|
|
|
|
|
|
|
|
|
" Let’s use Vim properly, no arrow keys
|
|
|
|
|
nnoremap <Up> :echomsg "use k"<cr>
|
|
|
|
|
nnoremap <Down> :echomsg "use j"<cr>
|
|
|
|
|
nnoremap <Left> :echomsg "use j"<cr>
|
|
|
|
|
nnoremap <Right> :echomsg "use l"<cr>
|
|
|
|
|
|
|
|
|
|
" Keymap to open NERDtree
|
|
|
|
|
map <C-n> :NERDTreeToggle<cr>
|
|
|
|
|
" Autoclose when NERDtree is the last buffer
|
|
|
|
|
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
|
|
|
|
|
" Allow the use of `vim` to open a “project”
|
|
|
|
|
autocmd StdinReadPre * let s:std_in=1
|
|
|
|
|
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
|
|
|
|
|
" NERDtree file highlighting
|
|
|
|
|
function! NERDTreeHighlightFile(extension, fg, bg, guifg, guibg)
|
|
|
|
|
exec 'autocmd filetype nerdtree highlight ' . a:extension .' ctermbg='. a:bg .' ctermfg='. a:fg .' guibg='. a:guibg .' guifg='. a:guifg
|
|
|
|
|
exec 'autocmd filetype nerdtree syn match ' . a:extension .' #^\s\+.*'. a:extension .'$#'
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
call NERDTreeHighlightFile('jade', 'green', 'none', 'green', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('ini', 'yellow', 'none', 'yellow', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('md', 'blue', 'none', '#3366FF', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('yml', 'yellow', 'none', 'yellow', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('config', 'yellow', 'none', 'yellow', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('conf', 'yellow', 'none', 'yellow', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('json', 'yellow', 'none', 'yellow', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('html', 'yellow', 'none', 'yellow', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('styl', 'cyan', 'none', 'cyan', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('css', 'cyan', 'none', 'cyan', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('coffee', 'Red', 'none', 'red', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('js', 'Red', 'none', '#ffa500', '#151515')
|
|
|
|
|
call NERDTreeHighlightFile('php', 'Magenta', 'none', '#ff00ff', '#151515')
|