vim - Vimの自動保存で読み込み専用や名前がない場合に警告が出ないようにする設定
Qiitaに投稿しました。
http://qiita.com/babie/items/fa1154e2979c45fa77af
短いですが、今日のノルマはこれで。
次回予告
やっと新しいMacBook Proの環境が整ったので、バリバリ更新していきたいと思います。
さて、次回ですが、
- pdfの漫画の余白を切り取る
- はてなブログに予約投稿がないのでツラい
このあたりを何とかしたいと思っています。
補完を便利にするプラグイン autocomplpop の代わりに neocomplcache を導入
ネオコンなるものがあるそうなので調べたら、autocomplpop を置き換える neocomplecache なる Vim スクリプトパッケージがあった。とっくに時代は塗り替えられていたらしい。
アンインストール&インストール:
$ vimana remove autocomplpop
$ vimana install neocomplcache
~/.vimrc に以下を追記:
" Use neocomplcache. let g:neocomplcache_enable_at_startup = 1 " Use smartcase. let g:neocomplcache_enable_smart_case = 1 " Use auto select "let g:neocomplcache_enable_auto_select = 1 " Use camel case completion. let g:neocomplcache_enable_camel_case_completion = 1 " Use underbar completion. let g:neocomplcache_enable_underbar_completion = 1 " Set minimum syntax keyword length. let g:neocomplcache_min_syntax_length = 3 " Set manual completion length. let g:neocomplcache_manual_completion_start_length = 0 " Define dictionary. "let g:neocomplcache_dictionary_filetype_lists = { " \ 'default' : '', " \ 'vimshell' : $HOME.'/.vimshell_hist', " \ 'scheme' : $HOME.'/.gosh_completions', " \ 'scala' : $DOTVIM.'/dict/scala.dict', " \ 'ruby' : $DOTVIM.'/dict/ruby.dict' " \ } " " Define keyword. if !exists('g:neocomplcache_keyword_patterns') let g:neocomplcache_keyword_patterns = {} endif let g:neocomplcache_keyword_patterns['default'] = '\h\w*' " "ilet g:neocomplcache_snippets_dir = $HOME.'/snippets' autocmd! FileType css setlocal omnifunc=csscomplete#CompleteCSS autocmd! FileType eruby,html,markdown setlocal omnifunc=htmlcomplete#CompleteTags autocmd! FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS autocmd! FileType python setlocal omnifunc=pythoncomplete#Complete autocmd! FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
自動起動 let g:neocomplcache_enable_at_startup = 1 ぐらいで不便はないらしいが、ついでなんで色々設定してみた。
上記の設定に以下があるが、
autocmd! FileType eruby,html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
これがないと、「Vim で XML/HTML の閉じタグを自動補完するようにした - LazyLoadLife」が効かないっぽい。
Ruby の end 等を自動的に補完する Vim プラグインを導入した
※ 追記したので最後まで読んでね。
「Ruby の end を自動的に入力する Vim スクリプト改め autoend.vim - ursmの日記」に従い、Ruby の end を自動補完する plugin を導入した。
コードを見て分かるとおり、Vim の Ruby 拡張を使って書いてあるために、vim-ruby パッケージが必要。私の環境は Ubuntu なのだが、vim-ruby パッケージはダミーパッケージのようで、インストールしようとすると、vim-nox, vim-gtk, vim-gnome のどれかを入れろと言われた。Vim 自体をインストールするときに vim-full パッケージが見つからないなーと思っていたが、vim-full は生まれ変わって、環境別にこの3つのどれかを入れろってことらしい。VPS なので vim-nox 一択。
変更は特にない。
ふんげー便利! id:ursm ++
……と思ったら、作者の ursm さん自身が endwise.vim に乗り換えているとのことなので、僕も乗り換えました。てへ。使い心地は変わらないのですが、Ruby 以外にも対応してるみたいです。VB とか。
$ vimana install endwise.vim
したら、どこに格納すべきか情報がないらしく、/tmp/ 以下にダウンロードされたので、手動で ~/.vim/plugin/ に移しました。
Vim で閉じ括弧を自動補完するようにした
「()の閉じ括弧などを自動的に閉じる - bless {category => 'vim'}, shift - vimグループ」経由「gist: 269208 - GitHub」の設定を頂き、プログラムの入力などで便利なように、() {} [] の後ろの括弧を自動的に補完するようにした。
元々の設定は、<> も補完するようになっていたが、「Vim で XML/HTML の閉じタグを自動入力するようにした - LazyLoadLife」が効かなくなるので、<> 補完については省いた。
~/.vimrc に以下を追記:
inoremap ( ()<ESC>i inoremap <expr> ) ClosePair(')') inoremap { {}<ESC>i inoremap <expr> } ClosePair('}') inoremap [ []<ESC>i inoremap <expr> ] ClosePair(']') " pair close checker. " from othree vimrc ( http://github.com/othree/rc/blob/master/osx/.vimrc ) function ClosePair(char) if getline('.')[col('.') - 1] == a:char return "\<Right>" else return a:char endif endf
Vim で XML/HTML の閉じタグを自動補完するようにした
「Vim-users.jp - Hack #22: XMLの閉じタグを補完する」を参考にして、HTML/XML の閉じタグを </ が入力されたときに自動的に補完するようにした。
~/.vimrc に以下を追記:
augroup MyXML autocmd! autocmd Filetype xml inoremap <buffer> </ </<C-x><C-o> autocmd Filetype html inoremap <buffer> </ </<C-x><C-o> autocmd Filetype eruby inoremap <buffer> </ </<C-x><C-o> augroup END
Rails を使うことが多いので、eruby ファイルにも適用されるようにした。
Vimana で rails.vim を導入
なんか、Vim スクリプトの管理には、Vimana というものが便利らしいので、それを使って rails.vim をインストールする。
まず cpanm を導入:
$ sudo cpan App::cpanminus
長ぇ……入った。
次に Vimana を導入:
$ sudo cpanm Vimana
長ぇ……入った!
vimana で rails という名がつくスクリプトを検索:
$ vimana search rails railscasts [color scheme] Railscasts TextMate theme for Vim (GUI Only) railstab.vim [utility] Retabbing hacks extracted from rails.vim rails.vim [utility] Ruby on Rails: easy file navigation, enhanced syntax highlighting, and more grails-vim [utility] Easy file navigation and testing of Grails projects railscasts-theme [color scheme] A railscasts color theme that works in 256color terminals as well as gui
ほうほう。
$ vimana install rails.vim
入った。
tree するとこんな感じ。
$ tree ~/.vim .vim ├── after ├── autoload │ └── rails.vim ├── colors ├── compiler ├── doc │ ├── rails.txt │ └── tags ├── ftplugin ├── indent ├── keymap ├── lang ├── plugin │ └── rails.vim ├── print ├── record │ └── rails.vim ├── spell ├── syntax └── tutor
Vimana 素敵ですね!
ついでに、autocomplpop なるものも入れてみる:
$ vimana search autocomp autocomplpop [utility] Automatically opens popup menu for completions xul.vim [syntax] Support autocompletion (CTRL-XCTRL-U): balises and attributes with XUL files. autocomp.vim [utility] Auto-complete VIM script tailored for those with RSI bib-autocomp.vim [ftplugin] Autocompletion of BibTeX entries findfile [utility] Open file quickly by using autocomplete $ vimana install autocomplpop
Ctrl-p Ctrl-n で候補選択、Enter で決定か。いいぞ。
Rubyのエンコード指定マジックコメントを##で挿入できるようにした
Vim エディターのスクリプトの作成: 第 2 回 ユーザー定義関数 を読みながら見よう見まねで書いてみた。
ujihisa さんのコメントを受けてちょっと修正。
function! MagicComment() return "# -*- coding: utf-8 -*-\<CR>" endfunction inoreabbrev <buffer> ## <C-R>=MagicComment()<CR>
挿入モードで ##
utf-8 のところを Vim の変数に置き換えればきっと汎用性があるんだろうけど知らん。
あと、新規 *.rb ファイルを開いた時に自動展開されると便利なのじゃろうがわからんちん。とか書いていたら、kumonopanyaさんがやり方を教えてくれた。
~/.vim/templates/rb.tpl を新規作成。
#!/usr/bin/env ruby # -*- coding: utf-8 -*-
~/.vimrc に以下を追加。
autocmd BufNewFile *.rb 0r ~/.vim/templates/rb.tpl
こりゃええわ〜