5月8日の技術勉強会
5月8日に行われました技術発表会の内容を撮影した動画ファイルを公開いたしました。内容は以下のとおりです。
テーマ | secondlife/.vimrc |
---|---|
発表者 | d:id:secondlife |
時間 | 27:13 |
動画ファイル
発表資料
set nocompatible " Use Vim defaults instead of 100% vi compatibility set backspace=indent,eol,start " more powerful backspacing " Now we set some defaults for the editor set textwidth=0 " Don't wrap words by default set nobackup " Don't keep a backup file set viminfo='50,<1000,s100,\"50 " read/write a .viminfo file, don't store more than "set viminfo='50,<1000,s100,:0,n~/.vim/viminfo set history=100 " keep 50 lines of command line history set ruler " show the cursor position all the time " Suffixes that get lower priority when doing tab completion for filenames. " These are files we are not likely to want to edit or read. set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc " We know xterm-debian is a color terminal if &term =~ "xterm-debian" || &term =~ "xterm-xfree86" || &term =~ "xterm-256color" set t_Co=16 set t_Sf=[3%dm set t_Sb=[4%dm endif " Make p in Visual mode replace the selected text with the "" register. vnoremap p:let current_reg = @" gvdi =current_reg syntax on if &term =~ "xterm-256color" " colorscheme desert256 colorscheme inkpot endif " Debian uses compressed helpfiles. We must inform vim that the main " helpfiles is compressed. Other helpfiles are stated in the tags-file. " set helpfile=$VIMRUNTIME/doc/help.txt.gz set helpfile=$VIMRUNTIME/doc/help.txt if has("autocmd") " Enabled file type detection " Use the default filetype settings. If you also want to load indent files " to automatically do language-dependent indenting add 'indent' as well. filetype plugin on "そのファイルタイプにあわせたインデントを利用する filetype indent on " これらのftではインデントを無効に "autocmd FileType php filetype indent off " autocmd FileType php :set indentexpr= autocmd FileType html :set indentexpr= autocmd FileType xhtml :set indentexpr= endif " Some Debian-specific things augroup filetype au BufRead reportbug.* set ft=mail au BufRead reportbug-* set ft=mail augroup END " タブ幅の設定 set expandtab set tabstop=2 set softtabstop=2 set shiftwidth=2 set modelines=0 "インデントはスマートインデント set smartindent "検索文字列が小文字の場合は大文字小文字を区別なく検索する set ignorecase "検索文字列に大文字が含まれている場合は区別して検索する set smartcase "検索時に最後まで行ったら最初に戻る set wrapscan "検索文字列入力時に順次対象文字列にヒットさせない set noincsearch "タブの左側にカーソル表示 "set listchars=tab:\\ set nolist "入力中のコマンドをステータスに表示する set showcmd "括弧入力時の対応する括弧を表示 set showmatch "検索結果文字列のハイライトを有効にしない set nohlsearch "ステータスラインを常に表示 set laststatus=2 function! GetB() let c = matchstr(getline('.'), '.', col('.') - 1) let c = iconv(c, &enc, &fenc) return String2Hex(c) endfunction " :help eval-examples " The function Nr2Hex() returns the Hex string of a number. 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 " The function String2Hex() converts each character in a string to a two " character Hex string. 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 "ステータスラインに文字コードと改行文字を表示する " set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']['.&ft.']'}\ %F%=%l,%c%V%8P 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 "set statusline=%{GetB()} " コマンドライン補完するときに強化されたものを使う(参照 :help wildmenu) " set wildmenu " コマンドライン補間をシェルっぽく set wildmode=list:longest " バッファが編集中でもその他のファイルを開けるように set hidden " 外部のエディタで編集中のファイルが変更されたら自動で読み直す set autoread " 文字コード関連 " from ずんWiki http://www.kawaz.jp/pukiwiki/?vim#content_1_7 if &encoding !=# 'utf-8' set encoding=japan endif set fileencoding=japan if has('iconv') let s:enc_euc = 'euc-jp' let s:enc_jis = 'iso-2022-jp' " iconvがJISX0213に対応しているかをチェック 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 " fileencodingsを構築 if &encoding ==# 'utf-8' let s:fileencodings_default = &fileencodings let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932' let &fileencodings = &fileencodings .','. s:fileencodings_default unlet s:fileencodings_default else 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 endif " 定数を処分 unlet s:enc_euc unlet s:enc_jis endif " cvs,svnの時は文字コードをeuc-jpに設定 autocmd FileType cvs :set fileencoding=euc-jp autocmd FileType svn :set fileencoding=utf-8 " set tags if has("autochdir") set autochdir set tags=tags; else set tags=./tags,./../tags,./*/tags,./../../tags,./../../../tags,./../../../../tags,./../../../../../tags endif " tags key map (C-z を C-tに,C-tはGNU/screenとかぶる) map " phpでKでhelpをひく "autocmd BufNewFile,Bufread *.php,*.php3,*.php4 set keywordprg="help" " phpならindentファイルは使わない "autocmd FileType php :filetype indent off " %マッチでrubyのクラスやメソッドが対応するようにする " autocmd FileType ruby :source ~/.vim/ftplugin/ruby-matchit.vim " 辞書ファイルからの単語補間 :set complete+=k " C-]でtjと同等の効果 nmap g " yeでそのカーソル位置にある単語をレジスタに追加 nmap ye :let @"=expand(" ") "set minibfexp let g:miniBufExplMapWindowNavVim=1 "hjklで移動 let g:miniBufExplSplitBelow=0 " Put new window above let g:miniBufExplMapWindowNavArrows=1 let g:miniBufExplMapCTabSwitchBufs=1 let g:miniBufExplModSelTarget=1 let g:miniBufExplSplitToEdge=1 " CD.vim example:// は適用しない autocmd BufEnter * if bufname("") !~ "^\[A-Za-z0-9\]*://" | lcd %:p:h | endif " howm "set runtimepath+=~/.vim/howm_vim "im_custom "if has('im_custom/canna') " set imoptions=canna " set noimcmdline " set iminsert=0 " set imsearch=0 " inoremap :set iminsert=0 " inoremap :set imsearch=0 "" でのインサートモードに入ったときは日本語入力On " nmap :set iminsert=2 i "" imap :set iminsert=0 "endif " insert mode時にc-jで抜ける " imap " Taglist " nnoremap :Tlist "nnoremap :Tlist "nnoremap :TlistClose " savevers.vim(backup) "set backup "set patchmode=.clean "set backupdir=~/.backup_vim "let savevers_types = "*" "let savevers_dirs = &backupdir " command mode 時 tcsh風のキーバインドに cmap cmap cmap cmap cmap b cmap f "表示行単位で行移動する nmap j gj nmap k gk vmap j gj vmap k gk "フレームサイズを怠惰に変更する map + map - " 前回終了したカーソル行に移動 autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal g`\"" | endif " closetab C-_でタグをとじる "let g:closetag_html_style=1 "source ~/.vim/scripts/closetag.vim ",e でそのコマンドを実行 nmap ,e :execute '!' &ft ' %' "nmap ,e :execute 'set makeprg=' . expand(&ft) . '\ ' . expand('%') :make " phpdoc let g:foo_DefineAutoCommands = 1 " MiniBufExplorer で GNU screen likeなキーバインド let mapleader = "" "nnoremap f :last "nnoremap :last nmap :MBEbn nmap :MBEbp nmap :MBEbn nnoremap :MBEbn nnoremap n :MBEbn nnoremap :MBEbn nnoremap p :MBEbp nnoremap :MBEbp nnoremap c :new nnoremap :new nnoremap k :bd nnoremap :bd nnoremap s :IncBufSwitch nnoremap :IncBufSwitch nnoremap :wincmd w nnoremap Q :only nnoremap w :ls nnoremap :ls nnoremap a :e # nnoremap :e # nnoremap " :BufExp nnoremap 1 :e #1 nnoremap 2 :e #2 nnoremap 3 :e #3 nnoremap 4 :e #4 nnoremap 5 :e #5 nnoremap 6 :e #6 nnoremap 7 :e #7 nnoremap 8 :e #8 nnoremap 9 :e #9 nnoremap , :MBEbn nnoremap ,n :MBEbn nnoremap , :MBEbn "nnoremap ,p :MBEbp "nnoremap , :MBEbp nnoremap ,c :new nnoremap , :new nnoremap ,k :bd nnoremap , :bd nnoremap ,s :IncBufSwitch nnoremap , :IncBufSwitch nnoremap , :wincmd w nnoremap ,Q :only nnoremap ,w :ls nnoremap , :ls nnoremap ,a :e # nnoremap , :e # nnoremap ," :BufExp nnoremap ,1 :e #1 nnoremap ,2 :e #2 nnoremap ,3 :e #3 nnoremap ,4 :e #4 nnoremap ,5 :e #5 nnoremap ,6 :e #6 nnoremap ,7 :e #7 nnoremap ,8 :e #8 nnoremap ,9 :e #9 " Taglist用 nnoremap l :Tlist nnoremap :Tlist nnoremap o :TlistClose nnoremap :TlistClose let mapleader = '\' " buf移動 "nmap :MBEbn "nmap :MBEbp " いろいろ囲むよ "fun! Quote(quote) " normal mz " exe 's/\(\k*\%#\k*\)/' . a:quote . '\1' . a:quote . '/' " normal `zl "endfun " "fun! UnQuote() " normal mz "" exe 's/["' . "'" . ']\(\k*\%#\k*\)[' . "'" . '"]/\1/' " exe 's/\(["' . "'" . ']\)\(\k*\%#\k*\)\1/\2/' " normal `z "endfun nnoremap ,q" :call Quote('"') nnoremap ,q' :call Quote("'") nnoremap ,qd :call UnQuote() "" 'quote' a word "nnoremap ,q' :silent! normal mpea' bi' `pl "" double "quote" a word "nnoremap ,q" :silent! normal mpea" bi" `pl "nnoremap ,q( :silent! normal mpea) bi( `pl "nnoremap ,q[ :silent! normal mpea] bi[ `pl "nnoremap ,q{ :silent! normal mpea} bi{ `pl "" remove quotes from a word "nnoremap ,qd :silent! normal mpeld bhd `ph " 現在行をhighlight " set updatetime=1 " autocmd CursorHold * :match Search /^.*\%#.*$ " code2html let html_use_css = 1 " ペースト時にautoindentを無効に "set paste " SeeTab let g:SeeTabCtermFG="black" let g:SeeTabCtermBG="red" " netrw-ftp let g:netrw_ftp_cmd="netkit-ftp" " netrw-http let g:netrw_http_cmd="wget -q -O" " mru.vim " MRU は MiniBufExplorer と相性がわるいためつかわない "let MRU_Max_Entries = 100 "let MRU_Use_Current_Window = 2 "let MRU_Window_Height=15 " YankRing.vim nmap ,y :YRShow " html escape function :function HtmlEscape() silent s/&/\&/eg silent s//\>/eg :endfunction :function HtmlUnEscape() silent s/<//eg silent s/&/\&/eg :endfunction " 16色 set t_Co=16 set t_Sf=[3%dm set t_Sb=[4%dm " 補完候補の色づけ for vim7 hi Pmenu ctermbg=8 hi PmenuSel ctermbg=12 hi PmenuSbar ctermbg=0 " 検索後、真ん中にフォーカスをあわせる "nmap n nzz "nmap N Nzz "nmap * *zz "nmap # #zz "nmap g* g*zz "nmap g# g#zz " changelog mode if has("autocmd") autocmd FileType changelog map ,d ggi kki =strftime("%Y-%m-%d") gorou o * | map ,n ggo * endif if has("autocmd") autocmd FileType changelog map ,n :call InsertChangeLogEntry("gorou", "hotchpotch@gmail.com") a endif function! InsertChangeLogEntry(name, mail) if strpart(getline(1), 0, 10) == strftime("%Y-%m-%d") execute "normal ggo\ \ *" else let s:header = strftime("%Y-%m-%d") . " " . a:name . " <" . a:mail . ">" execute "normal ggi\ \ \ kki" . s:header . "\ \ \ *" endif endfunction " encoding nmap ,U :set encoding=utf-8 nmap ,E :set encoding=euc-jp nmap ,S :set encoding=cp932 " rails au BufNewFile,BufRead app/**/*.rhtml set fenc=utf-8 au BufNewFile,BufRead app/**/*.rb set fenc=utf-8 " cofs's fsync au BufNewFile,BufRead /mnt/c/* set nofsync