From d21f4c46453b0765408eedb7885441379ace0889 Mon Sep 17 00:00:00 2001 From: Iain Patterson <me@iain.cx> Date: Fri, 8 Aug 2008 15:19:55 +0000 Subject: [PATCH] Use \ or <Leader> instead of Q for mappings. git-svn-id: https://svn.cambridge.iain.cx/profile/trunk@128 6be0d1a5-5cfe-0310-89b6-964be062b18b --- .vimrc | 95 ++++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 49 insertions(+), 46 deletions(-) diff --git a/.vimrc b/.vimrc index baddfed..24b6530 100644 --- a/.vimrc +++ b/.vimrc @@ -61,9 +61,18 @@ se tags=~/.tags,./tags,tags " Don't timeout waiting to interpet, eg, <ESC>OA as an escape code. se ttimeoutlen=100 +" Function to create mappings with either a hardcoded \ or <Leader>. +fun! Mapping(keysequence,mapping) + if version >= "600" + exec "map \\" . a:keysequence . " " . a:mapping + else + exec "map <Leader>" . a:keysequence . " " . a:mapping + endif +endfun + " Use - and = to create underlines. -map - yyp:s/./-/g<RETURN>:let @/=''<RETURN>:<RETURN> -map = yyp:s/./=/g<RETURN>:let @/=''<RETURN>:<RETURN> +call Mapping("-", "yyp:s/./-/g<RETURN>:let @/=''<RETURN>:<RETURN>") +call Mapping("=", "yyp:s/./=/g<RETURN>:let @/=''<RETURN>:<RETURN>") """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Handle options only available in Vim 5 and above. @@ -213,27 +222,30 @@ endfun " Show the status line for the first time. call Show_StatusLine() -" Change to ts=2 with Q2. -map Q2 :se ts=2<CR>:<CR> -" Change to ts=4 with Q4. -map Q4 :se ts=4<CR>:<CR> -" Change to ts=8 with Q8. -map Q8 :se ts=8<CR>:<CR> -" Change to ts=16 with Q6. -map Q6 :se ts=16<CR>:<CR> -" Change to ts=32 with Q3. -map Q3 :se ts=32<CR>:<CR> -" Toggle paste mode with Qp. -map Qp :se paste!<CR>:<CR> -" Swap case-sensitivity with Qc. -map Qc :call Invert_Case()<CR>:<CR> -" Change number mode with Qn. -map Qn :se number!<CR>:<CR> -" Expand or shrink window size with Q> and Q<. For use after toggling number. -map Q> :exe 'se columns+=' . numberwidth<CR>:<CR> -map Q< :exe 'se columns-=' . numberwidth<CR>:<CR> -" Clear search pattern with Q/. -map Q/ :let @/=""<CR>:<CR> +" Change to ts=2 with \2. +call Mapping("2", ":se ts=2<CR>:<CR>") +" Change to ts=4 with \4. +call Mapping("4", ":se ts=4<CR>:<CR>") +" Change to ts=8 with \8. +call Mapping("8", ":se ts=8<CR>:<CR>") +" Change to ts=16 with \6. +call Mapping("6", ":se ts=16<CR>:<CR>") +" Change to ts=32 with \3. +call Mapping("3", ":se ts=32<CR>:<CR>") +" Toggle paste mode with \p. +call Mapping("p", ":se paste!<CR>:<CR>") +" Swap case-sensitivity with \c. +call Mapping("c", ":call Invert_Case()<CR>:<CR>") +" Change number mode with \n. +call Mapping("n", ":se number!<CR>:<CR>") +" Expand or shrink window size with \> and \<. For use after toggling number. +call Mapping(">", ":exe 'se columns+=' . numberwidth<CR>:<CR>") +call Mapping("<", ":exe 'se columns-=' . numberwidth<CR>:<CR>") +" Clear search pattern with \/. +call Mapping("/", ":let @/=\"\"<CR>:<CR>") + +" Forget the Ex mode mapping. +map Q <NOP> endif @@ -269,9 +281,6 @@ if &diff let &columns = 164 endif -" Status bar matches the colour. -highlight StatusLine guifg=white guibg=darkblue ctermbg=white ctermfg=darkblue - " Numbers in blue. highlight LineNr term=underline cterm=bold guifg=blue ctermfg=blue @@ -326,27 +335,21 @@ fun! Cycle_Quickfix() endif endfun -" We use Q for various commands. Unmap it. -" Vim 5 won't let us unmap this as it treats Q as an ambiguous mapping (because -" Qx also exists. With Vim 5 you are rewarded with Ex mode if you don't type -" the Qx sequence quickly enough. Vim 6 allows us to forget the Ex mapping. -map Q <Nop> - -" Swap hex/decimal statusline with Qx. -map Qx :call Cycle_HexStatusLine()<CR>:<CR> -" Change statusline verbosity with Qv. -map Qv :call Cycle_VerboseStatusLine()<CR>:<CR> -" Cycle list styles with Ql. -map Ql :call Cycle_List()<CR>:<CR> -" Toggle tags with Qt. -map Qt :Tlist<CR> -" Change foldmethod with Qf. -map Qf :se foldenable!<CR>:<CR> -" Toggle quickfix window with Qq. -map Qq :call Cycle_Quickfix()<CR>:<CR> -" Rerun filetype detection with Qs. The s is for syntax, as this will be +" Swap hex/decimal statusline with \x. +call Mapping("x", ":call Cycle_HexStatusLine()<CR>:<CR>") +" Change statusline verbosity with \v. +call Mapping("v", ":call Cycle_VerboseStatusLine()<CR>:<CR>") +" Cycle list styles with \l. +call Mapping("l", ":call Cycle_List()<CR>:<CR>") +" Toggle tags with \t. +call Mapping("t", ":Tlist<CR>") +" Change foldmethod with \f. +call Mapping("f", ":se foldenable!<CR>:<CR>") +" Toggle quickfix window with \q. +call Mapping("q", ":call Cycle_Quickfix()<CR>:<CR>") +" Rerun filetype detection with \s. The s is for syntax, as this will be " updated as a side-effect. -map Qs :filetype detect<CR>:<CR> +call Mapping("s", ":filetype detect<CR>:<CR>") " Change status bar colour when various things happen. fun! Highlight_StatusLine(flag) -- 2.7.4