Created
April 17, 2018 03:14
-
-
Save bigbrett/fe496f23e8ef1216d06f70444c3f0204 to your computer and use it in GitHub Desktop.
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
" be vIMproved | |
set nocompatible | |
" enable plugins | |
filetype plugin on | |
" Pathogen | |
"execute pathogen#infect() | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
"" => VIM user interface | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Set 7 lines to the cursor - when moving vertically using j/k | |
set so=7 | |
" Turn on the WiLd menu | |
set wildmenu | |
" Ignore compiled files | |
set wildignore=*.o,*~,*.pyc | |
"Always show current position | |
set ruler | |
"show commands | |
set showcmd | |
" Show cursor line | |
set cursorline | |
" Height of the command bar | |
set cmdheight=2 | |
" 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 tm=500 | |
" mouse support | |
set mouse=a | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
"" => Colors and Fonts | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Enable syntax highlighting | |
syntax enable | |
" 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 | |
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 | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
"" => Text, tab and indent related | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
"" turn on line numbers | |
set number | |
" Use spaces instead of tabs | |
set expandtab | |
" Be smart when using tabs ;) | |
set smarttab | |
" 1 tab == 2 spaces | |
set shiftwidth=4 | |
set tabstop=4 | |
" Show trailing whitepace and spaces before a tab: | |
":highlight ExtraWhitespace ctermbg=red guibg=red | |
":autocmd Syntax * syn match ExtraWhitespace /\s\+$\| \+\ze\t/ | |
" Delete trailing whitespace | |
"autocmd BufWritePre * :%s/\s\+$//e | |
" Linebreak on 500 characters | |
set lbr | |
set tw=500 | |
set ai "Auto indent | |
set si "Smart indent | |
set wrap "Wrap lines | |
" press F2 to disable autoindent for pasting text | |
set pastetoggle=<F2> | |
"""""""""""""""""""""""""""""" | |
" => 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> | |
" 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^=% | |
" Always show the status line | |
set laststatus=2 | |
" Format the status line | |
set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ \ CWD:\ %r%{getcwd()}%h\ \ \ Line:\ %l\ \ Column:\ %c | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Editing mappings | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Stupid shift key fixes | |
map W w | |
cmap wQ wq | |
cmap Q q | |
" Yank from the cursor to the end of the line, to be consistent with C and D. | |
nnoremap Y y$ | |
" get rid of wrapped text navigation | |
nnoremap j gj | |
nnoremap k gk | |
" | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
"" => WINDOW MANAGEMENT | |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
"Vertical Split | |
map <Bar> <C-W>v<C-W><Right> | |
" Horizontal Split | |
map _ <C-W>s<C-W><Down> | |
" Switch Window | |
map <Tab> <C-W>w | |
" Reverse switch window | |
map <Esc>[Z <C-W>W | |
" Close window | |
map <C-c> <C-W>c | |
" Useful mappings for managing tabs | |
map <leader>tn :tabnew<cr> | |
map <leader>to :tabonly<cr> | |
map <leader>tc :tabclose<cr> | |
map <leader>tm :tabmove | |
map <leader>tt :tabnext | |
" Let 'tl' toggle between this and the last accessed tab | |
let g:lasttab = 1 | |
nmap <Leader>tl :exe "tabn ".g:lasttab<CR> | |
au TabLeave * let g:lasttab = tabpagenr() | |
" Switch CWD to the directory of the open buffer | |
map <leader>cd :cd %:p:h<cr>:pwd<cr> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Helper functions | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Returns true if paste mode is enabled | |
function! HasPaste() | |
if &paste | |
return 'PASTE MODE ' | |
endif | |
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 | |
function! CmdLine(str) | |
exe "menu Foo.Bar :" . a:str | |
emenu Foo.Bar | |
unmenu Foo | |
endfunction | |
function! VisualSelection(direction, extra_filter) range | |
let l:saved_reg = @" | |
execute "normal! vgvy" | |
let l:pattern = escape(@", "\\/.*'$^~[]") | |
let l:pattern = substitute(l:pattern, "\n$", "", "") | |
if a:direction == 'gv' | |
call CmdLine("Ack '" . l:pattern . "' " ) | |
elseif a:direction == 'replace' | |
call CmdLine("%s" . '/'. l:pattern . '/') | |
endif | |
let @/ = l:pattern | |
let @" = l:saved_reg | |
endfunction | |
" Delete trailing white space on save, useful for some filetypes ;) | |
fun! CleanExtraSpaces() | |
let save_cursor = getpos(".") | |
let old_query = getreg('/') | |
silent! %s/\s\+$//e | |
call setpos('.', save_cursor) | |
call setreg('/', old_query) | |
endfun | |
set clipboard+=unnamed " use the clipboards of vim and win | |
set go+=a " Visual selection automatically copied to the clipboard | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" Remove the Windows ^M - when the encodings gets messed up | |
noremap <Leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Nerd Tree | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
let g:NERDTreeWinPos = "right" | |
let NERDTreeShowHidden=0 | |
let NERDTreeIgnore = ['\.pyc$', '__pycache__'] | |
let g:NERDTreeWinSize=35 | |
map <leader>nn :NERDTreeToggle<cr> | |
map <leader>nb :NERDTreeFromBookmark<Space> | |
map <leader>nf :NERDTreeFind<cr> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => Vimroom | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
let g:goyo_width=100 | |
let g:goyo_margin_top = 2 | |
let g:goyo_margin_bottom = 2 | |
nnoremap <silent> <leader>z :Goyo<cr> | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
" => clang-format | |
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | |
"function! Formatonsave() | |
" let l:formatdiff = 1 | |
" py3f /usr/share/clang/clang-format-5.0/clang-format.py | |
"endfunction | |
"autocmd BufWritePre *.h,*.cc,*.cpp call Formatonsave() | |
map <C-K>:py3f /usr/share/clang/clang-format-5.0/clang-format.py<cr> | |
imap <C-K> <c-o>:py3f /usr/share/clang/clang-format-5.0/clang-format.py<cr> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment