96 lines
2.4 KiB
VimL
96 lines
2.4 KiB
VimL
" Make Vim more useful
|
||
set nocompatible
|
||
" Use the OS clipboard by default (on versions compiled with `+clipboard`)
|
||
set clipboard=unnamed
|
||
" Enhance command-line completion
|
||
set wildmenu
|
||
" Allow cursor keys in insert mode
|
||
set esckeys
|
||
" Allow backspace in insert mode
|
||
set backspace=indent,eol,start
|
||
" Optimize for fast terminal connections
|
||
set ttyfast
|
||
" Add the g flag to search/replace by default
|
||
set gdefault
|
||
" Use UTF-8 without BOM
|
||
set encoding=utf-8 nobomb
|
||
" Change mapleader
|
||
let mapleader=","
|
||
" Don’t add empty newlines at the end of files
|
||
set binary
|
||
set noeol
|
||
" Centralize backups, swapfiles and undo history
|
||
set backupdir=~/.vim/backups
|
||
set directory=~/.vim/swaps
|
||
if exists("&undodir")
|
||
set undodir=~/.vim/undo
|
||
endif
|
||
|
||
" Respect modeline in files
|
||
set modeline
|
||
set modelines=4
|
||
" Enable per-directory .vimrc files and disable unsafe commands in them
|
||
set exrc
|
||
set secure
|
||
" Enable line numbers
|
||
set number
|
||
" Enable syntax highlighting
|
||
syntax on
|
||
" Highlight current line
|
||
set cursorline
|
||
" Make tabs as wide as two spaces
|
||
set tabstop=2
|
||
" Show “invisible” characters
|
||
set lcs=tab:▸\ ,trail:·,eol:¬,nbsp:_
|
||
set list
|
||
" Highlight searches
|
||
set hlsearch
|
||
" Ignore case of searches
|
||
set ignorecase
|
||
" Highlight dynamically as pattern is typed
|
||
set incsearch
|
||
" Always show status line
|
||
set laststatus=2
|
||
" Enable mouse in all modes
|
||
set mouse=a
|
||
" Disable error bells
|
||
set noerrorbells
|
||
" Don’t reset cursor to start of line when moving around.
|
||
set nostartofline
|
||
" Show the cursor position
|
||
set ruler
|
||
" Don’t show the intro message when starting Vim
|
||
set shortmess=atI
|
||
" Show the current mode
|
||
set showmode
|
||
" Show the filename in the window titlebar
|
||
set title
|
||
" Show the (partial) command as it’s being typed
|
||
set showcmd
|
||
" Use relative line numbers
|
||
if exists("&relativenumber")
|
||
set relativenumber
|
||
au BufReadPost * set relativenumber
|
||
endif
|
||
" Start scrolling three lines before the horizontal window border
|
||
set scrolloff=3
|
||
|
||
" Strip trailing whitespace (,ss)
|
||
function! StripWhitespace()
|
||
let save_cursor = getpos(".")
|
||
let old_query = getreg('/')
|
||
:%s/\s\+$//e
|
||
call setpos('.', save_cursor)
|
||
call setreg('/', old_query)
|
||
endfunction
|
||
noremap <leader>ss :call StripWhitespace()<CR>
|
||
" Save a file as root (,W)
|
||
noremap <leader>W :w !sudo tee % > /dev/null<CR>
|
||
|
||
" Automatic commands
|
||
if has("autocmd")
|
||
" Enable file type detection
|
||
filetype on
|
||
" Treat .json files as .js
|
||
autocmd BufNewFile,BufRead *.json setfiletype json syntax=javascript
|
||
endif |