Feed

yanbe's watching list

Profile

今の.vimrcだとISO-2022-JPなファイルがたまに文字化けするのが悩みです

.vimrc

"===<Original keybinds and callbacks>=============================
\noremap { "zdi{<C-R>z}<ESC>
vnoremap [ "zdi[<C-R>z]<ESC>
vnoremap ( "zdi(<C-R>z)<ESC>
"vnoremap " "zdi"<C-R>z"<ESC> "this breaks external copy and paste :(
vnoremap ' "zdi'<C-R>z'<ESC>
nmap <C-N> :bn<CR>
nmap <C-P> :bp<CR>
nmap <leader>f :FuzzyFinderFile<CR>
nmap <leader>b :FuzzyFinderBuffer<CR>
nmap <leader>r :FuzzyFinderMruFile<CR>
nmap <leader>s :source ~/.vim/vimsh.vim<CR>

autocmd BufWritePost * :call SyncFile()
function! SyncFile()
let upload_settings = { "/home/yanbe/Projects/socialsearch": "scp://ford.dl.local/public_html/" }
let directory = expand("%:p:h")
if has_key(upload_settings, directory)
exec "silent Nwrite ".upload_settings[directory]."%"
endif
endfunction

"===<etc>===========================
syntax on
set filetype=on

set nocompatible
set binary noeol
set backspace=indent,eol,start
set formatoptions+=m
"set visualbell
set backupdir=~/.vim/backup
set directory=~/.vim/swap
set cmdheight=1
set history=60
set hidden
set foldmethod=syntax
set foldnestmax=1
autocmd FileType javascript,css,html :set foldmethod=indent
autocmd FileType html :set foldnestmax=20

"let mapleader=";"
if has('kaoriya')
set iminsert=0 imsearch=0
endif

"===<encoding>======================
set termencoding=utf-8
set encoding=utf-8
set fileencodings=iso-2022-jp,utf-8,cp932,euc-jp

"if has('mac')
" set langmenu=ja_JP.UTF-8
"endif
"
"if has('iconv')
" let s:enc_euc = 'euc-jp'
" let s:enc_jis = 'iso-2022-jp'
"
" if iconv("?x87?x64?x87?x6a", 'cp932', 'euc-jisx0213') ==# "?xad?xc5?xad?xcb"
" let s:enc_euc = 'euc-jisx0213'
" let s:enc_jis = 'iso-2022-jp-3'
" endif
"
" let &fileencodings = &fileencodings .','. s:enc_jis
" set fileencodings+=utf-8,ucs-2le,ucs-2
" if &encoding =~# '^euc-?%(jp?|jisx0213?)$'
" set fileencodings+=cp932
" set fileencodings-=euc-jp
" set fileencodings-=euc-jisx0213
" let &encoding = s:enc_euc
" else
" let &fileencodings = &fileencodings .','. s:enc_euc
" endif
"
" unlet s:enc_euc
" unlet s:enc_jis
"endif
set ambiwidth=double

" 改行コードの自動認識
set fileformats=unix,dos,mac

autocmd FileType cvs :set fileencoding=euc
autocmd FileType tex :set fileencoding=euc-jp
autocmd FileType svn :set fileencoding=utf-8
autocmd FileType rd :set syntax=rd

"===<tab>===========================
set autoindent
set smartindent
set tabstop=2
set shiftwidth=2
set smarttab
set expandtab
autocmd FileType c,cpp,perl set cindent

"===<search>========================
set magic
set ignorecase
set smartcase
set hlsearch
set incsearch
set showmatch

"===<status line>===================
set laststatus=2
set wildmenu
set ruler
set showcmd

"ステータスラインに文字コードと改行文字を表示する
function! GetB()
let c = matchstr(getline('.'), '.', col('.') - 1)
let c = iconv(c, &enc, &fenc)
return String2Hex(c)
endfunction
func! Nr2Hex(nr)
let n = a:nr
let r = ""
while n
let r = '0123456789ABCDEF'[n % 16] . r
let n = n / 16
endwhile
return r
endfunc
func! String2Hex(str)
let out = ''
let ix = 0
while ix < strlen(a:str)
let out = out . Nr2Hex(char2nr(a:str[ix]))
let ix = ix + 1
endwhile
return out
endfunc
if winwidth(0) >= 120
set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %F%=[%{GetB()}]\ %l,%c%V%8P
else
set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %f%=[%{GetB()}]\ %l,%c%V%8P
endif

"===<color>=========================
colorscheme inkpot16

set listchars=tab:->
set list
highlight SpecialKey ctermfg=darkgrey
highlight ZenkakuSpace cterm=underline ctermfg=lightblue guibg=white
match ZenkakuSpace / /

"highlight Pmenu ctermbg=DarkGreen
"highlight PmenuSel ctermbg=DarkBlue
"highlight PmenuSbar ctermbg=DarkRed

"===<complete brace and quart, etc.>
"inoremap { {}<LEFT>
"inoremap [ []<LEFT>
"inoremap ( ()<LEFT>
"inoremap " ""<LEFT>
"inoremap ' ''<LEFT>
"^V = Ctrl-v Ctrl-v

"buffer change shortcuts
"nnoremap <Leader>1 :e #1<CR>
"nnoremap <Leader>2 :e #2<CR>
"nnoremap <Leader>3 :e #3<CR>
"nnoremap <Leader>4 :e #4<CR>
"nnoremap <Leader>5 :e #5<CR>
"nnoremap <Leader>6 :e #6<CR>
"nnoremap <Leader>7 :e #7<CR>
"nnoremap <Leader>8 :e #8<CR>
"nnoremap <Leader>9 :e #9<CR>

"===<dictionary>====================
"FileTypeごとに辞書ファイルを設定
"autocmd FileType perl :set dictionary+=~/.vim/dict/perl_functions.dict
"autocmd FileType php :set dictionary+=~/.vim/dict/php_functions.dict

"辞書ファイルを使用する設定に変更
"C-n C-p
"set complete+=k

"===<Omni Compeletion>===================
"autocmd FileType python set omnifunc=pythoncomplete#Complete
"autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType java setlocal omnifunc=javacomplete#Complete
autocmd FileType java setlocal cfu=VjdeCompleteFun
"autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
"autocmd FileType php set omnifunc=phpcomplete#CompletePHP
autocmd FileType c setlocal omnifunc=ccomplete#Complete

"===<yank/paste between each vim processes==
"sy is yanking to tmp file, sp or sP is paste
map <silent> sy :call YanktmpYank()<CR>
map <silent> sp :call YanktmpPaste_p()<CR>
map <silent> sP :call YanktmpPaste_P()<CR>

"===<Plugins>=============================
let g:python_highlight_all = 1
let g:C_BraceOnNewLine = "no""

"SuperTab
autocmd FileType * :let g:SuperTabDefaultCompletionType = '<C-N>'
"autocmd FileType css,javascript,xml,html :let g:SuperTabDefaultCompletionType = '<C-X><C-O>'
"autocmd FileType java :let g:SuperTabDefaultCompletionType = '<C-X><C-N>'

"autocomplpopup
let g:AutoComplPop_Behavior =
\ { 'python' : [ ['\k\{0,}$', "\<C-x>\<C-o>"],
\ ['\k\{0,}$', "\<C-x>\<C-n>"]
\ ],
\ 'css' : [ ['\k\{0,}$', "\<C-x>\<C-o>"],
\ ['\k\{0,}$', "\<C-x>\<C-n>"]
\ ],
\ 'javascript' : [ ['\k\{0,}$', "\<C-x>\<C-o>"],
\ ['\k\{0,}$', "\<C-x>\<C-n>"]
\ ],
\ 'java' : [ ['\k\{0,}$', "\<C-x>\<C-n>"],
\ ['\k\{0,}$', "\<C-x>\<C-u>"]
\ ],
\ 'xml' : [ ['\k\{0,}$', "\<C-x>\<C-n>"],
\ ['\k\{0,}$', "\<C-x>\<C-o>"]
\ ],
\ 'html' : [ ['\k\{0,}$', "\<C-x>\<C-o>"],
\ ['\k\{0,}$', "\<C-x>\<C-n>"]
\ ]
\ }
set lazyredraw
let g:AutoComplPop_CompleteoptPreview=1

"VJDE
let g:vjde_xml_advance=1
let g:vjde_show_paras=1

"HTML.vim
let g:do_xhtml_mappings = 'yes'
let g:html_tag_case = 'lowercase'
let g:html_default_charset = 'utf-8'