colorscheme torte他に
- blue
- darkblue
- default
- delek
- desert
- elflord
- evening
- koehler
- morning
- murphy
- pablo
- peachpuff
- ron
- shine
- slate
- zellner
if has('win32') " Windows用 set guifont=MS_Gothic:h12:cSHIFTJIS "set guifont=MS_Mincho:h12:cSHIFTJIS " 行間隔の設定 set linespace=1 " 一部のUCS文字の幅を自動計測して決める if has('kaoriya') set ambiwidth=auto endif elseif has('mac') set guifont=Osaka−等幅:h14 elseif has('xfontset') " UNIX用 (xfontsetを使用) set guifontset=a14,r14,k14 endif
" タブの画面上での幅(rubyは2がよい) set tabstop=4 set shiftwidth=4 " タブをスペースに展開する (noexpandtab:展開しない) set expandtab " 自動的にインデントする (noautoindent:インデントしない) set noautoindent " バックスペースでインデントや改行を削除できるようにする set backspace=2 " 検索時にファイルの最後まで行ったら最初に戻る (nowrapscan:戻らない) set wrapscan " 括弧入力時に対応する括弧を表示 (noshowmatch:表示しない) set showmatch " コマンドライン補完するときに強化されたものを使う(参照 :help wildmenu) set wildmenu " テキスト挿入中の自動折り返しを日本語に対応させる set formatoptions+=mM " 日本語整形スクリプト(by. 西岡拓洋さん)用の設定 let format_allow_over_tw = 1 " ぶら下り可能幅 " その他もろもろ set nocompatible syntax on filetype on filetype indent on filetype plugin on
" 行番号を非表示 (number:表示) set number " ルーラーを表示 (noruler:非表示) set ruler " タブや改行を表示 (nolist:表示しない) set list " どの文字でタブや改行を表示するかを設定 set listchars=tab:>-,extends:<,trail:-,eol:< " listcharsの文字色 highlight SpecialKey guifg=#606060 " 長い行を折り返して表示 (nowrap:折り返さない) set wrap " 常にステータス行を表示 (詳細は:he laststatus) set laststatus=2 " コマンドをステータス行に表示 set showcmd " タイトルを表示 set title
" バックアップファイルを作成しない (次行の先頭の " を削除すれば有効になる) set nobackup " ファイル、ディレクトリのパスを \ => / に変更 set shellslash " 改行コード自動認識 set fileformats=dos,unix,mac " 文字コードの自動認識完璧版 if &encoding !=# 'utf-8' set encoding=japan set fileencoding=japan endif if has('iconv') let s:enc_euc = 'euc-jp' let s:enc_jis = 'iso-2022-jp' " iconvがeucJP-msに対応しているかをチェック if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb" let s:enc_euc = 'eucjp-ms' let s:enc_jis = 'iso-2022-jp-3' " iconvがJISX0213に対応しているかをチェック elseif 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\|euc-jisx0213\|eucjp-ms\)$' set fileencodings+=cp932 set fileencodings-=euc-jp set fileencodings-=euc-jisx0213 set fileencodings-=eucjp-ms let &encoding = s:enc_euc let &fileencoding = s:enc_euc else let &fileencodings = &fileencodings .','. s:enc_euc endif endif " 定数を処分 unlet s:enc_euc unlet s:enc_jis endif
" buffer keybind "map <silent> <F2> :bp<cr> "map <silent> <F3> :bn<cr> " nnoremap <UP> :<C-u>ls<CR> nnoremap <RIGHT> :<C-u>bnext<CR> nnoremap <LEFT> :<C-u>bprevious<CR>
" 日本語入力中にカーソルの色を変更する if has('multi_byte_ime') || has('xim') " 日本語入力ON時のカーソルの色を設定 highlight CursorIM guibg=LightCyan guifg=NONE endif " 全角スペースを表示 hi FullWidthSpace term=underline ctermbg=blue guibg=darkgray match FullWidthSpace / /
" ファイルを開くとそのディレクトリに移動 " 一部のファイルのみにしたい場合は " au BufEnter *.xml,*.doc execute \":lcd \" . expand("%:p:h") " のようにする au BufEnter * execute ":lcd " . expand("%:p:h")
プラグインもあるが、大したことないので、直接設定ファイルに記述。http://nanasi.jp/articles/vim/cd_vim.html
" ファイルを開くとそのディレクトリに移動 " 一部のファイルのみにしたい場合は " au BufEnter *.xml,*.doc execute \":lcd \" . expand("%:p:h") " のようにする au BufEnter * execute ":lcd " . expand("%:p:h")
" gnuwin32は取得済みが前提 let Grep_Path = 'd:\soft\gnuwin32\bin\grep' "let Fgrep_Path = 'd:\soft\gnuwin32\bin\fgrep' "let Egrep_Path = 'd:\soft\gnuwin32\bin\egrep' let Grep_Find_Path = 'd:\soft\gnuwin32\bin\findf' let Grep_Xargs_Path = 'd:\soft\gnuwin32\bin\xargs' " rgrep使うときに必要 let Grep_Shell_Quote_Char = '"'gnuwin32の各コマンドはhttp://gnuwin32.sourceforge.net/ から取得しておく
autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1 autocmd FileType ruby,eruby let g:rubycomplete_rails = 1 autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1
" for python plugin autocmd FileType python setl autoindent autocmd FileType python setl smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class autocmd FileType python setl tabstop=8 expandtab shiftwidth=4 softtabstop=4 " autocmd FileType python set omnifunc=pythoncomplete#Complete
"autocmd FileType perl :set dictionary+=$VIM/dict/perl_func.dict "let complete+=k autocmd FileType perl :compiler perl$VIMはインストールされているディレクトリになる。この中にdictというフォルダを作成し、perl用辞書ファイルを用意する(辞書作成スクリプト fileperldic.pl)
標準出力に結果がでるので、リダイレクトで辞書ファイルを作成する。
例えば
prと書きかけの文字のところ
cntl + x cntl + kで補完候補が出てくるので
cntl + nで選択する。補完方法の詳細はhttp://nanasi.jp/articles/howto/dictionary.html 参照
" 有効にする。効いてないようだが let g:neocomplcache_enable_at_startup = 1 " <TAB> completion. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" let g:neocomplcache_cachelinecount=1000 let g:neocomplcache_dictionary_filetype_lists = { \ 'default' : '', \ 'perl' : $VIM.'/dict/perl_func.dict' \ } "let g:neocomplcache_keyword_patterns = { " \ 'perl' : '\v\<\h\w*\>?|\h\w*(::\h\w*)*|[$@%&*]\h\w*|\h\w*%(\s*\(\)?)?', " \ 'erlang' : '\v\h\w*(:\h\w*)*' " \} let g:neocomplcache_keyword_patterns = { \ 'default' : '\h\w*' \} " snippets expand key。tabで選択してCtrl + eで展開 imap <silent> <C-e> <Plug>(neocomplcache_snippets_expand) smap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)
kaoriya版gvimではデフォルトで有効になっている
"autodate.vim. kaoriya版のgvimをデフォルトで使用可能 "Last Change: . とすることでvimを閉じたときに日付が入る let autodate_format = '%Y-%m-%d %H:%M:%S'
gvimからperlを使えるようにする。 ActiveState?からActivePerl?をダウンロードしてきて、ActivePerl?-5.8.8.820-MSWin32-x86-274739/ActivePerl?-5.8.8.820-MSWin32- x86-274739/perl/bin)の中にperl58.dllをPATHの通っているところかgvim.exeがあるディレクトリにいれる。インストールしてしまうのならこんなことする必要もなし。あとは
:perldo $_ =~ tr/a-z/A-Z/というような使い方ができる。
- http://blog.livedoor.jp/kurt0027/archives/51184818...
- http://www.ac.cyberhome.ne.jp/~yakahaira/vimdoc/if...
- http://blog.livedoor.jp/nipotan/archives/18252265....
- http://www.vim.org/scripts/script.php?script_id=29...
- http://nanasi.jp/articles/vim/align/align_vim.html
my %hash = ( apple => "りんご", banana => "ばなな", pine => "ぱいなっぷる" );と=>が整っていないのが気持ち悪いので、選択状態にして
:'<,'>:Align =>としてEnterすると
my %hash = ( apple => "りんご", banana => "ばなな", pine => "ぱいなっぷる" );と整形してくれるのだが、keyの前にスペースが入らないのは俺だけか?
http://www.vim.org/scripts/script.php?script_id=23
各言語に対応したコメントを一括イン/アウト。挿入モードでもビジュアルモードでもどっちでも使えるから非常に便利。複数行にまたがるコメントをしたい時とか非常に良い。ほとんどの言語にも対応している
各言語に対応したコメントを一括イン/アウト。挿入モードでもビジュアルモードでもどっちでも使えるから非常に便利。複数行にまたがるコメントをしたい時とか非常に良い。ほとんどの言語にも対応している
:\xとするだけでコメントイン/アウトする。
:\ccも同様の処理をしてくれるがこの場合はコメント処理後、対象行からひとつ下にカーソルが移動した状態になる。
http://www.vim.org/scripts/script.php?script_id=31...
文書内を検索して一覧。いわゆるgrep。あらかじめgrepの設定が必要
文書内を検索して一覧。いわゆるgrep。あらかじめgrepの設定が必要
:GrepBuffer hogehogeとするとしたに行番号とマッチした行が表示される。文書内ではなく、その階層に対するgrepをしたい時は
:Grepとする。他にもRgrepとかEgrepとかBgrepとかある
http://www.vim.org/script.php?script_id=273
スクリプト内の変数、メソッドなどをタギング。これはなかなか便利だがあらかじめctagsも必要。http://ctags.sourceforge.net/
日本語対応版ctagはhttp://hp.vector.co.jp/authors/VA025040/ctags/
downloadしたctags.exeをPATHの通ったフォルダにいれておく(gvim.exeと同じフォルダにでもいれておけばいいかと)
スクリプト内の変数、メソッドなどをタギング。これはなかなか便利だがあらかじめctagsも必要。http://ctags.sourceforge.net/
日本語対応版ctagはhttp://hp.vector.co.jp/authors/VA025040/ctags/
downloadしたctags.exeをPATHの通ったフォルダにいれておく(gvim.exeと同じフォルダにでもいれておけばいいかと)
:Tlistとすると画面横に変数、メソッド、クラス名一覧が表示される。ただし対象ファイルのパスに日本語が含まれているとどうもエラーになる
http://www.vector.co.jp/soft/unix/writing/se265654...
vim.orgには配布されていないが、viの正規表現ではなくperlとかrubyに近い正規表現が使えるようになる。
vim.orgには配布されていないが、viの正規表現ではなくperlとかrubyに近い正規表現が使えるようになる。
:S/hoge/hage/のように大文字のSで置換したい文字列を指定する
vimの標準能力である 「%」キーで対応するブレースや括弧に飛ぶ機能を強化する
いれた時点で
いれた時点で
if [ -z "$hoge" ]; then echo "\$hoge is zero!" fi for in val $(seq 10); do echo $val doneのようなソース上でif:fi, for:doneがmatchすると判断してくれるみたい(設定しておこうと思ったのだが)
- http://www.vim.org/scripts/script.php?script_id=12...
- http://nanasi.jp/articles/vim/yankring_vim.html
覚えておくとよいコマンド
コマンド | 説明 |
---|---|
YRToggle | YankRing.vimの機能の有効、無効を切り替え |
YRClear | 履歴を消去 |
YRShow | 履歴一覧を表示 |
YRToggle | YankRing.vimの機能の有効、無効を切り替え |
let g:yankring_max_history = 40というふうに設定する
perldocみることができる
:Perldoc App::CLI::Extension関数の場合は
:Perldoc -f opentabもきくし。まあscreenで別ウィンドウでperldocみるって手もあるが
引き続きperl系。perlcriticをチェック。本当はコマンドで指定するタイプが望ましいが
:compiler perltidy :make :copen実行すると
a.pl:1:1:RCS keywords $Id$ not found a.pl:1:1:RCS keywords $Revision$, $HeadURL$, $Date$ not found a.pl:1:1:RCS keywords $Revision$, $Source$, $Date$ not foundこういうのが出るが、いまやCVSやSVNの時代ではないから自分は気にしないことにしている。気になる場合はperlcritic.vimのperlcriticを実行している箇所を編集すればよい
編集中のファイルを即時実行。わざわざ保存をしなくてもよい。インストールだけで稼動
# <Leader>は\ <Leader> + rもしくは
:Quickrunとする。テストケースとかを実施したい場合は以下を定義しておくとよさそう
augroup QuickRunUnitTest autocmd! autocmd BufWinEnter,BufNewFile *test.php set filetype=php.unit autocmd BufWinEnter,BufNewFile test_*.py set filetype=python.unit autocmd BufWinEnter,BufNewFile *.t set filetype=perl.unit augroup END let g:quickrun_config = {} "let g:quickrun_config={'perl': {'command': 'c:/straberry/perl/bin/perl.exe'}} let g:quickrun_config['php.unit'] = {'command': 'phpunitrunner'} let g:quickrun_config['python.unit'] = {'command': 'nosetests', 'cmdopt': '-s -vv'} let g:quickrun_config['perl.unit'] = {'command': 'prove'}
標準よりもいいエクスプローラ。特に設定しなくてもつかえそう
とりあえずNERDTreeShowHiddenは1を設定しておいたほうがよい
:NERDTreeとすれば左縦に表示。なかなか便利。vimrcには以下を書いておけば変更可能
オプション | 説明 |
---|---|
loaded_nerd_tree | 1にするとNERDTreeスクリプトを読み込まない |
NERDChristmasTree | カラー表示する |
NERDTreeChDirMode | vimのカレントディレクトリを変更するタイミングを設定する |
NERDTreeHighlightCursorline | カーソル行を強調するか |
NERDTreeIgnore | 無視するファイルを設定する |
NERDTreeMouseMode | マウス制御のモード |
NERDTreeShowFiles | ファイルを表示するか |
NERDTreeShowHidden | 隠しファイルを表示するか |
NERDTreeSortOrder | ソート順 |
NERDTreeSplitVertical | NERDTreeウィンドウを垂直分割で作成するか |
NERDTreeWinPos | NERDTreeウィンドウを横に表示するか上に表示するか |
NERDTreeWinSize | NERDTreeウィンドウのサイズ |
let NERDTreeShowHidden = 1
その他役立ちそうなところ
ほかにもあるけど。autocomplpopよりも高機能なPOPUP表示&自動補完。snipetもできる。高機能すぎてよくわからない
vimrcに
vimrcに
# どうもneocomplcache_enable_at_startupが有効にならないが、他のプラグインが悪さしているのか? let g:neocomplcache_enable_at_startup = 1と書いておくか起動してから
:NeoComplCacheEnableとすると有効になる。どれが何の設定なのかまでは深追いしていないので、とりあえず現在の設定をはりつけておく
" for neocomplcache " 有効にする。効いてないようだが let g:neocomplcache_enable_at_startup = 1 " <TAB> completion. inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>" let g:neocomplcache_cachelinecount=1000 let g:neocomplcache_dictionary_filetype_lists = { \ 'default' : '', \ 'perl' : $VIM.'/dict/perl_func.dict' \ } "let g:neocomplcache_keyword_patterns = { " \ 'perl' : '\v\<\h\w*\>?|\h\w*(::\h\w*)*|[$@%&*]\h\w*|\h\w*%(\s*\(\)?)?', " \ 'erlang' : '\v\h\w*(:\h\w*)*' " \} let g:neocomplcache_keyword_patterns = { \ 'default' : '\h\w*' \} " snippets expand key。tabで選択してCtrl + eで展開 imap <silent> <C-e> <Plug>(neocomplcache_snippets_expand) smap <silent> <C-e> <Plug>(neocomplcache_snippets_expand)とりあえず時間があったら調べる
プロジェクト管理というよりは対象フォルダ内の管理って感じ。でもNEEDTreeとかより使いやすいかもしれない
プロジェクト作成
プロジェクト作成
:Projectとする。.vimprojectsなるファイルが2painで開くので
<PJNAME>="/path/to/pjdir" CD=. filter="*.html *.pm *.pl *.t *.js { Application=<DIRNAME> { } }こんな感じで書けばよい。filterは表示対象のファイル。*だけにすれば全て表示される、Application(名前はなんでもいい)=<DIRNAME>は対象PJフォルダの中のフォルダ定義。この中にカーソルを合わせて
\Rを実行すると対象ファイルを読み込んでくれる。ネストしてフォルダ定義をすることも可能
\CだとPJ作成時にintaractiveになるらしい。<SPACE>を押すと2painになっている.vimprojects側のpainが全開になる
結構有名なプラグイン。いまさら使ってみた。buffer/fileなどからあいまい検索を実現。l9 pluginなるものも必要なのでセットでインストールする
毎回こんなのをうつのもめんどくさいので以下を設定
- http://www.vim.org/scripts/script.php?script_id=19...
- http://www.vim.org/scripts/script.php?script_id=32...
:FufBuffer | 現在開いているバッファ検索 |
:FufDir | 現在のカレントディレクトリから移動できるディレクトリを検索 |
:FufDirWithFullCwd | あんまりつかわん |
:FufDirWithCurrentBufferDir | あんまりつかわん |
:FufFile | 現在のカレントディレクトリからオープンできるファイルを検索 |
:FufFileWithFullCwd | あんまりつかわん |
:FufFileWithCurrentBufferDir | あんまりつかわん |
" fuzzyfinder " MruFile - 最近開いたファイル " RenewCache - 補完アイテムを開くためのキャッシュを削除 nnoremap <unique> <silent> <space>fb :FufBuffer!<CR> nnoremap <unique> <silent> <space>ff :FufFile!<CR> nnoremap <unique> <silent> <space>fm :FufMruFile!<CR> nnoremap <unique> <silent> <Space>fc :FufRenewCache<CR> autocmd FileType fuf nmap <C-c> <ESC> let g:fuf_patternSeparator = ' ' let g:fuf_modesDisable = ['mrucmd'] let g:fuf_mrufile_exclude = '\v\.DS_Store|\.git|\.swp|\.svn' let g:fuf_mrufile_maxItem = 100 let g:fuf_enumeratingLimit = 20 let g:fuf_file_exclude = '\v\.DS_Store|\.git|\.swp|\.svn'この場合、<space>fbと打つとFufBufferが実行される。かなり便利
gitと連携
windowsでやるとmsysgitをいれると連携ができるが超うざい。これをいれるとvimから操作できるので便利。だと思う。git.exeを直接使っているようなので、PATHが通ってない場合は環境変数でPATHを通すか
windowsでやるとmsysgitをいれると連携ができるが超うざい。これをいれるとvimから操作できるので便利。だと思う。git.exeを直接使っているようなので、PATHが通ってない場合は環境変数でPATHを通すか
let g:git_bin = '/path/to/git'を設定すればよい
細かいことはhttp://nanasi.jp/をみるとよい
Ctrl + v + なんか(↓のURL参照)ASCII文字セットマップ http://docs.hp.com/ja/B2355-60128/ascii.5.html
NULLを入力したい場合は入力モードで Cntl v + 000 とすればNULLを入力したことになる
いわゆる複数ファイルを開いた時の操作。自分はtabで開いているので、あんま使わんけど
とするか
http://www.vim.org/scripts/script.php?script_id=42
ちなみにキーバインドでこうした
コマンド | 説明 |
---|---|
:ls, buffers, files | 開いているバッファ一覧(バッファリスト)を表示する |
:bfirst,bf | 先頭のバッファに移動する |
:blast,bl | 最後のバッファに移動する |
:bnext,bn | 次のバッファに移動する |
:bprev,bp | 前のバッファに移動する |
:b NUM | NUM番目のバッファに移動する |
:badd | バッファにファイルをロードする |
:bdelete | バッファをアンロードする |
NUM CTRL+^バッファ番号(NUM)を指定で切り替えることも可能。bufferを操作するプラグインなんかもでてるけど、まあいらないでしょう。
http://www.vim.org/scripts/script.php?script_id=42
ちなみにキーバインドでこうした
# F2 F3で切り替え map <silent> <F2> :bp<cr> map <silent> <F3> :bn<cr>
自分はbuffer操作よりもこっちが好き
ちなみに
コマンド | 説明 |
---|---|
tabnew | 新しくtabを開く |
tabedit | ファイルをtabで開く |
tabclose | 開いているtabを閉じる |
tabonly | 他のtabを閉じる |
tabnext | 次のtabに移動 |
tabprevious | 前のtabに移動 |
tab command | コマンド実行結果をtabに展開 |
tab sball | 開いているバッファ毎にタブを開く |
nnoremap <C-Tab> gt nnoremap <C-S-Tab> gTとvimrcに設定して、コマンド入力しなくてもctrl+tab, ctrl+shift+tab でタブ切り替えできるようにしている
yとかで文字とか行をyankする時に
"xとしてからyyとかddとかするとbufferを名前付きで保存することができる。
"ayyとか
"bddする。ペーストするときは
"apとするとよい。
コマンド | 説明 |
---|---|
w | 次の単語ごとの先頭にカーソルを移動 |
b | 前の単語ごとの先頭にカーソルを移動 |
e | 次の単語ごとの最後にカーソルを移動 |
0 | 行の先頭 |
$ | 行の最後 |
+ | 次の行の先頭 |
- | 前の行の先頭 |
←/→/↑/↓ | h/l/k/j |
gg | 先頭行 |
G | 最終行 |
数値+g(2gとか) | 数値を指定した行番号に移動 |
Ctrl + F | 1画面分スクロール |
Ctrl + B | 1画面分前にスクロール |
Ctrl + D | 1/2画面分にスクロール |
Ctrl + U | 1/2画面分前にスクロール |
コマンド | 説明 |
---|---|
Ctrl + Insert | コピー |
Ctrl + Delete | カット |
Shift + Insert | ペースト |
ペースト
"*Yカット
"*p他にも方法があるらしいのでhttp://vim-users.jp/2010/02/hack126/参照
:set nohlsearchとすると消えるみたい。
http://ujihisa.nowa.jp/entry/5ebd23f397 その他詳細はここ見る
nnoremap <Esc><Esc> :<C-u>set nohlsearch<Return> nnoremap / :<C-u>set hlsearch<Return>/ nnoremap ? :<C-u>set hlsearch<Return>? nnoremap * :<C-u>set hlsearch<Return>* nnoremap # :<C-u>set hlsearch<Return>#
まず、ファイルを文字化けしない、正しいエンコーディングで開き直す
変更したいファイルのエンコーディングをセット
:e ++enc=utf-8
変更したいファイルのエンコーディングをセット
:set fileencoding=euc-jpで保存
:w
vim -b でファイルを開いたあと(まあgvimはこんなことすることもないけど)
:%!xxdとすると開くことが可能。http://ash.jp/code/unitbl21.htm とかが文字コード表になってるので、これと照らし合わせながら、みること。戻す場合は
:%!xxd -rとすることで戻る。
例えば
sub import { <- ここと my $class = shift; my $finder = Module::Pluggable::Object->new(search_path => __PACKAGE__ . "::Component", require => 1); foreach my $component($finder->plugins){ $component->require or die "component load error: $UNIVERSAL::require::ERROR"; } $class->_components([$finder->plugins]); } <-ここでカーソル移動したい場合はそれぞれのブレス上で%を押せば、それに対応したブレスに移動できる。ちなみにコマンドモードの時の話。%に対応している文字を表示するには
:set matchpairsで現在の対応している文字が表示される。デフォルトで
matchpairs=(:),{:},[:]がセットされていることがわかる。ペアを追加したい場合は
:set matchpairs=(:),{:},[:],<:>とか
:set matchpairs+=<:>などとすればいい。gvimrcに書いておいたほうが便利。けどmatchit.vimをいれたほうがいい。
編集モード(Escを押した状態)で
対象行で
対象行で
# インデントをいれる >> # インデントを削除 <<複数行に対してインデントを入れる場合はShift + vでビジュアルモードで行を選択したあと
>とするとよい。逆に削除は<とする
grep.vimもいいけど、日本語を含むファイルとかディレクトリとかだとうまく動いてくれないので、最近はこっちを使うようにしている。ただし速度は外部grepを使うほうが速いようだ。http://sites.google.com/site/fudist/Home/vim-nihon...が詳しい
vimgrep hogehoge *とすればよい。
このままではマッチしたファイルを勝手にopenしてしまうので
vimgrep /hogehoge/j *のようにjオプションをつける。結果はQuickFixに一覧が表示されるので
copenとすれば一覧結果がでる。閉じる場合は
ccloseとする
grep.vimでいうGrepBuffer的なやつ。現在開いている全てのバッファからgrepする場合は
:bufdo vimgrepadd /hogehoge/j %見えてるバッファだけで実行する場合はbufdoの代わりにwindoが使う。実行するたびにQuickFixが追加されていくので
cexpr ""を実行すること
# perlなら :compiler perlその都度これするのがめんどくさいのなら
autocmd FileType perl :compiler perlと設定ファイルなどに書いておくとよい。
あとは記述したあと
:makeとすればsyntax checkを行ってくれる。エラーになった場合は
:cwとすればエラーメッセージをみることが可能
:clでも見えるか
runtime/filetype.vimに追加してもいいけど、あまりcoreに追加もしたくないので、自分のvimrcなどに
au BufNewFile,BufRead *.<extension> setf <language name>を追加する
プログラムをかくたびにだいたいはじめに書くことって決まっていると思うので
autocmd BufNewFile *.sh 0r $HOME/.vim/template/sh.txt autocmd BufNewFile *.pl 0r $HOME/.vim/template/perl-script.txt autocmd BufNewFile *.pm 0r $HOME/.vim/template/perl-package.txt autocmd BufNewFile *.t 0r $HOME/.vim/template/perl-test.txt autocmd BufNewFile *.py 0r $HOME/.vim/template/python.txt autocmd BufNewFile *.html 0r $HOME/.vim/template/html5-boilerplate.txtあとはsh.txtなどを記述しておいたディレクトリにおいておけばよい
#!/usr/bin/env use strict; use warnings; use feature qw(:5.14); use Findbin qw($Script $Bin); use Getopt::Long; use Pod::Usage; our $VERSION = '1.0'; exit; __END__ =pod =head1 NAME script_name - description =head1 VERSION version =head1 SYNOPSIS synopsis =head1 DESCRIPTION this is description =head1 OPTIONS =over 4 =item -h, --help Display help and exit =item -v, --version Display version and exit =back =head1 AUTHOR Akira Horimoto E<lt>me@domainE<gt> =head1 SEE ALSO L<use_package> =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut
package MyPackage; use strict; use warnings; use feature qw(5.14); our $VERSION = '1.0'; 1; =pod =head1 NAME package_name - description =head1 VERSION version =head1 SYNOPSIS synopsis =head1 DESCRIPTION this is description =head1 GLOBAL VARIABLE =head1 METHOD =head2 new Create MyPackage Object Example: my $obj = MyPackage->new; Options: verbose verbose output. default 0 =head1 AUTHOR Akira Horimoto E<lt>me@domainE<gt> =head1 SEE ALSO L<use_package> =head1 LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut
pythonはお作法がまだわかっていないので、ちょっと適当
#!/usr/bin/env python # vim:fileencoding=utf-8 """ [NAME] script or package easy description [DESCRIPTION] script or package description """ import sys import os import pprint from optparse import OptionParser __author__ = 'Akira Horimoto' __version__ = '1.0' usage = "usage: %prog [options] arg1 arg2...argN" version = "%prog %s" % __version__ parser = OptionParser(usage=usage, version=version) def main(): """ [FUNCTIONS] method or functon description """ sys.exit(0) if __name__ == "__main__": main()
https://github.com/h5bp/html5-boilerplateが元ねた
<!doctype html> <!-- source by html5-boilerplate. https://github.com/h5bp/html5-boilerplate --> <!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ --> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> <!-- Consider adding a manifest.appcache: h5bp.com/d/Offline --> <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> <head> <meta charset="utf-8"> <!-- Use the .htaccess and remove these lines to avoid edge case issues. More info: h5bp.com/b/378 --> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title></title> <meta name="description" content=""> <!-- Mobile viewport optimized: h5bp.com/viewport --> <meta name="viewport" content="width=device-width,initial-scale=1"> <!-- Place favicon.ico and apple-touch-icon.png in the root directory: mathiasbynens.be/notes/touch-icons --> <link rel="stylesheet" href="css/style.css"> <!-- More ideas for your <head> here: h5bp.com/d/head-Tips --> <!-- All JavaScript at the bottom, except this Modernizr build incl. Respond.js Respond is a polyfill for min/max-width media queries. Modernizr enables HTML5 elements & feature detects; for optimal performance, create your own custom Modernizr build: www.modernizr.com/download/ --> <script src="js/libs/modernizr-2.0.6.min.js"></script> </head> <body> <header> </header> <div role="main"> </div> <footer> </footer> <!-- JavaScript at the bottom for fast page loading --> <!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if offline --> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script>window.jQuery || document.write('<script src="js/libs/jquery-1.7.1.min.js"><\/script>')</script> <!-- scripts concatenated and minified via build script --> <script defer src="js/plugins.js"></script> <script defer src="js/script.js"></script> <!-- end scripts --> <!-- Asynchronous Google Analytics snippet. Change UA-XXXXX-X to be your site's ID. mathiasbynens.be/notes/async-analytics-snippet --> <script> var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']]; (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0]; g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js'; s.parentNode.insertBefore(g,s)}(document,'script')); </script> <!-- Prompt IE 6 users to install Chrome Frame. Remove this if you want to support IE 6. chromium.org/developers/how-tos/chrome-frame-getting-started --> <!--[if lt IE 7 ]> <script defer src="//ajax.googleapis.com/ajax/libs/chrome-frame/1.0.3/CFInstall.min.js"></script> <script defer>window.attachEvent('onload',function(){CFInstall.check({mode:'overlay'})})</script> <![endif]--> </body> </html>
タグ
最新コメント