Created
April 6, 2017 16:20
-
-
Save vianpl/be37b695107faee81454a3dead645fd9 to your computer and use it in GitHub Desktop.
vimrc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Maintainer: | |
" Amir Salihefendic | |
" http://amix.dk - [email protected] | |
" | |
" Version: | |
" 5.0 - 29/05/12 15:43:36 | |
" | |
" Blog_post: | |
" http://amix.dk/blog/post/19691#The-ultimate-Vim-configuration-on-Github | |
" | |
" Awesome_version: | |
" Get this config, nice color schemes and lots of plugins! | |
" | |
" Install the awesome version from: | |
" | |
" https://github.com/amix/vimrc | |
" | |
" Syntax_highlighted: | |
" http://amix.dk/vim/vimrc.html | |
" | |
" Raw_version: | |
" http://amix.dk/vim/vimrc.txt | |
" | |
" Sections: | |
" -> General | |
" -> VIM user interface | |
" -> Colors and Fonts | |
" -> Files and backups | |
" -> Text, tab and indent related | |
" -> Visual mode related | |
" -> Moving around, tabs and buffers | |
" -> Status line | |
" -> Editing mappings | |
" -> vimgrep searching and cope displaying | |
" -> Spell checking | |
" -> Misc | |
" -> Helper functions | |
" | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
set nocompatible " be iMproved, required | |
filetype off " required | |
" set the runtime path to include Vundle and initialize | |
set rtp+=~/.vim/bundle/Vundle.vim | |
call vundle#begin() | |
" alternatively, pass a path where Vundle should install plugins | |
"call vundle#begin('~/some/path/here') | |
" let Vundle manage Vundle, required | |
Plugin 'gmarik/Vundle.vim' | |
Plugin 'flazz/vim-colorschemes' | |
Bundle 'Valloric/YouCompleteMe' | |
Bundle 'ntpeters/vim-better-whitespace' | |
Plugin 'airblade/vim-gitgutter' | |
Plugin 'scrooloose/nerdcommenter' | |
Plugin 'kien/ctrlp.vim' | |
Plugin 'jiangmiao/auto-pairs' | |
Plugin 'tpope/vim-fugitive' | |
Plugin 'gregsexton/gitv' | |
Plugin 'tpope/vim-surround' | |
Plugin 'vim-scripts/ReplaceWithRegister' | |
Plugin 'kana/vim-textobj-user' | |
Plugin 'kana/vim-textobj-indent' | |
Plugin 'kana/vim-textobj-line' | |
Plugin 'lucapette/vim-textobj-underscore' | |
Plugin 'rking/ag.vim' | |
Plugin 'vim-scripts/armasm' | |
Plugin 'rdnetto/YCM-Generator' | |
Plugin 'sjl/gundo.vim' | |
" All of your Plugins must be added before the following line | |
call vundle#end() " required | |
filetype plugin indent on " required | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => General | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Sets how many lines of history VIM has to remember | |
set history=700 | |
" Enable filetype plugins | |
filetype plugin on | |
filetype indent on | |
" Set to auto read when a file is changed from the outside | |
set autoread | |
" With a map leader it's possible to do extra key combinations | |
" like <leader>w saves the current file | |
let mapleader = "," | |
let g:mapleader = "," | |
" Fast saving | |
nmap <leader>w :w!<cr> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => VIM user interface | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Set 7 lines to the cursor - when moving vertically using j/k | |
set so=7 | |
" line numbers | |
set number | |
" Turn on the WiLd menu | |
set wildmenu | |
" Ignore compiled files | |
set wildignore=*.o,*~,*.pyc | |
"Always show current position | |
set ruler | |
" Height of the command bar | |
set cmdheight=1 | |
" A buffer becomes hidden when it is abandoned | |
set hid | |
" Configure backspace so it acts as it should act | |
set backspace=eol,start,indent | |
set whichwrap+=<,>,h,l | |
" Ignore case when searching | |
set ignorecase | |
" When searching try to be smart about cases | |
set smartcase | |
" Highlight search results | |
set hlsearch | |
" Makes search act like search in modern browsers | |
set incsearch | |
" Don't redraw while executing macros (good performance config) | |
set lazyredraw | |
" For regular expressions turn magic on | |
set magic | |
" Show matching brackets when text indicator is over them | |
set showmatch | |
" How many tenths of a second to blink when matching brackets | |
set mat=2 | |
" No annoying sound on errors | |
set noerrorbells | |
set novisualbell | |
set t_vb= | |
set tm=500 | |
set mouse=a | |
set mousemodel=popup " right-click pops up context menu | |
set number " show absolute line number of the current line | |
set nofoldenable " I fucking hate code folding | |
set scrolloff=10 " scroll the window so we can always see 10 lines around the cursor | |
set textwidth=80 " show a vertical line at the 79th character: | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Colors and Fonts | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Enable syntax highlighting | |
syntax enable | |
set t_Co=256 | |
set background=dark | |
colorscheme zenburn-nico | |
hi ColorColumn ctermbg=darkgray | |
call matchadd('ColorColumn', '\%81v', 100) | |
" Set extra options when running in GUI mode | |
if has("gui_running") | |
set guioptions-=T | |
set guioptions+=e | |
set t_Co=256 | |
set guitablabel=%M\ %t | |
set guifont=Ubuntu\ Mono\ 9 | |
endif | |
" Set utf8 as standard encoding and en_US as the standard language | |
set encoding=utf8 | |
" Use Unix as the standard file type | |
set ffs=unix,dos,mac | |
set fillchars+=vert:\| | |
" Make command bar very small | |
set cmdheight=1 | |
set showcmd | |
set noshowmode | |
set noruler | |
set laststatus=0 | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Files, backups and undo | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Turn backup off, since most stuff is in SVN, git et.c anyway... | |
set nobackup | |
set nowb | |
set noswapfile | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Text, tab and indent related | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
set noexpandtab | |
set tabstop=8 | |
set softtabstop=8 | |
set shiftwidth=8 | |
set ai "Auto indent | |
set si "Smart indent | |
set wrap "Wrap lines | |
"""""""""""""""""""""""""""""" | |
" => Visual mode related | |
"""""""""""""""""""""""""""""" | |
" Visual mode pressing * or # searches for the current selection | |
" Super useful! From an idea by Michael Naumann | |
vnoremap <silent> * :call VisualSelection('f')<CR> | |
vnoremap <silent> # :call VisualSelection('b')<CR> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Moving around, tabs, windows and buffers | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Treat long lines as break lines (useful when moving around in them) | |
map j gj | |
map k gk | |
" Escape is now jk | |
inoremap jk <ESC> | |
" Empower '.' in visual mode | |
vnoremap . :norm.<CR> | |
" Map <Space> to / (search) and Ctrl-<Space> to ? (backwards search) | |
map <space> / | |
" Disable highlight when <leader><cr> is pressed | |
map <silent> <leader><cr> :noh<cr> | |
" Smart way to move between windows | |
map <C-j> <C-W>j | |
map <C-k> <C-W>k | |
map <C-h> <C-W>h | |
map <C-l> <C-W>l | |
" Close the current buffer | |
map <leader>bd :Bclose<cr> | |
" Close all the buffers | |
map <leader>ba :1,1000 bd!<cr> | |
" Useful mappings for managing tabs | |
map <leader>tn :tabnew<cr> | |
map <leader>to :tabonly<cr> | |
map <leader>tc :tabclose<cr> | |
map <leader>tm :tabmove | |
" Opens a new tab with the current buffer's path | |
" Super useful when editing files in the same directory | |
map <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/ | |
" Switch CWD to the directory of the open buffer | |
map <leader>cd :cd %:p:h<cr>:pwd<cr> | |
" Specify the behavior when switching between buffers | |
try | |
set switchbuf=useopen,usetab,newtab | |
set stal=2 | |
catch | |
endtry | |
" Return to last edit position when opening files (You want this!) | |
autocmd BufReadPost * | |
\ if line("'\"") > 0 && line("'\"") <= line("$") | | |
\ exe "normal! g`\"" | | |
\ endif | |
" Remember info about open buffers on close | |
set viminfo^=% | |
"""""""""""""""""""""""""""""" | |
" => Status line | |
"""""""""""""""""""""""""""""" | |
" Format the status line | |
set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Editing mappings | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Remap VIM 0 to first non-blank character | |
map 0 ^ | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => vimgrep searching and cope displaying | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" When you press gv you vimgrep after the selected text | |
vnoremap <silent> gv :call VisualSelection('gv')<CR> | |
" Open vimgrep and put the cursor in the right position | |
map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left> | |
" Vimgreps in the current file | |
map <leader><space> :vimgrep // <C-R>%<C-A><right><right><right><right><right><right><right><right><right> | |
" When you press <leader>r you can search and replace the selected text | |
vnoremap <silent> <leader>r :call VisualSelection('replace')<CR> | |
" Do :help cope if you are unsure what cope is. It's super useful! | |
" | |
" When you search with vimgrep, display your results in cope by doing: | |
" <leader>cc | |
" | |
" To go to the next search result do: | |
" <leader>n | |
" | |
" To go to the previous search results do: | |
" <leader>p | |
" | |
map <leader>cc :botright cope<cr> | |
map <leader>co ggVGy:tabnew<cr>:set syntax=qf<cr>pgg | |
map <leader>n :cn<cr> | |
map <leader>p :cp<cr> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Spell checking | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Pressing ,ss will toggle and untoggle spell checking | |
map <leader>ss :setlocal spell!<cr> | |
" Shortcuts using <leader> | |
map <leader>sn ]s | |
map <leader>sp [s | |
map <leader>sa zg | |
map <leader>s? z= | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Misc | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Remove the Windows ^M - when the encodings gets messed up | |
noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm | |
" Quickly open a buffer for scripbble | |
map <leader>q :e ~/buffer<cr> | |
" Toggle paste mode on and off | |
map <leader>pp :setlocal paste!<cr> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Helper functions | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
function! CmdLine(str) | |
exe "menu Foo.Bar :" . a:str | |
emenu Foo.Bar | |
unmenu Foo | |
endfunction | |
function! VisualSelection(direction) range | |
let l:saved_reg = @" | |
execute "normal! vgvy" | |
let l:pattern = escape(@", '\\/.*$^~[]') | |
let l:pattern = substitute(l:pattern, "\n$", "", "") | |
if a:direction == 'b' | |
execute "normal ?" . l:pattern . "^M" | |
elseif a:direction == 'gv' | |
call CmdLine("vimgrep " . '/'. l:pattern . '/' . ' **/*.') | |
elseif a:direction == 'replace' | |
call CmdLine("%s" . '/'. l:pattern . '/') | |
elseif a:direction == 'f' | |
execute "normal /" . l:pattern . "^M" | |
endif | |
let @/ = l:pattern | |
let @" = l:saved_reg | |
endfunction | |
" Returns true if paste mode is enabled | |
function! HasPaste() | |
if &paste | |
return 'PASTE MODE ' | |
en | |
return '' | |
endfunction | |
" Don't close window, when deleting a buffer | |
command! Bclose call <SID>BufcloseCloseIt() | |
function! <SID>BufcloseCloseIt() | |
let l:currentBufNum = bufnr("%") | |
let l:alternateBufNum = bufnr("#") | |
if buflisted(l:alternateBufNum) | |
buffer # | |
else | |
bnext | |
endif | |
if bufnr("%") == l:currentBufNum | |
new | |
endif | |
if buflisted(l:currentBufNum) | |
execute("bdelete! ".l:currentBufNum) | |
endif | |
endfunction | |
let g:clang_library_path="/usr/lib/llvm-3.4/lib" | |
let g:ycm_confirm_extra_conf = 0 | |
let g:ycm_global_ycm_extra_conf = '~/.vim/.ycm_extra_conf.py' | |
set ttimeoutlen=50 " for faster InsertLeave triggering | |
set completeopt-=preview " I really don't want preview window for this fork | |
let g:ycm_seed_identifiers_with_syntax = 1 | |
let g:ycm_autoclose_preview_window_after_insertion = 1 | |
let g:ycm_autoclose_preview_window_after_completion = 1 | |
let g:ycm_key_list_select_completion = ['<TAB>', '<Down>'] | |
let g:ycm_key_list_previous_completion = ['<S-TAB>', '<Up>'] | |
let g:ycm_enable_diagnostic_signs = 0 | |
let g:ycm_enable_diagnostic_highlighting = 0 | |
nnoremap <silent> <leader>k :SetLinuxFormatting<cr><cr> | |
" Shortcut to rapidly toggle `set list` | |
nmap <leader>l :set list!<CR> | |
" Use the same symbols as TextMate for tabstops and EOLs | |
set listchars=tab:▸\ ,eol:¬ | |
" copy with ctrl+c | |
vmap <C-c> "+y | |
" highlight the word under cursor | |
autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\')) | |
" Remove any introduced trailing whitespace after moving... | |
let g:DVB_TrimWS = 1 | |
" yocto recepies as python code | |
au BufRead,BufNewFile *.bb set filetype=python | |
au BufRead,BufNewFile *.bbclass set filetype=python | |
" Random stuff | |
set showtabline=1 | |
set relativenumber | |
" remove bottom bar | |
let s:hidden_all = 1 | |
function! ToggleHiddenAll() | |
if s:hidden_all == 0 | |
let s:hidden_all = 1 | |
set showcmd | |
set noshowmode | |
set noruler | |
set laststatus=0 | |
else | |
let s:hidden_all = 0 | |
set showmode | |
set ruler | |
set laststatus=2 | |
endif | |
endfunction | |
nnoremap <S-h> :call ToggleHiddenAll()<CR> | |
" This maps Leader + e to exit terminal mode. | |
tnoremap <Leader>e <C-\><C-n> | |
" This is for smoother scrolling | |
map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y> | |
map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E> | |
" Vim persistent undo | |
set undofile " Save undo's after file closes | |
set undodir=$HOME/.vim/undo " where to save undo histories | |
set undolevels=1000 " How many undos | |
set undoreload=10000 " number of lines to save for undo | |
" Mess around with Vim tabs in order to comply with Prodys' coding style | |
let s:prodystabs=0 | |
function! SetProdysTabs() | |
if s:prodystabs == 0 | |
let s:prodystabs=1 | |
set noexpandtab | |
set tabstop=2 | |
set softtabstop=2 | |
set shiftwidth=2 | |
else | |
let s:prodystabs=0 | |
set noexpandtab | |
set tabstop=8 | |
set softtabstop=8 | |
set shiftwidth=8 | |
endif | |
endfunction | |
nnoremap <leader>pr :call SetProdysTabs()<CR> | |
set cursorline | |
nnoremap <F5> :GundoToggle<CR> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment