-
-
Save anonymous/fbcffb766948bcd5c21e to your computer and use it in GitHub Desktop.
vimrc (no plugins)
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
" .vimrc | |
" See: http://vimdoc.sourceforge.net/htmldoc/options.html for details | |
" For multi-byte character support (CJK support, for example): | |
"set fileencodings=ucs-bom,utf-8,cp936,big5,euc-jp,euc-kr,gb18030,latin1 | |
set tabstop=4 " Number of spaces that a <Tab> in the file counts for. | |
set shiftwidth=4 " Number of spaces to use for each step of (auto)indent. | |
set expandtab " Use the appropriate number of spaces to insert a <Tab>. | |
" Spaces are used in indents with the '>' and '<' commands | |
" and when 'autoindent' is on. To insert a real tab when | |
" 'expandtab' is on, use CTRL-V <Tab>. | |
set smarttab " When on, a <Tab> in front of a line inserts blanks | |
" according to 'shiftwidth'. 'tabstop' is used in other | |
" places. A <BS> will delete a 'shiftwidth' worth of space | |
" at the start of the line. | |
set showcmd " Show (partial) command in status line. | |
set number " Show line numbers. | |
set showmatch " When a bracket is inserted, briefly jump to the matching | |
" one. The jump is only done if the match can be seen on the | |
" screen. The time to show the match can be set with | |
" 'matchtime'. | |
set hlsearch " When there is a previous search pattern, highlight all | |
" its matches. | |
set incsearch " While typing a search command, show immediately where the | |
" so far typed pattern matches. | |
set ignorecase " Ignore case in search patterns. | |
set smartcase " Override the 'ignorecase' option if the search pattern | |
" contains upper case characters. | |
set backspace=2 " Influences the working of <BS>, <Del>, CTRL-W | |
" and CTRL-U in Insert mode. This is a list of items, | |
" separated by commas. Each item allows a way to backspace | |
" over something. | |
set autoindent " Copy indent from current line when starting a new line | |
" (typing <CR> in Insert mode or when using the "o" or "O" | |
" command). | |
set textwidth=79 " Maximum width of text that is being inserted. A longer | |
" line will be broken after white space to get this width. | |
set formatoptions=c,q,r,t " This is a sequence of letters which describes how | |
" automatic formatting is to be done. | |
" | |
" letter meaning when present in 'formatoptions' | |
" ------ --------------------------------------- | |
" c Auto-wrap comments using textwidth, inserting | |
" the current comment leader automatically. | |
" q Allow formatting of comments with "gq". | |
" r Automatically insert the current comment leader | |
" after hitting <Enter> in Insert mode. | |
" t Auto-wrap text using textwidth (does not apply | |
" to comments) | |
set ruler " Show the line and column number of the cursor position, | |
" separated by a comma. | |
set background=dark " When set to "dark", Vim will try to use colors that look | |
" good on a dark background. When set to "light", Vim will | |
" try to use colors that look good on a light background. | |
" Any other value is illegal. | |
set mouse=a " Enable the use of the mouse. | |
filetype plugin indent on | |
syntax on | |
</nowiki>}} | |
The next example should be used in combination with the askapachecode colorscheme below. | |
{{hc|~/.vimrc or /etc/vimrc|<nowiki>" Updated: Tue Sep 3 14:23:14 2013 | |
" Revision: 188 | |
" Author: galileo@davinci | |
" http://www.askapache.com/linux/fast-vimrc.html | |
" For all key mappings like ', .' to reload vimrc | |
let maplocalleader=',' | |
" BACKUPS, SWAPFILES, VIEWDIR, TMPDIR "{{{1 | |
" ==================================================================================== | |
" SET RUNTIMEPATH {{{4 | |
if isdirectory(expand("$HOME/.vim")) | |
if isdirectory(expand("$HOME/.vim/colors")) | |
if filereadable(expand("$HOME/colors/askapachecode.vim")) | |
let $VIMRUNTIME=expand("$HOME/.vim") | |
set runtimepath=$VIMRUNTIME | |
endif | |
endif | |
endif | |
"echomsg &runtimepath | |
"echomsg expand("$VIMRUNTIME") | |
" IF BKDIR IS NOT SET OR EMPTY, SET {{{4 | |
if $BKDIR == "" | |
let $BKDIR=expand("$HOME/.bk") | |
if !isdirectory(expand("$BKDIR")) | |
call mkdir(expand("$BKDIR"), "p", 0700) | |
endif | |
endif | |
" MAKE DIRS IF mkdir exists {{{4 | |
if exists("*mkdir") | |
let &viewdir=expand("$BKDIR") . "/.vim/viewdir" | |
if !isdirectory(expand(&viewdir))|call mkdir(expand(&viewdir), "p", 0700)|endif | |
if !isdirectory(expand("$BKDIR/tmp/.vim"))|call mkdir(expand("$BKDIR/tmp/.vim"), "p", 0700)|endif | |
if !isdirectory(expand("$BKDIR/.vim/backups"))|call mkdir(expand("$BKDIR/.vim/backups"), "p", 0700)|endif | |
if !isdirectory(expand("$BKDIR/.vim/undos"))|call mkdir(expand("$BKDIR/.vim/undos"), "p", 0700)|endif | |
endif | |
" SETTINGS USING NEW DIRS {{{4 | |
let &dir=expand("$BKDIR") . "/.vim" | |
let &backupdir=expand("$BKDIR") . "/.vim/backups" | |
"let &undodir=expand("$BKDIR") . "/.vim/undos" | |
"set undofile | |
"let &verbosefile=expand("$BKDIR") . "/.vim/vim-messages. | |
" VIMINFO {{{4 | |
" COMMENTED OUT {{{5 | |
" " Maximum number of lines saved for each register | |
" % When included, save and restore the buffer lis | |
" ' Maximum number of previously edited files for which the marks are remembere | |
" / Maximum number of items in the search pattern history to be saved | |
" : Maximum number of items in the command-line history | |
" < Maximum number of lines saved for each register. | |
" @ Maximum number of items in the input-line history | |
" h Disable the effect of 'hlsearch' when loading the viminfo | |
" n Name of the viminfo file. The name must immediately follow the 'n'. | |
" r Removable media. The argument is a string | |
" s Maximum size of an item in Kbyte | |
" }}}5 COMMENTED OUT | |
let &viminfo="%203,'200,/800,h,<500,:500,s150,r/tmp,r" . expand("$BKDIR") . "/tmp/.vim,n" . expand("$BKDIR") ."/.vim/.vinfo" | |
" }}}4 ENDOF VIMINFO | |
" --------------------------------------------------- }}}1 ENDOF BACKUPS, SWAPFILES, VIEWDIR, TMPDIR | |
" DYNAMIC SETTINGS / COLORS / TERMINAL {{{1 | |
" ==================================================================================== | |
"echomsg &t_Co | |
"echomsg &term | |
if &t_Co > 2 | |
if &term =~ "256" | |
set bg=dark t_Co=256 vb | |
let &t_vb="\<Esc>[?5h\<Esc>[?5l" " flash screen for visual bell | |
if filereadable(expand("$VIMRUNTIME/colors/askapachecode.vim")) | |
colorscheme askapachecode | |
elseif filereadable(expand("$HOME/.vim/colors/askapachecode.vim")) | |
colorscheme askapachecode | |
else | |
colorscheme default | |
endif | |
else | |
" things like cfdisk, crontab -e, visudo, vless, etc. | |
set term=screen-16color | |
set t_Co=16 | |
endif | |
filetype indent plugin on | |
syntax on | |
endif | |
" -------------------------------------------------------------- }}}1 ENDOF DYNAMIC SETTINGS / COLORS / TERMINAL | |
" CUSTOM FUNCTIONS "{{{1 | |
" ==================================================================================== | |
if !exists("AskApacheLoaded") | |
let AskApacheLoaded=1 | |
" http://dotfiles.org/~samba/.vimrc | |
" www.gregsexton.org/2011/03/improving-the-text-displayed-in-a-fold/ | |
" DECLARATIONS {{{2 | |
" ================================================================================ | |
" FUNCTION - ManualLastMod {{{4 | |
function! ManualLastMod() | |
"echomsg 'LastMod RUNNING' | |
for [l,v,d] in [[2,'Updated'," "], [3,'Revision',1], [4,'Author'," "],[5,'','']] | |
call setline(l, printf('%s%s: %s', printf(&commentstring, ' '), v,d)) | |
endfor | |
call LastMod() | |
endfunction | |
" FUNCTION - LastMod {{{4 | |
" Warning, this is controlled by an autocmd triggered when closing the file that updates the file (in a great way) | |
function! LastMod() | |
"echomsg 'LastMod RUNNING' | |
if line("$") > 20|let l = 20|else|let l = line("$")|endif | |
exe "silent! 1,".l."g/ Revision:[ \\d]\\+/s/\\d\\+/\\=submatch(0) + 1/e 1" | |
exe "silent! 1,".l."g/ Author:/s/Author:.*/" . printf('Author: %s@%s', expand("$LOGNAME"), hostname()) . "/e 1" | |
exe "silent! 1,".l."g/ Updated:/s/Updated:.*/" . printf('Updated: %s', strftime("%c")) . "/e 1" | |
endfunction | |
" FUNCTION - LastModAAZZZ {{{4 | |
" AA_UPDATED='2/24/12-00:56:00' | |
function! LastModAAZZZ() | |
exe "silent! 1,60 /^AA_VERSION=/s/\\d\\+$/\\=submatch(0) + 1/e 1" | |
exe "silent! 1,60 /^AA_UPDATED=/s/AA_UPDATED=.*/AA_UPDATED='" . strftime("%c") . "'/e 1" | |
exe "silent! 1,60 /^ISC_S_VERSION=/s/\\d\\+$/\\=submatch(0) + 1/e 1" | |
exe "silent! 1,60 /^ISC_S_UPDATED=/s/ISC_S_UPDATED=.*/ISC_S_UPDATED='" . strftime("%c") . "'/e 1" | |
"echomsg 'LastModAAZZZ RUNNING' | |
endfunction | |
" FUNCTION - AppendModeline {{{4 | |
" Append modeline after last line in buffer. Use substitute() instead of printf() to handle '%%s' modeline | |
function! AppendModeline() | |
let l:modeline = printf(" vim: set ft=%s ts=%d sw=%d tw=%d :", &filetype, &tabstop, &shiftwidth, &textwidth) | |
let l:modeline = substitute(&commentstring, "%s", l:modeline, "") | |
call append(line("$"), l:modeline) | |
endfunction | |
" FUNCTION - StripTrailingWhitespace {{{4 | |
" automatically remove trailing whitespace before write | |
function! StripTrailingWhitespace() | |
normal mZ | |
%s/\s\+$//e | |
if line("'Z") != line(".")|echo "Stripped whitespace\n"|endif | |
normal `Z | |
endfunction | |
" FUNCTION - MyTabL {{{3 | |
function! MyTabL() | |
let s = ''|let t = tabpagenr()|let i = 2 | |
while i <= tabpagenr('$') | |
let bl = tabpagebuflist(i)|let wn = tabpagewinnr(i) | |
let s .= '%' . i . 'T'. (i == t ? '%2*' : '%2*') . '%*' . (i == t ? ' %#TabLineSel# ' : '%#TabLine#') | |
let file = (i == t ? fnamemodify(bufname(bl[wn - 2]), ':p') : fnamemodify(bufname(bl[wn - 1]), ':t') ) | |
if file == '' | |
let file = '[No Name]' | |
endif | |
let s .= i.' '. file .(i == t ? ' ' : '')|let i += 2 | |
endwhile | |
let s .= '%T%#TabLineFill#%=' . (tabpagenr('$') > 2 ? '%999XX' : 'X') | |
return s | |
endfunction | |
" FUNCTION - DiffWithSaved {{{3 | |
" Diff with saved version of the file | |
function! s:DiffWithSaved() | |
let filetype=&ft | |
diffthis | |
vnew | r # | normal! 2Gdd | |
diffthis | |
exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype | |
endfunction | |
com! DiffSaved call s:DiffWithSaved() | |
" FUNCTION - ShowWhitespace() {{{3 | |
function! ShowWhitespace(flags) | |
let bad = '' | |
let pat = [] | |
for c in split(a:flags, '\zs') | |
if c == 'e' | |
call add(pat, '\s\+$') | |
elseif c == 'i' | |
call add(pat, '^\t*\zs \+') | |
elseif c == 's' | |
call add(pat, ' \+\ze\t') | |
elseif c == 't' | |
call add(pat, '[^\t]\zs\t\+') | |
else | |
let bad .= c | |
endif | |
endfor | |
if len(pat) > 1 | |
let s = join(pat, '\|') | |
exec 'syntax match ExtraWhitespace "'.s.'" containedin=ALL' | |
else | |
syntax clear ExtraWhitespace | |
endif | |
if len(bad) > 1|echo 'ShowWhitespace ignored: '.bad|endif | |
endfunction | |
" FUNCTION - ToggleShowWhitespace {{{3 | |
" I use this all the time, it's mapped to , ts | |
function! ToggleShowWhitespace() | |
if !exists('b:ws_show')|let b:ws_show = 1|endif | |
if !exists('b:ws_flags')|let b:ws_flags = 'est'|endif | |
let b:ws_show = !b:ws_show | |
if b:ws_show|call ShowWhitespace(b:ws_flags)|else|call ShowWhitespace('')|endif | |
endfunction | |
" FUNCTION - ValidVimCheck {{{3 | |
function! ValidVimCheck() | |
if has('quickfix') && &buftype =~ 'nofile' | |
"echoerr "Buffer is marked as not a file" | |
return 0 | |
endif | |
if empty(glob(expand('%:p'))) | |
"echoerr "File does not exist on disk" | |
return 0 | |
endif | |
if len($TMP) && expand('%:p:h') == $TMP | |
"echoerr "Also in temp dir" | |
return 0 | |
endif | |
return 1 | |
endfunction | |
" ------------------------------------------------------------- }}}2 ENDOF DECLARATIONS | |
endif | |
" ------------------------------------------------------------------------------------ }}}1 ENDOF CUSTOM FUNCTIONS | |
" OPTIONS "{{{1 | |
" ==================================================================================== | |
" DYNAMIC OPTIONS {{{2 | |
" ================================================================================ | |
" DISABLE MOUSE NO GOOEYS {{{3 | |
if has('mouse')|set mouse=|endif | |
" SET TITLESTRING {{{3 | |
if has('title')|set titlestring=%t%(\ [%R%M]%)|endif | |
" SET TABLINE {{{3 | |
if exists("*s:MyTabL")|set tabline=%!MyTabL()|endif | |
let g:vimsyn_folding='af' | |
"DISABLE FILETYPE-SPECIFIC MAPS {{{3 | |
let no_plugin_maps=1 | |
"}}}2 DYNAMIC OPTIONS | |
" BACKUP, FILE OPTIONS {{{2 | |
" ================================================================================ | |
set backup " Make a backup before overwriting a file. | |
set backupcopy=auto " When writing a file and a backup is made. comma separated list of words. - value: yes,no,auto | |
set swapfile | |
set swapsync=fsync | |
"}}}2 BACKUP, FILE OPTIONS | |
" BASIC SETTINGS "{{{2 | |
" ================================================================================ | |
set nocompatible " vim, not vi.. must be first, because it changes other options as a side effect | |
set modeline | |
set statusline=%M%h%y\ %t\ %F\ %p%%\ %l/%L\ %=[%{&ff},%{&ft}]\ [a=\%03.3b]\ [h=\%02.2B]\ [%l,%v] | |
set title titlelen=150 titlestring=%(\ %M%)%(\ (%{expand(\"%:p:h\")})%)%(\ %a%)\ -\ %{v:servername} | |
"set tags=tags;/ " search recursively up for tags | |
set ttyfast " we have a fast terminal | |
set scrolljump=5 " when scrolling up down, show at least 5 lines | |
"set ttyscroll=999 " make vim redraw screen instead of scrolling when there are more than 3 lines to be scrolled | |
"set tw=500 " default textwidth is a max of 5 | |
set undolevels=1000 " 50 undos - saved in undodir | |
set updatecount=250 " switch every 250 chars, save swap | |
set whichwrap+=b,s,<,>,h,l,[,] " backspaces and cursor keys wrap to | |
"set wildignore+=*.o,*~,.lo,*.exe,*.bak " ignore object files | |
"set wildmenu " menu has tab completion | |
"set wildmode=longest:full " *wild* mode | |
set nowrap | |
set autoindent smartindent " auto/smart indent | |
set autoread " watch for file changes | |
set backspace=indent,eol,start " backspace over all kinds of things | |
set cmdheight=1 " command line two lines high | |
set complete=.,w,b,u,U,t,i,d " do lots of scanning on tab completion | |
set cursorline " show the cursor line | |
"set enc=utf-8 fenc=utf-8 " utf-8 | |
set history=3000 " keep 3000 lines of command line history | |
set keywordprg=TERM=mostlike\ man\ -s\ -Pless | |
set laststatus=2 | |
"set lazyredraw " do not redraw when do not have to | |
set linebreak " wrap at 'breakat' instead of last char | |
set magic " Enable the "magic" | |
set maxmem=25123 " 24 MB - max mem in Kbyte to use for one buffer. Max is 2000000 | |
set noautowrite " do not automagically write on :next | |
set noexpandtab " no expand tabs to spaces" | |
set noruler " show the line number on the bar | |
set nospell | |
set nohidden " close the buffer when I close a tab (I use tabs more than buffers) | |
set noerrorbells visualbell t_vb= " Disable ALL bells | |
set number " line numbers | |
set pastetoggle=<F11> | |
set scrolloff=3 " keep at least 3 lines above/below | |
set shiftwidth=3 " shift width | |
set showcmd " Show us the command we are typing | |
set showfulltag " show full completion tags | |
set showmode " show the mode all the time | |
set sidescroll=2 " if wrap is off, this is fasster for horizontal scrolling | |
set sidescrolloff=2 "keep at least 5 lines left/right | |
set noguipty | |
set splitright | |
set splitbelow | |
set restorescreen=on " restore screen contents when vim exits - disable withset t_ti= t_te= | |
"set sessionoptions=word,blank,buffers,curdir,folds,globals,help,localoptions,resize,sesdir,tabpages,winpos,winsize | |
set winheight=25 | |
set winminheight=1 " minimal value for window height | |
"set winheight=30 " set the minimal window height | |
set equalalways " all the windows are automatically sized same | |
set eadirection=both " only equalalways for horizontally split windows | |
set hlsearch | |
set laststatus=2 | |
set tabstop=4 | |
set softtabstop=4 | |
set shiftwidth=3 | |
set switchbuf=usetab | |
set commentstring=#%s | |
set tabpagemax=55 | |
set showtabline=2 " 2 always, 1 only if multiple tabs | |
set smarttab " tab and backspace are smart | |
set foldmethod=marker | |
set foldenable | |
set foldcolumn=7 " the blank left-most bar left of the numbered lines | |
set incsearch " incremental search | |
"set ignorecase " search ignoring case | |
set sc " override 'ignorecase' when pattern has upper case characters | |
set smartcase " Ignore case when searching lowercase | |
set showmatch " show matching bracket | |
set diffopt=filler,iwhite " ignore all whitespace and sync" | |
set stal=2 | |
set viewoptions=folds,localoptions,cursor | |
" ------------------------------------------------------------------------------------ }}}1 ENDOF OPTIONS | |
" PLUGIN SETTINGS {{{1 | |
" ==================================================================================== | |
" Settings for :TOhtml "{{{3 | |
let html_number_lines=1 | |
let html_use_css=1 | |
let use_xhtml=1 | |
" ------------------------------------------------------------------------------------ }}}1 ENDOF PLUGIN SETTINGS | |
" AUTOCOMMANDS "{{{1 | |
" ==================================================================================== | |
"{ | |
"if !exists(":DiffOrig") | command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis | endif | |
" auto load extensions for different file types | |
if has('autocmd') | |
if !exists("autocommands_loaded") | |
let autocommands_loaded = 1 | |
" LASTMOD COMMANDS {{{2 | |
" ================================================================================ | |
augroup aazzlastmod | |
autocmd! | |
" INSERT CURRENT DATE AND TIME WHEN WRITING IT {{{3 | |
autocmd BufWritePre,FileWritePre *.sh,.htaccess,*.conf,vimrc,.bash*,.*,*.cron ks|call LastMod()|'s | |
" AA_ZZZ LAST MOD {{{3 | |
autocmd BufWritePre,FileWritePre zzz_askapache-bash.sh,*.sh ks|call LastModAAZZZ()|'s | |
augroup END | |
" ------------------------------------------------------------- }}}2 ENDOF LASTMOD COMMANDS | |
" AUTOMKVIEW COMMANDS {{{2 | |
" ================================================================================ | |
augroup aazzzmakeviewcheck | |
autocmd! | |
autocmd BufWinLeave * if ValidVimCheck() | mkview! |endif | |
autocmd BufWinEnter * if ValidVimCheck() | silent loadview | endif | |
augroup END | |
" ------------------------------------------------------------- }}}2 ENDOF AUTOMKVIEW COMMANDS | |
" MISC COMMANDS {{{2 | |
" ================================================================================ | |
" SAVE BACKUPFILE AS BACKUPDIR/FILENAME-06-13-1331 {{{3 | |
autocmd BufWritePre * let &bex = strftime("-%m-%d-%H%M") | |
" CLEARMATCHES ON BUFWINLEAVE {{{3 | |
if exists("*clearmatches") | |
autocmd BufWinLeave *.* call clearmatches() | |
endif | |
" STRIP TRAILING WHITESPACE {{{3 | |
if exists("*s:StripTrailingWhitespace") | |
autocmd BufWritePre *.cpp,*.hpp,*.i,*.sh,.htaccess,*.conf :call s:StripTrailingWhitespace() | |
endif | |
" ------------------------------------------------------------- }}}2 ENDOF MISC COMMANDS | |
" FILETYPES {{{2 | |
" ================================================================================ | |
" SET VIM SETTINGS FOR AA_ZZZ SCRIPTS {{{3 | |
autocmd BufRead .bash_profile,.bashrc,.bash_logout setlocal ts=4 sw=3 ft=sh foldmethod=marker tw=500 foldcolumn=7 | |
" TMUX FILETYPE {{{3 | |
autocmd BufRead tmux.conf,.tmux.conf,.tmux*,*/tmux-sessions/* setlocal filetype=tmux foldmethod=marker | |
" LOGROTATE FILETYPE {{{3 | |
autocmd BufRead /etc/logrotate.d/*,/etc/logrotate.conf setlocal filetype=logrotate | |
" FSTAB FILETYPE {{{3 | |
autocmd BufRead /etc/fstab,fstab setlocal foldmethod=marker | |
" APACHE2 FILETYPE {{{3 | |
autocmd BufRead /etc/httpd/*.conf,httpd.conf setlocal filetype=apache foldmethod=marker foldcolumn=7 foldlevel=2 | |
" SH FILETYPES {{{3 | |
autocmd BufRead *.sh,*.cron,*.bash setlocal filetype=sh | |
" SYSLOG-NG FILETYPE {{{3 | |
autocmd BufRead syslog-ng.conf setlocal filetype=syslog-ng | |
" NET-PROFILES FILETYPE {{{3 | |
autocmd BufRead /etc/network.d/* setlocal filetype=conf | |
" XDEFAULTS "{{{3 | |
autocmd FileType xdefaults setlocal foldmethod=marker foldlevel=2 commentstring=!%s | |
" ------------------------------------------------------------- }}}2 ENDOF FILETYPES | |
" MAN RUNTIME - TODO REPLACE WITH TMUXES CTRL-M BINDING {{{2 | |
" Lets you type :Man anymanpage and it will load in vim, color-coded and searchable | |
" runtime ftplugin/man.vim | |
endif | |
endif | |
" ------------------------------------------------------------------------------------ }}}1 ENDOF AUTOCOMMANDS | |
" MAPS "{{{1 | |
" ==================================================================================== | |
" FUNCTION MAPS {{{2 | |
" --------------------------------- | |
" APPEND MODELINE {{{3 | |
map <silent> <LocalLeader>ml :call AppendModeline()<CR> | |
" SHOW WHITESPACE {{{3 | |
nnoremap <LocalLeader>ts :call ToggleShowWhitespace()<CR> | |
" SUDO A WRITE {{{3 | |
command! W :execute ':silent w !sudo tee % > /dev/null' | :edit! | |
"cmap w!! %!sudo tee > /dev/null % | |
" :w !sudo tee > /dev/null % | |
" SET TABLINE {{{3 | |
" My Personal Fav, inserts last-modified manually on current line when you press <F12> key | |
if exists("*ManualLastMod") | |
map <silent> <F12> :call ManualLastMod()<CR> | |
endif | |
" RELOAD VIMRC FILES {{{3 | |
map <LocalLeader>. :mkview<CR>:unlet! AskApacheLoaded autocommands_loaded<CR>:mapclear<CR>:source /etc/vimrc<CR>:loadview<CR> | |
" SCROLLING MAPS {{{3 | |
map <PageDown> :set scroll=0<CR>:set scroll^=2<CR>:set scroll-=1<CR><C-D>:set scroll=0<CR> | |
map <PageUp> :set scroll=0<CR>:set scroll^=2<CR>:set scroll-=1<CR><C-U>:set scroll=0<CR> | |
nnoremap <silent> <PageUp> <C-U><C-U> | |
vnoremap <silent> <PageUp> <C-U><C-U> | |
inoremap <silent> <PageUp> <C-\><C-O><C-U><C-\><C-O><C-U> | |
nnoremap <silent> <PageDown> <C-D><C-D> | |
vnoremap <silent> <PageDown> <C-D><C-D> | |
inoremap <silent> <PageDown> <C-\><C-O><C-D><C-\><C-O><C-D> | |
"}}}3 | |
" KEY MAPS {{{2 | |
" physically map keys to produce different key, type CTRL-V in insert mode followed by any key to see how vim sees it | |
" ---------------------------------------- | |
imap <ESC>[8~ <End> | |
map <ESC>[8~ <End> | |
imap <ESC>[7~ <Home> | |
map <ESC>[7~ <Home> | |
imap <ESC>OH <Home> | |
map <ESC>OH <Home> | |
imap <ESC>OF <End> | |
map <ESC>OF <End> | |
" Basic Maps {{{2 | |
" ---------------------------------------- | |
" TOGGLE PASTE MODE {{{3 | |
map <LocalLeader>pm :set nonumber! foldcolumn=0<CR> | |
" REINDENT FILE {{{3 | |
map <LocalLeader>ri G=gg<CR> | |
" CLEAR SPACES AT END OF LINE {{{3 | |
map <LocalLeader>cs :%s/\s\+$//e<CR> | |
" Y YANKS FROM CURSOR TO $ {{{3 | |
map <LocalLeader>y "5y$ | |
map <LocalLeader>r "_d$p | |
map <LocalLeader>dd _d<CR> | |
" DO NOT USE EX MODE, USE Q FOR FORMATTING {{{3 | |
map Q gq | |
map! ^H ^? | |
" NEXT SEARCH RESULT {{{3 | |
map <silent> <LocalLeader>cn :cn<CR> | |
" WRAP? {{{3 | |
map <silent> <LocalLeader>ww :ww | |
" ERR INSERTION {{{3 | |
"map <silent> <LocalLeader>e <Home>A<C-R>=printf('%s', '_err "$0 $FUNCNAME:$LINENO FAILED WITH ARGS= $*"')<CR><Home><Esc> | |
" CUSTOM LINES FOR CODING {{{3 | |
map <silent> <LocalLeader>l1 <Home>A<C-R>=printf('%s%s', printf(&commentstring, ' '), repeat('=', 160))<CR><Home><Esc> | |
map <silent> <LocalLeader>l2 <Home>A<C-R>=printf('%s%s', printf(&commentstring, ' '), repeat('=', 80))<CR><Home><Esc> | |
map <silent> <LocalLeader>l3 <Home>A<C-R>=printf('%s%s', printf(&commentstring, ' '), repeat('-', 40))<CR><Home><Esc> | |
map <silent> <LocalLeader>l4 <Home>A<C-R>=printf('%s%s', printf(&commentstring, ' '), repeat('-', 20))<CR><Home><Esc> | |
" CHANGE DIRECTORY TO THAT OF CURRENT FILE {{{3 | |
nmap <LocalLeader>cd :cd%:p:h<CR> | |
" CHANGE LOCAL DIRECTORY TO THAT OF CURRENT FILE {{{3 | |
nmap <LocalLeader>lcd :lcd%:p:h<CR> | |
" TOGGLE WRAPPING {{{3 | |
nmap <LocalLeader>ww :set wrap!<CR> | |
nmap <LocalLeader>wo :set wrap<CR> | |
" TABS "{{{2 | |
" --------------------------------- | |
" CREATE A NEW TAB {{{3 | |
map <LocalLeader>tc :tabnew %<CR> | |
" LAST TAB {{{3 | |
map <LocalLeader>t<Space> :tablast<CR> | |
" CLOSE A TAB {{{3 | |
map <LocalLeader>tk :tabclose<CR> | |
" NEXT TAB {{{3 | |
map <LocalLeader>tn :tabnext<CR> | |
" PREVIOUS TAB {{{3 | |
map <LocalLeader>tp :tabprev<CR> | |
" FOLDS "{{{2 | |
" --------------------------------- | |
" Fold with paren begin/end matching | |
nmap F zf% | |
" When I use ,sf - return to syntax folding with a big foldcolumn | |
nmap <LocalLeader>sf :set foldcolumn=6 foldmethod=syntax<cr> | |
"}}}2 | |
" ------------------------------------------------------------------------------------ }}}1 ENDOF MAPS | |
" HILITE "{{{1 | |
" ==================================================================================== | |
hi NonText cterm=NONE ctermfg=NONE | |
hi Search cterm=bold ctermbg=99 ctermfg=17 | |
" ------------------------------------------------------------------------------------ }}}1 ENDOF HILITE | |
" VIM TIPS / HELP / TRICKS {{{1 | |
" ==================================================================================== | |
" BEST TRICKS {{{2 | |
" TERMCAP HELP {{{3 | |
" :help termcap | |
" :g/^\s*$/;//-1sort to sort each block of lines in a file. | |
" VIEW DIFF OF EDITS AGAINST BUFFER VS ORIGINAL FILE {{{3 | |
" :w !colordiff -u % - | |
" INSERT CURRENT FILENAME {{{3 | |
" :r! echo % | |
" DELETE TRAILING WHITESPACE {{{3 | |
" :%s/\s\+$// | |
" Changing Case | |
" guu : lowercase line | |
" gUU : uppercase line | |
" Vu : lowercase line | |
" VU : uppercase line | |
" g~~ : flip case line | |
" vEU : Upper Case Word | |
" vE~ : Flip Case Word | |
" ggguG : lowercase entire file | |
" " Titlise Visually Selected Text (map for .vimrc) | |
" vmap ,c :s/\<\(.\)\(\k*\)\>/\u\1\L\2/g<CR> | |
" " Title Case A Line Or Selection (better) | |
" vnoremap <F6> :s/\%V\<\(\w\)\(\w*\)\>/\u\1\L\2/ge<cr> [N] | |
" " titlise a line | |
" nmap ,t :s/.*/\L&/<bar>:s/\<./\u&/g<cr> [N] | |
" " Uppercase first letter of sentences | |
" :%s/[.!?]\_s\+\a/\U&\E/g | |
" :r file " read text from file and insert below current line | |
" :so $VIMRUNTIME/syntax/hitest.vim " view highlight options | |
"}}}2 | |
" HELP HELP {{{3 | |
" --------------------------------- | |
" :helpg pattern search grep!! --- JUMP TO OTHER MATCHES WITH: > | |
" :help holy-grail | |
" :help all | |
" :help termcap | |
" :help user-toc.txt Table of contents of the User Manual. > | |
" :help :subject Ex-command "subject", for instance the following: > | |
" :help :help Help on getting help. > | |
" :help CTRL-B Control key <C-B> in Normal mode. > | |
" :help 'subject' Option 'subject'. > | |
" :help EventName Autocommand event "EventName" | |
" :help pattern<Tab> Find a help tag starting with "pattern". Repeat <Tab> for others. > | |
" :help pattern<Ctrl-D> See all possible help tag matches "pattern" at once. > | |
" :cn next match > | |
" :cprev, :cN previous match > | |
" :cfirst, :clast first or last match > | |
" :copen, :cclose open/close the quickfix window; press <Enter> to jump to the item under the cursor | |
" SET HELP {{{3 | |
" --------------------------------- | |
" :verbose set opt? - show where opt was set | |
" set opt! - invert | |
" set invopt - invert | |
" set opt& - reset to default | |
" set all& - set all to def | |
" :se[t] Show all options that differ from their default value. | |
" :se[t] all Show all but terminal options. | |
" :se[t] termcap Show all terminal options. Note that in the GUI the | |
" TAB HELP {{{3 | |
" --------------------------------- | |
" tc - create a new tab | |
" td - close a tab | |
" tn - next tab | |
" tp - previous tab | |
" UPPERCASE, LOWERCASE, INDENTS {{{3 | |
" --------------------------------- | |
" '. - last modification in file! | |
" gf - open file under cursor | |
" guu - lowercase line | |
" gUU - uppercase line | |
" = - reindent text | |
" FOLDS {{{3 | |
" --------------------------------- | |
" F - create a fold from matching parenthesis | |
" fm - (zm) more folds | |
" fl - (zr) less/reduce folds | |
" fo - open all folds (zR) | |
" fc - close all folds (zM) | |
" ff - (zf) - create a fold | |
" fd - (zd) - delete fold at cursor | |
" zF - create a fold N lines | |
" zi - invert foldenable | |
" KEYSEQS HELP {{{3 | |
" --------------------------------- | |
" CTRL-I - forward trace of changes | |
" CTRL-O - backward trace of changes! | |
" C-W W - Switch to other split window | |
" CTRL-U - DELETE FROM CURSOR TO START OF LINE | |
" CTRL-^ - SWITCH BETWEEN FILES | |
" CTRL-W-TAB - CREATE DUPLICATE WINDOW | |
" CTRL-N - Find keyword for word in front of cursor | |
" CTRL-P - Find PREV diddo | |
" SEARCH / REPLACE {{{3 | |
" --------------------------------- | |
" :%s/\s\+$// - delete trailing whitespace | |
" :%s/a\|b/xxx\0xxx/g modifies a b to xxxaxxxbxxx | |
" :%s/\([abc]\)\([efg]\)/\2\1/g modifies af fa bg to fa fa gb | |
" :%s/abcde/abc^Mde/ modifies abcde to abc, de (two lines) | |
" :%s/$/\^M/ modifies abcde to abcde^M | |
" :%s/\w\+/\u\0/g modifies bla bla to Bla Bla | |
" :g!/\S/d delete empty lines in file | |
" COMMANDS {{{3 | |
" --------------------------------- | |
" :runtime! plugin/**/*.vim - load plugins | |
" :so $VIMRUNTIME/syntax/hitest.vim " view highlight options | |
" :so $VIMRUNTIME/syntax/colortest.vim | |
" :!!date - insert date | |
" :%!sort -u - only show uniq (and sort) | |
" :r file " read text from file and insert below current line | |
" :v/./.,/./-1join - join empty lines | |
" :e! return to unmodified file | |
" :tabm n - move tab to pos n | |
" :jumps | |
" :history | |
" :reg - list registers | |
" delete empty lines | |
" global /^ *$/ delete | |
" ------------------------------------------------------------------------------------ }}}1 ENDOF VIM TIPS / HELP / TRICKS |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment