darkcloud-nvimconfig/vim/config/keyboard.vim
Kevin 2ee0a576e3 Added <Tab> and <Shift><Tab> to normal mode, doing the same thing as in
visual, :wsudo and :esudo can now be run with :sudow and :sudoe, fixed
a few issues where gvim settings wouldn't be enabled if gvim was started
using :gui in command mode, = now does what + does so you can use - and
+ without holding shift for the + part, the ctrl/shift
up/down/left/right + h/j/k/l stuff now works the same for both using the
behaviour I suspect most people will expect from them, a 'lot' of
behaviour that didn't work in tmux should now work provided tmux is
using xterm-keys and has its $TERM set to screen*, a bunch of new
default settings have been added to settings.vim (though they're mostly
subtle or behind the scenes tweaks) and it's commented and organized
better now too, and the gvim menubar no longer appears by default (but
you can toggle it with <Ctrl><F1>)
2014-03-28 07:36:19 -04:00

220 lines
8.7 KiB
VimL

" Keyboard Configuration: "
"==========================="
"
" Reference: (view plugin documentation for the full list of commands each offers)
" <Ctrl-z>, | (A) -> enter this following an emme 'word' (ie: html:5)
" <Leader><F2> | (N) -> toggle hexhighlight's hexcode to colours in :gui
" 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 ""
" ds" | (N) -> delete surrounding ""
"
" Mappings:
" = | (N) -> move to the first character on the next line
" <Ctrl-ScrollUp> | (A) -> scroll right
" <Ctrl-ScrollDown> | (A) -> scroll left
" <Shift-MiddleClick> | (A) -> unbind this from vim so xorg can paste
" <Ctrl-t> | (A) -> open a new tab
" <Ctrl-n> | (A) -> go to the next open tab
" <Ctrl-p> | (A) -> go to the previous open tab
" <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
" \\ | (N) -> show spelling suggestions popup for selection
" ` | (N) -> toggle the nerdtree sidebar
" ~ | (N) -> toggle the tagbar sidebar
" p | (V) -> paste and replace the selection
" <Shift-p> | (N) -> paste and replace the current word
" <F1> | (A) -> toggle line numbers
" <F2> | (A) -> toggle line wrapping
" <F3> | (A) -> toggle row/column highlighting
" <F4> | (A) -> toggle spellcheck
" <F12> | (A) -> toggle collapsed/folded rows
" <Leader><C-f> | (N) -> format document and return to current line
" <Leader><C-w> | (N) -> remove whitespace
" <Ctrl-Up> | (N) -> move to the beginning of the document
" <Ctrl-k> | (N) -> move to the beginning of the document
" <Ctrl-Down> | (N) -> move to the end of the document
" <Ctrl-j> | (N) -> move to the end of the document
" <Ctrl-Right> | (N) -> move to the end of the line
" <Ctrl-l> | (N) -> move to the end of the line
" <Ctrl-Left> | (N) -> move to the beginning of the non-whitespace
" <Ctrl-h> | (N) -> move to the beginning of the line
" <Ctrl-a> | (N) -> select all
" <Shift-Up> | (N) -> select all text above the cursor
" <Shift-k> | (N) -> select all text above the cursor
" <Shift-Down> | (N) -> select all text below the cursor
" <Shift-j> | (N) -> select all text below the cursor
" <Shift-Right> | (N) -> select all text to the right of the cursor
" <Shift-l> | (N) -> select all text to the right of the cursor
" <Shift-Left> | (N) -> select to the beginning of the non-whitespace
" <Shift-h> | (N) -> select to the beginning of the line
"
" (neocomplcache)
" <Tab> | (I) -> write the part common to all suggestions
" <Backspace> | (I) -> cancle the match dialog (during suggestion)
" <Leader><Backspace> | (N) -> undo the most recent match selection
"
" GVim Mappings:
" <Ctrl-F1> | (A) -> toggle the menu
" <Ctrl-F2> | (A) -> toggle the toolbar
" <Ctrl-F3> | (A) -> toggle the scrollbar
"
" Aliases:
" :wsudo & :sudow | (N) -> :SudoWrite (write the file as root using sudo)
" :esudo & :sudoe | (N) -> :SudoRead (read a file as root using sudo)
"
" Notes:
" *by the default <Leader> key is: \
"
"MAPPINGS: GENERAL KEYBINDINGS AND REBINDINGS {{{
"map = to + so shift doesn't need to be held to use its functionality
nnoremap = +
"hold shift to enable middle-click paste
noremap <S-Insert> <MiddleMouse>
noremap! <S-Insert> <MiddleMouse>
"hold ctrl to scroll left/right instead of up/down
noremap <C-ScrollWheelUp> 3zl
noremap <C-ScrollWheelDown> 3zh
"tab and untabbing selected blocks
vnoremap <Tab> >gv
vnoremap <S-Tab> <gv
nnoremap <Tab> v>gv<Esc>
nnoremap <S-Tab> v<gv<Esc>
"press backslash twice on a mispelled word for suggestions
nnoremap \\ ea<C-X><C-S>
"move to the next and previous tabs
nnoremap <silent><expr> <C-t> ':tabnew<CR>'
nnoremap <silent><expr> <C-n> ':tabnext<CR>'
nnoremap <silent><expr> <C-p> ':tabprev<CR>'
"map shift-p to paste over a word, and visual paste to replace selection
vnoremap p "_d"0P
nnoremap <S-p> "_diwP
"unmap F1 from help then map it to toggle the display of line numbers
nnoremap <silent><expr> <F1> ':set number!<CR>'
inoremap <silent><expr> <F1> '<Esc>:set number!<CR>a'
vnoremap <silent><expr> <F1> '<Esc>:set number!<CR>v'
"toggle line wrapping (and bottom bar if using the gui)
nnoremap <silent><expr> <F2> ':set wrap! go'.'-+'[&wrap]."=b\r"
inoremap <silent><expr> <F2> '<Esc>:set wrap! go'.'-+'[&wrap]."=b\ra"
vnoremap <silent><expr> <F2> '<Esc>:set wrap! go'.'-+'[&wrap]."=b\rv"
"toggle the cursor line and column
nnoremap <silent><expr> <F3> ':set cursorline! cursorcolumn!<CR>'
inoremap <silent><expr> <F3> '<Esc>:set cursorline! cursorcolumn!<CR>a'
vnoremap <silent><expr> <F3> '<Esc>:set cursorline! cursorcolumn!<CR>v'
"toggle spellcheck
nnoremap <silent><expr> <F4> ':set spell!<CR>'
inoremap <silent><expr> <F4> '<Esc>:set spell!<CR>a'
vnoremap <silent><expr> <F4> '<Esc>:set spell!<CR>a'
"toggle folded code at foldpoints
inoremap <F12> <C-O>za
nnoremap <F12> za
onoremap <F12> <C-C>za
vnoremap <F12> <Esc>zav
"format the document
nnoremap <Leader><C-f> mzgg=G`z<CR>
"remove trailing white space from the document
nnoremap <silent><expr> <Leader><C-w> ':FixWhitespace<CR>'
"remap keys to scroll through text
nnoremap <C-Up> gg0
nnoremap <C-k> gg0
nnoremap <C-Down> G$
nnoremap <C-j> G$
nnoremap <C-Right> $
nnoremap <C-l> $
nnoremap <C-Left> ^
nnoremap <C-h> ^
"map remap keys to select text
nnoremap <C-a> gg0vG$
nnoremap <S-Up> vgg0
nnoremap <S-k> vgg0
nnoremap <S-Down> vG$
nnoremap <S-j> vG$
nnoremap <S-Right> v$
nnoremap <S-l> v$
nnoremap <S-Left> v^
nnoremap <S-h> v^
"}}}
"PLUGIN KEYBINDINGS {{{
"toggle the nerd tree sidebar
nnoremap <silent><expr> ` ':NERDTree<CR>'
"toggle the tagbar sidebar
nnoremap <silent><expr> ~ ':TagbarToggle<CR>'
"neocomplcache suggestions: cancel, autocomplete, scroll up and scroll down
inoremap <expr><Tab> pumvisible() ? neocomplcache#complete_common_string() : "\<Tab>"
inoremap <expr><Backspace> pumvisible() ? neocomplcache#close_popup() : "\<Backspace>"
inoremap <expr><Leader><Backspace> neocomplcache#undo_completion()
"emmet switch triggerkey from <Ctrl-Y> to <Ctrl-Z>
let g:user_emmet_leader_key='<C-Z>'
"}}}
"TMUX AND SCREEN COMPATIBILITY: SOME HACKS TO MAKE THINGS WORK RIGHT {{{
if $TERM =~ '^screen-256color'
nmap <Esc>OH <Home>
imap <Esc>OH <Home>
nmap <Esc>OF <End>
imap <Esc>OF <End>
endif
"tmux will send xterm-style keys when xterm-keys is on
if &term =~ '^screen' && exists('$TMUX')
execute "set <xUp>=\e[1;*A"
execute "set <xDown>=\e[1;*B"
execute "set <xRight>=\e[1;*C"
execute "set <xLeft>=\e[1;*D"
execute "set <xHome>=\e[1;*H"
execute "set <xEnd>=\e[1;*F"
execute "set <Insert>=\e[2;*~"
execute "set <Delete>=\e[3;*~"
execute "set <PageUp>=\e[5;*~"
execute "set <PageDown>=\e[6;*~"
execute "set <xF1>=\e[1;*P"
execute "set <xF2>=\e[1;*Q"
execute "set <xF3>=\e[1;*R"
execute "set <xF4>=\e[1;*S"
execute "set <F5>=\e[15;*~"
execute "set <F6>=\e[17;*~"
execute "set <F7>=\e[18;*~"
execute "set <F8>=\e[19;*~"
execute "set <F9>=\e[20;*~"
execute "set <F10>=\e[21;*~"
execute "set <F11>=\e[23;*~"
execute "set <F12>=\e[24;*~"
endif
"}}}
"GVIM: MAPPINGS FOR GUI ELEMENTS {{{
"map toggles for the menu, toolbar and vertical scrollbar
noremap <silent><expr> <C-F1> ":if &go=~#'m'<Bar>set go-=m<Bar>else<Bar>set go+=m<Bar>endif<CR>"
noremap <silent><expr> <C-F2> ":if &go=~#'T'<Bar>set go-=T<Bar>else<Bar>set go+=T<Bar>endif<CR>"
noremap <silent><expr> <C-F3> ":if &go=~#'r'<Bar>set go-=r<Bar>else<Bar>set go+=r<Bar>endif<CR>"
"}}}
"ALIASES: COMMAND SHORTCUTS {{{
cabbrev sudow SudoWrite
cabbrev wsudo SudoWrite
cabbrev sudoe SudoRead
cabbrev esudo SudoRead
"}}}