"============================================================" " " " Darkcloud Vim Config: keyboard settings " " " " By: Kevin MacMartin (prurigro@gmail.com) " " Website: https://github.com/prurigro/darkcloud-vimconfig " " " " License: MIT " " " "============================================================" " " Note: " *The default <Leader> key is: \ " " Aliases: " :GitLog & :gitlog | (C) -> show a navigatable log of commit history " :GitDiff & :gitdiff | (C) -> current file and last commit in vimdiff " :GitStatus & :gitstatus | (C) -> shows the output of git status " :GitCommit & :gitcommit | (C) -> commits changes to the current file " :wsudo & :sudow | (C) -> write the file as root using sudo " :esudo & :sudoe | (C) -> read a file as root using sudo " " Reference: (view plugin documentation for the full list of commands each offers) " (tcomment _ can also be -) " <Ctrl-_><Ctrl-_> | (A) -> comment selection/create an empty comment " gc | (A) -> comment selection/create an empty comment " <Ctrl-_>b | (A) -> comment the current block(s) " <Ctrl-_>r | (A) -> comment everything on the line to the right " <Ctrl-_>p | (A) -> comment the current paragraph " + | (V) -> increase the selected region " _ | (V) -> decrease the selected region " <Leader><Enter> | (N) -> center content and hide everything else " " (surround) " S" | (V) -> surround selection with quotes " S<a href=""> | (V) -> surround <a href="">selection</a> " ds" | (N) -> delete surrounding "" " dst | (N) -> delete surrounding tag (ie: <strong></strong>) " cs'" | (N) -> change surrounding '' to "" (any delimiters work) " cs"<q> | (N) -> change surrounding "" to the tag: <q></q> " cst" | (N) -> change any surrounding tag to "" " ysiw' | (N) -> surround the current word with '' " yss' | (N) -> surround non-whitespace of current line with '' " " Mappings: " (mouse) " <Ctrl-ScrollUp> | (A) -> scroll right quickly " <Ctrl-ScrollDown> | (A) -> scroll left quickly " <Alt-ScrollUp> | (A) -> scroll right slowly " <Alt-ScrollDown> | (A) -> scroll left slowly " " <MiddleClick> | (A) -> selects from the cursor " <Ctrl-LeftClick> | (A) -> selects from the cursor " <Alt-LeftClick> | (A) -> select the line being clicked " <Ctrl-Alt-LeftClick> | (A) -> select the paragraph being clicked " " <Ctrl-RightClick> | (A) -> copy selection or character under the cursor " <Ctrl-MiddleClick> | (A) -> copy selection or character under the cursor " " <Alt-RightClick> | (A) -> cut selection or character under the cursor " <Alt-MiddleClick> | (A) -> cut selection or character under the cursor " " <Ctrl-Alt-RightClick> | (A) -> paste at the cursor (not mouse) " <Ctrl-Alt-MiddleClick> | (A) -> paste at the cursor (not mouse) " " <Shift-MiddleClick> | (A) -> paste from xorg paste buffer " " (tabs) " <Alt-n> | (N) -> go to the next open tab " <Alt-p> | (N) -> go to the previous open tab " <Alt-t> | (N) -> open a new tab " <Alt-c> | (N) -> create a new tab with vimfiler " <Alt-d> | (N) -> create a new tab with a double pane vimfiler " " (toggles and features) " ` | (N) -> popup a command reference " <Leader><F1> | (N) -> toggle the vim reference manual " <Leader>? | (N) -> toggle the vim reference manual " ~ | (A) -> toggle the gutter(line numbers, folds and signify) " " <Space> | (N) -> toggle selected fold " <Leader><Space> | (N) -> open all folds " <Leader>= | (N) -> open all folds " <Leader>+ | (N) -> open all folds " <Leader><Leader><Space> | (N) -> open all folds " <Leader>- | (N) -> unopen all folds " <Leader>_ | (N) -> unopen all folds " <Leader>0 | (N) -> reset all folds using default fold level " " <Ctrl-F1> | (A) -> toggle vimfiler sidebar " <Ctrl-F2> | (A) -> toggle the gundo sidebar " <Ctrl-F3> | (A) -> toggle the tagbar sidebar " <Ctrl-F4> | (A) -> toggle extradite git commit history " <Alt-F1> | (A) -> toggle vimfiler sidebar " <Alt-F2> | (A) -> toggle the gundo sidebar " <Alt-F3> | (A) -> toggle the tagbar sidebar " <Alt-F4> | (A) -> toggle extradite git commit history " " <F1> | (A) -> toggle line wrapping " <F2> | (A) -> toggle spell check " <F3> | (A) -> toggle external-paste mode " <F4> | (A) -> toggle syntax checking " " <Ctrl-F12> | (A) -> toggle goyo (distraction-free mode) " <Alt-F12> | (A) -> toggle goyo (distraction-free mode) " " (gvim toggles) " <Leader><F1> | (A) -> toggle the menubar " <Leader><F2> | (A) -> toggle the toolbar " " (spellcheck) " ?+ | (N) -> add the selected word to the local dictionary " ?? | (N) -> show spelling suggestions for selected word " ?N | (N) -> go to the next spelling mistake " ?P | (N) -> go to the previous spelling mistake " " (completion) " <Ctrl-m>, | (A) -> enter after emmet 'word' (ie: html:5) " <Enter> | (I) -> (neocomp) close the popup and <Enter> " <Tab> | (I) -> (neocomp) select/cycle popup completion " <Backspace> | (I) -> (neocomp) close the popup and <Backspace> " <Ctrl-u> | (I) -> (neocomp) undo the most recent completion " " (formatting) " <Backspace> | (V) -> deletes currently selected text " <Leader>J | (N) -> split the line into lines of <=79 chars " <Leader>J | (V) -> split the selection into lines of <=79 chars " <Leader>f | (N) -> format document and return to cursor " <Leader>f | (V) -> format the selection and return to cursor " <Leader>F | (N) -> format document using :Autoformat " <Leader>w | (N) -> remove whitespace " <Leader>t | (N) -> convert tabs into spaces " <Tab> | (V) -> indent all the lines currently selected " <Tab> | (N) -> indent the current line " <Shift-Tab> | (V) -> unindent all the lines currently selected " <Shift-Tab> | (N) -> unindent the current line " " (movement) " = | (N) -> go to the first char on the next line " _ | (N) -> go to the first char on the previous line " <Shift-Up> | (N) -> move to the beginning of the document " <Shift-Down> | (N) -> move to the end of the document " <Shift-Right> | (N) -> move to the end of the line " <Shift-Left> | (N) -> move to the beginning of the non-whitespace " " <Ctrl-Up> | (N) -> move four lines up " <Ctrl-Down> | (N) -> move four lines down " <Ctrl-Right> | (N) -> move one word right " <Ctrl-Left> | (N) -> move one word left " " <Alt+Up> | (V) -> move a block up one line " <Alt+Down> | (V) -> move a block down one line " <Alt+Up> | (N) -> move a line up one line " <Alt+Down> | (N) -> move a line down one line " " <Alt+Left> | (V) -> move a block up a half page " <Alt+Right> | (V) -> move a block down a half page " <Alt+Left> | (N) -> move a line up a half page " <Alt+Right> | (N) -> move a line down a half page " <Alt+h> | (V) -> move a block up a half page " <Alt+l> | (V) -> move a block down a half page " <Alt+h> | (N) -> move a line up a half page " <Alt+l> | (N) -> move a line down a half page " " >> | (N) -> next difference (vimdiff/signify) " << | (N) -> previous difference (vimdiff/signify) " " (selection) " <Ctrl-a> | (N) -> select all text " <Leader>a | (N) -> select all text " <Ctrl-a> | (V) -> select all text " <Leader>a | (V) -> select all text " " <Shift-Up> | (V) -> select all text above " <Shift-Down> | (V) -> select all text below " <Shift-Right> | (V) -> select all text to the right " <Shift-Left> | (V) -> select all text to the left up to the indent " " <Ctrl-Up> | (V) -> select four lines up " <Ctrl-Down> | (V) -> select four lines down " <Ctrl-Right> | (V) -> select one word right " <Ctrl-Left> | (V) -> select one word left " " <Leader>/ | (N) -> remove search highlighting " " (copy/paste and undo/redo) " <Leader>p | (N) -> view the paste buffers and register contents " y | (N) -> copies the character at the cursor " P | (V) -> save selection to the buffer and paste over " p | (V) -> preserve the buffer pasting over selected text " <Ctrl-p>Direction | (N) -> paste in the direction entered " T | (N) -> copy to the end of the line " T | (V) -> copy to the end of the line " " (delete/cut functions) " <Leader>x | (N) -> delete the char(s) under and the cursor " <Leader>x | (V) -> delete the currently selected text " <Leader>X | (N) -> delete the char(s) before the cursor " <Leader>X | (V) -> delete the currently selected lines " <Leader>D | (N) -> delete chars under and after the cursor on the line " <Leader>D | (V) -> delete the currently selected lines " <Leader>dw | (N) -> delete chars under and after the cursor in the word " <Leader>dd | (N) -> delete lines under and after the one below " <Leader>d | (V) -> delete the currently selected text " " (improved copy and paste shortcuts) " <Ctrl-v> | (N) -> paste from buffer " <Ctrl-v> | (V) -> paste buffer in place of selection " <Ctrl-v> | (I) -> paste from buffer then return to input " <Ctrl-c> | (N) -> copy character " <Ctrl-c> | (V) -> copy selection " <Ctrl-x> | (N) -> cut character " <Ctrl-x> | (V) -> cut selection " " (remap dangerous functions that skip undo) " <Ctrl-u> | (I) -> undo-able equivalent " <Ctrl-w> | (I) -> undo-able equivalent " " Filetype Specific Mappings: " (extradite) " <C-F4> | (A) -> close the dialog " <A-F4> | (A) -> close the dialog " <Right> | (A) -> same as down " l | (A) -> same as j " <Left> | (A) -> same as Up " h | (A) -> same as k " " (gundo) " <LeftClick> | (A) -> same as normal + justify on the left " <MiddleClick> | (A) -> same as the left mouse " <RightClick> | (A) -> same as the left mouse " <Right> | (A) -> same as down " l | (A) -> same as j " <Left> | (A) -> same as Up " h | (A) -> same as k " " (help) " q | (A) -> close the dialog " <Leader><F1> | (A) -> close the dialog " ?> | (A) -> close the dialog " ?< | (A) -> close the dialog " " (markdown) " <F8> | (A) -> show heading TOC instead of the taglist " " (markdown toc) " <LClick> | (A) -> left click + left justify the cursor " <MClick> | (A) -> same as the left click " <RClick> | (A) -> same as the left click " <LClick><LClick> | (A) -> select heading to edit " <Space> | (A) -> select heading but remain in toc " <Left> | (A) -> up " <Right> | (A) -> down " h | (A) -> j " l | (A) -> k " " (vimdiff) " <Leader><> | (N) -> update differences " <Leader>>< | (N) -> update differences " <Leader>> | (N) -> replace diff in other pane with current pane " <Leader<< | (N) -> replace diff in current pane with other pane " " (vimfiler) " <LClick> | (A) -> left click + left justify the cursor " <MClick> | (A) -> same as the left click " <RClick> | (A) -> same as the left click " <LClick><LClick> | (A) -> edit selected file " <Right> | (A) -> map to l, which opens a directory " <Left> | (A) -> map to h, which goes up one directory " ' | (A) -> edit the selected file " n | (A) -> start editing a new file " "DISABLED DEFAULT MAPPING: UNSET SHORTCUTS {{{ "-unmapping tabbing from < and > for use with diff "+these commands are replaced by tab and shift+tab noremap > <Nop> noremap < <Nop> "-unmapping help from F1 and Ctrl-F1 for use toggling the reference manual "+the :h topic feature works, and <Leader><F1> displays quickref map <F1> <Nop> map <A-F1> <Nop> map <C-F1> <Nop> " unmap mousewheel combos to ensure the old behaviour stays gone map <C-ScrollWheelUp> <Nop> map <C-ScrollWheelDown> <Nop> map <A-ScrollWheelUp> <Nop> map <A-ScrollWheelDown> <Nop> "}}} "ALIASES: COMMAND SHORTCUTS {{{ cabbrev <expr><silent> GitLog ':Extradite<CR>:wincmd x<CR>:wincmd j<CR>:resize 10<CR>' cabbrev <expr><silent> gitlog ':Extradite<CR>:wincmd x<CR>:wincmd j<CR>:resize 10<CR>' cabbrev <expr><silent> GitDiff ':Gdiff<CR>' cabbrev <expr><silent> gitdiff ':Gdiff<CR>' cabbrev <expr><silent> GitStatus ':Gstatus<CR>' cabbrev <expr><silent> gitstatus ':Gstatus<CR>' cabbrev <expr><silent> GitCommit ':Gcommit<CR>' cabbrev <expr><silent> gitcommit ':Gcommit<CR>' cabbrev sudow SudoWrite cabbrev wsudo SudoWrite cabbrev sudoe SudoRead cabbrev esudo SudoRead "}}} "MAPPINGS: GENERAL KEYBINDINGS AND REBINDINGS {{{ "MOUSE:{ "hold ctrl to scroll left/right instead of up/down nnoremap <C-ScrollWheelUp> 4zl xnoremap <C-ScrollWheelUp> 4zl inoremap <C-ScrollWheelUp> <C-O>4zl nnoremap <C-ScrollWheelDown> 4zh xnoremap <C-ScrollWheelDown> 4zh inoremap <C-ScrollWheelDown> <C-O>4zh "hold alt to scroll left/right more precisely nnoremap <A-ScrollWheelUp> zl xnoremap <A-ScrollWheelUp> zl inoremap <A-ScrollWheelUp> <C-O>zl nnoremap <A-ScrollWheelDown> zh xnoremap <A-ScrollWheelDown> zh inoremap <A-ScrollWheelDown> <C-O>zh "middle & ctrl+left = select from cursor nnoremap <MiddleMouse> <RightMouse> xnoremap <MiddleMouse> <RightMouse> inoremap <MiddleMouse> <RightMouse> nnoremap <C-LeftMouse> <RightMouse> xnoremap <C-LeftMouse> <RightMouse> inoremap <C-LeftMouse> <RightMouse> "alt+left = line nnoremap <A-LeftMouse> <LeftMouse>V xnoremap <A-LeftMouse> <RightMouse>$ inoremap <A-LeftMouse> <Esc><LeftMouse>V "ctrl+alt+left = select paragraph nnoremap <C-A-LeftMouse> <LeftMouse>vip xnoremap <C-A-LeftMouse> <RightMouse>ip$ inoremap <C-A-LeftMouse> <Esc><LeftMouse>vip "ctrl+(middle/right) = copy nnoremap <C-RightMouse> <LeftMouse>Vy vnoremap <C-RightMouse> y inoremap <C-RightMouse> <C-0>y nnoremap <C-MiddleMouse> <LeftMouse>Vy vnoremap <C-MiddleMouse> y inoremap <C-MiddleMouse> <C-0>y "alt+(middle/right) = cut nnoremap <A-RightMouse> x xnoremap <A-RightMouse> x inoremap <A-RightMouse> <C-O>x nnoremap <A-MiddleMouse> x xnoremap <A-MiddleMouse> x inoremap <A-MiddleMouse> <C-O>x "ctrl+alt+(middle/right) = paste nnoremap <C-A-RightMouse> p xnoremap <C-A-RightMouse> p inoremap <C-A-RightMouse> <C-O>p nnoremap <C-A-MiddleMouse> p xnoremap <C-A-MiddleMouse> p inoremap <C-A-MiddleMouse> <C-O>p "configure middle click to paste from X noremap <S-Insert> <MiddleMouse> noremap! <S-Insert> <MiddleMouse> "} "TABS:{ nnoremap <silent><expr> <A-n> ':tabnext<CR>' nnoremap <silent><expr> <A-p> ':tabprev<CR>' nnoremap <silent><expr> <A-t> ':tabnew<CR>' nnoremap <silent><expr> <A-c> ':VimFiler -tab -project<CR>' nnoremap <silent><expr> <A-d> ':VimFiler -tab -project -double<CR>' "} "TOGGLES AND FEATURES:{ "toggle the command reference box nnoremap <silent><expr> ` ':TCommand<CR>' "toggle the vim reference manual nnoremap <silent><expr> <Leader><F1> ':h index.txt<CR>' nnoremap <silent><expr> <Leader>? ':h index.txt<CR>' "toggle the display of the left gutter nnoremap <silent><expr> ~ ':if (&number)<Bar>set nonumber<Bar>if (&foldenable)<Bar>set nofoldenable<Bar>endif<Bar>if exists("b:sy")<Bar>if (b:sy.active)<Bar>SignifyToggle<Bar>endif<Bar>endif<Bar>else<Bar>set number<Bar>if !(&foldenable)<Bar>set foldenable<Bar>endif<Bar>if exists("b:sy")<Bar>if !(b:sy.active)<Bar>SignifyToggle<Bar>endif<Bar>endif<Bar>endif<CR>:echo "gutter visibility toggled"<CR>' "toggle folded code at foldpoints nnoremap <Space> za "open all folds nnoremap <silent><expr> <Leader><Space> 'zn:echo "all folds have been opened"<CR>' nnoremap <silent><expr> <Leader>= 'zn:echo "all folds have been opened"<CR>' nnoremap <silent><expr> <Leader>+ 'zn:echo "all folds have been opened"<CR>' "close folds set to be closed nnoremap <silent><expr> <Leader><Leader><Space> 'zN:echo "all opened folds have been closed"<CR>' nnoremap <silent><expr> <Leader>- 'zN:echo "all opened folds have been closed"<CR>' nnoremap <silent><expr> <Leader>_ 'zN:echo "all opened folds have been closed"<CR>' "reset all folds to the default fold level nnoremap <silent><expr> <Leader>0 'zX:echo "all folds have been reset"<CR>' "trigger vimfiler nnoremap <silent><expr> <C-F1> ':VimFiler -split -simple -toggle -no-quit -direction=topleft -winwidth=45<CR>' xnoremap <silent><expr> <C-F1> '<Esc>:VimFiler -split -simple -toggle -no-quit -direction=topleft -winwidth=45<CR>' inoremap <silent><expr> <C-F1> '<Esc>:VimFiler -split -simple -toggle -no-quit -direction=topleft -winwidth=45<CR>' nnoremap <silent><expr> <A-F1> ':VimFiler -split -simple -toggle -no-quit -direction=topleft -winwidth=45<CR>' xnoremap <silent><expr> <A-F1> '<Esc>:VimFiler -split -simple -toggle -no-quit -direction=topleft -winwidth=45<CR>' inoremap <silent><expr> <A-F1> '<Esc>:VimFiler -split -simple -toggle -no-quit -direction=topleft -winwidth=45<CR>' "bindings to trigger the gundo undo history nnoremap <silent><expr> <C-F2> ':GundoToggle<CR>:echo "undo history sidebar toggled"<CR>' xnoremap <silent><expr> <C-F2> '<Esc>:GundoToggle<CR>' inoremap <silent><expr> <C-F2> '<Esc>:GundoToggle<CR>' nnoremap <silent><expr> <A-F2> ':GundoToggle<CR>:echo "undo history sidebar toggled"<CR>' xnoremap <silent><expr> <A-F2> '<Esc>:GundoToggle<CR>' inoremap <silent><expr> <A-F2> '<Esc>:GundoToggle<CR>' "bindings to trigger the tagbar list of tags nnoremap <silent><expr> <C-F3> ':TagbarToggle<CR>:echo "tagbar toggled"<CR>' xnoremap <silent><expr> <C-F3> '<Esc>:TagbarToggle<CR>gv' inoremap <silent><expr> <C-F3> '<C-O>:TagbarToggle<CR>' nnoremap <silent><expr> <A-F3> ':TagbarToggle<CR>:echo "tagbar toggled"<CR>' xnoremap <silent><expr> <A-F3> '<Esc>:TagbarToggle<CR>gv' inoremap <silent><expr> <A-F3> '<C-O>:TagbarToggle<CR>' "view commit history and diffs nnoremap <expr><silent> <C-F4> ':Extradite!<CR>:resize 10<CR>:wincmd x<CR>:wincmd b<CR>:wincmd H<CR>:wincmd b<CR>' xnoremap <expr><silent> <C-F4> '<Esc>:Extradite!<CR>:resize 10<CR>:wincmd x<CR>:wincmd b<CR>:wincmd H<CR>:wincmd b<CR>' inoremap <expr><silent> <C-F4> '<Esc>:Extradite!<CR>:resize 10<CR>:wincmd x<CR>:wincmd b<CR>:wincmd H<CR>:wincmd b<CR>' nnoremap <expr><silent> <A-F4> ':Extradite!<CR>:resize 10<CR>:wincmd x<CR>:wincmd b<CR>:wincmd H<CR>:wincmd b<CR>' xnoremap <expr><silent> <A-F4> '<Esc>:Extradite!<CR>:resize 10<CR>:wincmd x<CR>:wincmd b<CR>:wincmd H<CR>:wincmd b<CR>' inoremap <expr><silent> <A-F4> '<Esc>:Extradite!<CR>:resize 10<CR>:wincmd x<CR>:wincmd b<CR>:wincmd H<CR>:wincmd b<CR>' "toggle line wrapping (and bottom bar if using the gui) nnoremap <silent><expr> <F1> ':set wrap!<CR>:echo "line wrapping toggled"<CR>' xnoremap <silent><expr> <F1> '<Esc>:set wrap!<CR>gv' inoremap <silent><expr> <F1> '<C-O>:set wrap!<CR>' "toggle show spelling errors nnoremap <silent><expr> <F2> ':set spell!<CR>:echo "spell checking toggled"<CR>' xnoremap <silent><expr> <F2> '<Esc>:set spell!<CR>gv' inoremap <silent><expr> <F2> '<C-O>:set spell!<CR>' "toggle external-paste mode set pastetoggle=<F3> "toggle syntax checking nnoremap <silent><expr> <F4> ':if (g:syntastic_check_on_open == 1)<Bar>let g:syntastic_check_on_open=0<Bar>let g:syntastic_check_on_wq=0<Bar>else<Bar>let g:syntastic_check_on_open=1<Bar>let g:syntastic_check_on_wq=1<Bar>endif<Bar>:SyntasticToggleMode<CR>' xnoremap <silent><expr> <F4> '<Esc>:if (g:syntastic_check_on_open == 1)<Bar>let g:syntastic_check_on_open=0<Bar>let g:syntastic_check_on_wq=0<Bar>else<Bar>let g:syntastic_check_on_open=1<Bar>let g:syntastic_check_on_wq=1<Bar>endif<Bar>:SyntasticToggleMode<CR>gv' inoremap <silent><expr> <F4> '<C-O>:if (g:syntastic_check_on_open == 1)<Bar>let g:syntastic_check_on_open=0<Bar>let g:syntastic_check_on_wq=0<Bar>else<Bar>let g:syntastic_check_on_open=1<Bar>let g:syntastic_check_on_wq=1<Bar>endif<Bar>:SyntasticToggleMode<CR>' "toggle goyo nnoremap <silent><expr> <C-F12> ':Goyo<CR>' nnoremap <silent><expr> <A-F12> ':Goyo<CR>' "} "GVIM TOGGLES:{ "toggle the menu nnoremap <silent><expr> <Leader><F1> ":if &go=~#'m'<Bar>set go-=m<Bar>else<Bar>set go+=m<Bar>endif<CR>:echo 'Menu bar toggled'<CR>" vnoremap <silent><expr> <Leader><F1> "<Esc>:if &go=~#'m'<Bar>set go-=m<Bar>else<Bar>set go+=m<Bar>endif<CR>gv" inoremap <silent><expr> <Leader><F1> "<C-O>:if &go=~#'m'<Bar>set go-=m<Bar>else<Bar>set go+=m<Bar>endif<CR>" "toggle the toolbar nnoremap <silent><expr> <Leader><F2> ":if &go=~#'T'<Bar>set go-=T<Bar>else<Bar>set go+=T<Bar>endif<CR>:echo 'Toolbar toggled'<CR>" vnoremap <silent><expr> <Leader><F2> "<Esc>:if &go=~#'T'<Bar>set go-=T<Bar>else<Bar>set go+=T<Bar>endif<CR>gv" inoremap <silent><expr> <Leader><F2> "<C-O>:if &go=~#'T'<Bar>set go-=T<Bar>else<Bar>set go+=T<Bar>endif<CR>" "} "SPELLCHECK:{ "add the selected mispelled word to the local dictionary nnoremap ?+ zg "display a list of suggestions for the selected mispelled word nnoremap ?? hei<C-X><C-S> "go to the next mispelled word nnoremap ?N ]s "go to the previous mispelled word nnoremap ?P [s "} "COMPLETION:{ "emmet switch triggerkey from <Ctrl-Y> let g:user_emmet_leader_key='<C-m>' "neocomplcache close popup and save indent inoremap <silent> <CR> <C-r>=<SID>neocompl_cr()<CR> function! s:neocompl_cr() return pumvisible() ? neocomplcache#close_popup() : "\<CR>" endfunction "neocomplcache tab completion inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" "neocomplcache : undo completion inoremap <expr><Backspace> neocomplcache#smart_close_popup()."\<C-h>" "neocomplcache undo completion inoremap <expr><C-u> neocomplcache#undo_completion() "} "FORMATTING:{ "have backspace delete the selected text vnoremap <Backspace> "_x "formatting options to apply to the whole document nnoremap <silent><expr> <Leader>J ':set tw=79<CR>Vgq:set tw=0<CR>:echo "Document text has been formatted to a width of 79 characters"<CR>' vnoremap <silent><expr> <Leader>J '<Esc>:set tw=79<CR>gvgq:set tw=0<CR>:echo "Selected text has been formatted to a width of 79 characters"<CR>' nnoremap <Leader>f mzgg=G`z<CR>:echo "The document has been formatted"<CR> vnoremap <Leader>f mz=`z<CR>:echo "The selection has been formatted"<CR> nnoremap <silent><expr> <Leader>F ':Autoformat<CR>:echo "The document has been formatted with :Autoformat"<CR>' nnoremap <silent><expr> <Leader>w ':FixWhitespace<CR>:echo "Trailing whitespace has been removed"<CR>' nnoremap <silent><expr> <Leader>t ':retab<CR>:noh<CR>:echo "Tabs have been converted to spaces"<CR>' "tab and untab the currently selected lines vnoremap <Tab> >gv nnoremap <Tab> v>gv<Esc> vnoremap <S-Tab> <gv nnoremap <S-Tab> v<gv<Esc> "} "MOVEMENT:{ "additional mappings for easier access nnoremap = + nnoremap _ - "remap keys for speedier movement nnoremap <C-Up> 4k nnoremap <C-Down> 4j nnoremap <C-Right> <S-Right> nnoremap <C-Left> <S-Left> "remap keys to scroll to the end in a direction nnoremap <S-Up> gg0 nnoremap <S-Down> G$ nnoremap <S-Right> $ nnoremap <S-Left> ^ "remap alt+up/down to move blocks up/down a line vmap <A-Up> <Plug>MoveBlockUp vmap <A-Down> <Plug>MoveBlockDown nmap <A-Up> <Plug>MoveLineUp nmap <A-Down> <Plug>MoveLineDown "remap alt+left/right/h/l to move blocks up/down a half page vmap <A-Left> <Plug>MoveBlockHalfPageUp vmap <A-Right> <Plug>MoveBlockHalfPageDown nmap <A-Left> <Plug>MoveLineHalfPageUp nmap <A-Right> <Plug>MoveLineHalfPageDown vmap <A-h> <Plug>MoveBlockHalfPageUp vmap <A-l> <Plug>MoveBlockHalfPageDown nmap <A-h> <Plug>MoveLineHalfPageUp nmap <A-l> <Plug>MoveLineHalfPageDown "map signify to ]c and [c let g:signify_mapping_next_hunk = ']c' let g:signify_mapping_prev_hunk = '[c' "move to next/previous difference (vimdiff/signify) nmap >> ]c nmap << [c "} "SELECTION:{ "ctrl-a to select all (and an alt for screen users) nnoremap <C-a> gg0vG$ xnoremap <C-a> <Esc>gg0vG$ nnoremap <Leader>a gg0vG$ xnoremap <Leader>a <Esc>gg0vG$ "map remap keys for speedier text selection xnoremap <C-Up> 4k xnoremap <C-Down> 4j xnoremap <C-Right> <S-Right> xnoremap <C-Left> <S-Left> "remap keys to select all text in one direction xnoremap <S-Up> gg0 xnoremap <S-Down> G$ xnoremap <S-Right> $ xnoremap <S-Left> ^ "clear search results nnoremap <silent><expr> <Leader>/ ':noh<CR>:echo "Search results have been cleared"<CR>' "} "COPY PASTE AND UNDO REDO:{ "display contents of paste buffers nnoremap <silent><expr> <Leader>p ':reg<CR>' "allow y to copy a single character in normal mode nnoremap y vy<Esc> "P pastes and replaces the buffer, p pastes and keeps it vnoremap P p xmap p <Plug>ReplaceWithRegisterVisual "copy to the end of the line nnoremap T vg_y vnoremap T g_y "Alternatives to cut/deletion commands that don't replace the buffer nnoremap <Leader>x "_x vnoremap <Leader>x "_x nnoremap <Leader>X "_X vnoremap <Leader>X "_X nnoremap <Leader>D "_D vnoremap <Leader>D "_D nnoremap <Leader>dd "_dd nnoremap <Leader>dw "_dw vnoremap <Leader>d "_d "map copy/paste shortcuts to more typical ones nnoremap <C-v> P xmap <C-v> <Plug>ReplaceWithRegisterVisual inoremap <C-v> <C-O>p nnoremap <C-c> y vnoremap <C-c> y nnoremap <C-x> x vnoremap <C-x> x "remap ctrl-u and ctrl-w to safer alternatives inoremap <C-u> <C-g>u<c-u> inoremap <C-w> <C-g>u<c-w> "} "}}} "FILETYPE SPECIFIC MAPPINGS: {{{ "extradite autocmd FileType extradite map <buffer> <Right> <Down> autocmd FileType extradite map <buffer> l j autocmd FileType extradite map <buffer> <Left> <Up> autocmd FileType extradite map <buffer> h k autocmd FileType extradite map <buffer> <C-F4> q autocmd FileType extradite map <buffer> <A-F4> q "gundo autocmd FileType gundo map <buffer> <LeftMouse> <LeftMouse>0l autocmd FileType gundo map <buffer> <MiddleMouse> <LeftMouse> autocmd FileType gundo map <buffer> <RightMouse> <LeftMouse> autocmd FileType gundo map <buffer> <Right> <Down> autocmd FileType gundo map <buffer> l j autocmd FileType gundo map <buffer> <Left> <Up> autocmd FileType gundo map <buffer> h k "help if !&diff autocmd FileType help map <buffer> <silent><expr> q ':q<CR>' autocmd FileType help map <buffer> <silent><expr> <Leader><F1> ':q<CR>' autocmd FileType help map <buffer> <silent><expr> <Leader>? ':q<CR>' endif "markdown: launch table of contents instead of the tagbar autocmd FileType mkd map <buffer> <silent><expr> <C-F3> ':Toch<CR>' autocmd FileType mkd map <buffer> <silent><expr> <A-F3> ':Toch<CR>' autocmd Filetype mkd nnoremap <buffer> <silent><expr> <Leader>F ':TableFormat<CR>:echo "Markdown tables have been formatted with :FormatTable"<CR>' "markdown table of contents autocmd FileType qf map <buffer> <LeftMouse> <LeftMouse>0 autocmd FileType qf map <buffer> <MiddleMouse> <LeftMouse> autocmd FileType qf map <buffer> <RightMouse> <LeftMouse> autocmd FileType qf map <buffer> <2-LeftMouse> <CR> autocmd FileType qf map <buffer> <Space> <CR><C-w>p autocmd FileType qf map <buffer> <Left> <Up> autocmd FileType qf map <buffer> <Right> <Down> autocmd FileType qf map <buffer> h j autocmd FileType qf map <buffer> l k autocmd FileType qf map <buffer> <silent><expr> q ':call ToggleQuickfixList()<CR>' autocmd FileType qf map <buffer> <silent><expr> <C-F3> ':call ToggleQuickfixList()<CR>' autocmd FileType qf map <buffer> <silent><expr> <A-F3> ':call ToggleQuickfixList()<CR>' "vimdiff autocmd FilterWritePre * if &diff|nnoremap <buffer> <silent><expr> <Leader><> ':diffu<CR>'|endif autocmd FilterWritePre * if &diff|nnoremap <buffer> <silent><expr> <Leader>>< ':diffu<CR>'|endif autocmd FilterWritePre * if &diff|nnoremap <buffer> <Leader>> dp|endif autocmd FilterWritePre * if &diff|nnoremap <buffer> <Leader>< do|endif autocmd FilterWritePre * if &diff|cabbrev q! qall!|endif "vimfiler autocmd FileType vimfiler map <buffer> <LeftMouse> <LeftMouse>0 autocmd FileType vimfiler map <buffer> <MiddleMouse> <LeftMouse> autocmd FileType vimfiler map <buffer> <RightMouse> <LeftMouse> autocmd FileType vimfiler map <buffer> <2-LeftMouse> <Plug>(vimfiler_edit_file) autocmd FileType vimfiler map <buffer> <Right> l autocmd FileType vimfiler map <buffer> <Left> h autocmd FileType vimfiler map <buffer> ' e autocmd FileType vimfiler map <buffer> ~ q "}}} "DISABLED MAPPINGS FOR FILETYPES: {{{ "remove incompatible toggles from specific file types autocmd Filetype qf,gundo,vimfiler,tagbar,extradite,help noremap <buffer> ~ <Nop> autocmd Filetype qf,vimfiler,extradite,help noremap <buffer> <C-F2> <Nop> autocmd Filetype qf,vimfiler,extradite,help noremap <buffer> <A-F2> <Nop> autocmd Filetype gundo,vimfiler,extradite,help noremap <buffer> <C-F3> <Nop> autocmd Filetype gundo,vimfiler,extradite,help noremap <buffer> <A-F3> <Nop> autocmd Filetype qf,gundo,vimfiler,tagbar,help,diff noremap <buffer> <C-F4> <Nop> autocmd Filetype qf,gundo,vimfiler,tagbar,help,diff noremap <buffer> <A-F4> <Nop> "disable modifier keys with directions that would interfere with logic autocmd Filetype qf,gundo,vimfiler noremap <buffer> <C-Up> <Nop> autocmd Filetype qf,gundo,vimfiler noremap <buffer> <C-k> <Nop> autocmd Filetype qf,gundo,vimfiler noremap <buffer> <C-Down> <Nop> autocmd Filetype qf,gundo,vimfiler noremap <buffer> <C-j> <Nop> autocmd Filetype qf,gundo,vimfiler,extradite noremap <buffer> <C-Right> <Nop> autocmd Filetype qf,gundo,vimfiler,extradite noremap <buffer> <C-l> <Nop> autocmd Filetype qf,gundo,vimfiler,extradite noremap <buffer> <C-Left> <Nop> autocmd Filetype qf,gundo,vimfiler,extradite noremap <buffer> <C-h> <Nop> autocmd Filetype qf,gundo,vimfiler noremap <buffer> <S-Up> <Nop> autocmd Filetype qf,gundo,vimfiler noremap <buffer> <S-k> <Nop> autocmd Filetype qf,gundo,vimfiler noremap <buffer> <S-Down> <Nop> autocmd Filetype qf,gundo,vimfiler noremap <buffer> <S-j> <Nop> autocmd Filetype qf,gundo,vimfiler,extradite noremap <buffer> <S-Right> <Nop> autocmd Filetype qf,gundo,vimfiler,extradite noremap <buffer> <S-l> <Nop> autocmd Filetype qf,gundo,vimfiler,extradite noremap <buffer> <S-Left> <Nop> autocmd Filetype qf,gundo,vimfiler,extradite noremap <buffer> <S-h> <Nop> "}}}