.vimrc

vim中毒者なのでまずはvimrc
思いついたら適当に追加していってるのでなかなかカオス。

"{{{1
"set	{{{2
syntax on
set nocompatible
set noinsertmode
set ruler
set wildmode=list:longest
set wildmenu
set matchpairs+=<:>
set matchtime=3
set hidden
set nowrap
set list
set listchars=tab:\ \ ,trail:_,precedes:<,extends:>
set laststatus=2
set cmdheight=1
set showmode
set smartindent
set autoindent
set incsearch
set hlsearch
set wrapscan
set encoding=utf-8
set backspace=indent,start,eol
set fileformats=unix,dos,mac
set laststatus=2
set statusline=%<%f\ %m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).']['.&ff.']'}%=%l,%c%V%8p
set showcmd
set tags=tags
set viewdir=~/backup/view
set nrformats-=octal
set backupdir=~/backup/vim
set backup

set fileencoding=utf-8
set fileencodings=iso-2022-jp,utf-8,euc-jp,sjis,ucs-2le,ucs-2
if has('autocmd')
	function! AU_ReCheck_FENC()
		if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0
			let &fileencoding=&encoding
		endif
	endfunction
	autocmd BufReadPost * call AU_ReCheck_FENC()
endif
if exists('&ambiwidth')
	set ambiwidth=double
endif

filetype plugin on
filetype indent on

highlight ZenkakuSpace cterm=underline ctermfg=lightblue ctermbg=lightgray
match ZenkakuSpace / /

" dir	{{{2
autocmd CursorHold * call NewUpdate()
set updatetime=500
" 
function! NewUpdate()
 	let dir = strftime("~/backup/vim/%Y/%m/%d", localtime())
 	if !isdirectory(dir)
 		let retval = system("mkdir -p ".dir)
 		let retval = system("chown 500:500 ".dir)
 	endif
 	exe "set backupdir=".dir
 	unlet dir
 
 	let time = strftime("%H_%M_%S", localtime())
 	exe "set backupext=.".time
endfunction

"fold	{{{2
set foldmethod=marker
set foldlevel=1024
set foldtext=MyFoldText()
function MyFoldText()
	let line = getline(v:foldstart)
	let sub = substitute(line, ';\?{{{\d\?\|\;?}}}\d\?', '', 'g' )
	let indent = substitute(v:folddashes, '-', ' ', 'g' )
	return indent . sub . ';' . v:foldlevel
endfunction

"map	{{{2
map <C-E>n :tabnew<CR>
map <C-E>o :tabe
map <C-E>c :tabc
map <C-E><Right> :tabn<CR>
map <C-E><Left> :tabp<CR>

nmap n nzz
nmap N Nzz
nmap * *zz
nmap # #zz
nmap g* g*zz
nmap g# g#zz
nmap j gj
nmap k gk

nmap <ESC><ESC> :nohl<CR><ESC>

"make関係 {{{2
nmap gc :cc<CR>
nmap gp :cp<CR>
nmap gP :cfirst<CR>
nmap gn :cn<CR>
nmap gN :clast<CR>

map \mm :write \| make<CR>
map \mn :write \| make clean \| make<CR>

"Tab	{{{2
map <C-T><C-T> :tabnew \| Explore<CR>
map <C-T><C-Y> :tabn<CR>
map <C-T><C-R> :tabp<CR>
map <C-T><C-G> :tabc<CR>
map! <C-T><C-T> <ESC>:tabnew \| Explore<CR>
map! <C-T><C-Y> <ESC>:tabn<CR>
map! <C-T><C-R> <ESC>:tabp<CR>
map! <C-T><C-G> <ESC>:tabc<CR>

map <C-E><C-E> :Explore<CR>
map! <C-E><C-E> <ESC>:Explore<CR>

map <C-P> <C-N>

"Source	{{{2
"source ~/.vim/browser.vim
"source ~/.vim/calendar.vim
"source ~/.vim/folddigest.vim
"source ~/.vim/matrix.vim
"source ~/.vim/project.vim
"source ~/.vim/synmark.vim
"source ~/.vim/tagexplorer.vim
"source ~/.vim/winfileexplorer.vim
"source ~/.vim/winmanager.vim
"source ~/.vim/wintagexplorer.vim

"Color {{{2
hi Pmenu ctermbg=4
hi PmenuSel ctermbg=1
hi PMenuSbar ctermbg=4

function FoldLevels()
	let nowline = line('.')
	let oldline = -1
	let curline = line('.')
	normal gg
	while oldline != curline
		echo line('.').
		normal! zj
		let oldline = curline
		let curline = line('.')
	endwhile
	execute nowline
endfunction

ポイントとしては

  • 自動時系列バックアップ
  • make関係のmapping(makeめっちゃ便利やねん!!
  • fold周り(ただ最近その辺いじってないのでカオス
  • エンコーディング自動判別は友人のから奪ってきた(w
  • あと地味に全角スペースのマークアップ