Home > Vim Hacks > Hack #74: 簡単にvimrcを編集する

Hack #74: 簡単にvimrcを編集する

Vimの戦闘力を効率的に上昇させるためには、素早く.vimrcや.gvimrcを編集できる環境が必要となります。ここではVimの設定を工夫することで、.vimrcの変更を即Vimに反映させる方法について解説します。

.vimrcや.gvimrcを編集するためのKey-mappingを定義する

まずはすぐに.vimrcや.gvimrcを編集できるように、.vimrcにKey-mappingを定義しましょう。

nnoremap <silent> <Space>ev  :<C-u>edit $MYVIMRC<CR>
nnoremap <silent> <Space>eg  :<C-u>edit $MYGVIMRC<CR>
$MYVIMRCというのは特殊な環境変数で、現在使用している.vimrcへのパスが含まれています。$MYGVIMRCも同様に、.gvimrcへのパスが含まれています。 環境によって.vimrcや.gvimrcへのパスは異なるため、これを利用することで確実に.vimrcや.gvimrcを編集することができます。

.vimrcや.gvimrcの変更を反映するためのKey-mappingを定義する

即座に.vimrcや.gvimrcを編集できるように設定しても、設定を反映させるためにはVimをいったん再起動しなければならず不便です。 sourceコマンドを用いれば.vimrcや.gvimrcを再度読み込むことができるので、.vimrcや.gvimrcに行った変更を現在のVimに反映できるように、 .vimrcにKey-mappingを定義しましょう。

" Load .gvimrc after .vimrc edited at GVim.
nnoremap <silent> <Space>rv :<C-u>source $MYVIMRC \| if has('gui_running') \| source $MYGVIMRC \| endif <CR>
nnoremap <silent> <Space>rg :<C-u>source $MYGVIMRC<CR>

.vimrcや.gvimrcを変更すると、自動的に変更が反映されるようにする

しかし変更を適用するたびに、いちいちキーを入力するのは面倒です。自動的に変更が反映されるように.vimrcに設定してしまいましょう。

" Set augroup.
augroup MyAutoCmd
    autocmd!
augroup END

if !has('gui_running') && !(has('win32') || has('win64'))
    " .vimrcの再読込時にも色が変化するようにする
    autocmd MyAutoCmd BufWritePost $MYVIMRC nested source $MYVIMRC
else
    " .vimrcの再読込時にも色が変化するようにする
    autocmd MyAutoCmd BufWritePost $MYVIMRC source $MYVIMRC | 
                \if has('gui_running') | source $MYGVIMRC  
    autocmd MyAutoCmd BufWritePost $MYGVIMRC if has('gui_running') | source $MYGVIMRC
endif

記述の注意

.vimrcや.gvimrcを何度も読み込む設定にしていると、記述の仕方によってはエラーが発生したり動作がおかしくなったりします。 ここでは、それらへの対策を解説します。

関数やコマンドの定義

普通関数やコマンドを定義するときには、commandfunctionを使うことがあるかも知れませんが、これらはすでにある関数やコマンドを上書きできないため、設定ファイルを何度も読み込ませるとエラーとなります。上書きできるように、command!function!を使用しましょう。

autocmdの定義

autocmdは常に追加されます。設定ファイルを何度も読み込むとautocmdが頻繁に追加され、Vimの動作がおかしくなる原因となります。 これを防ぐためには、.vimrcの先頭で一度autocmdをリセットします。

autocmd!

・・・・
autocmd FileType * set textwidth=0
autocmd FileType * set formatoptions-=ro
autocmdを全部削除するのに抵抗があるのならば、augroupを設定するとさらに便利になります。詳しくは:help augroupを参照してください。
augroup MyAutoCmd
    autocmd!
augroup END

・・・・
autocmd MyAutoCmd FileType * set textwidth=0
autocmd MyAutoCmd FileType * set formatoptions-=ro

オプションの設定

オプションの初期値に値を追加する場合、次のように設定することがあると思います。

set hoge_option+=piyo
しかし設定ファイルを何度も読み込ませる場合、前の値が追加されてしまい、動作がおかしくなります。.vimrcには次のように設定し、一度初期値をロードするようにしましょう。
set hoge_option&
set hoge_option+=piyo

ここに挙げたことは、「Vimの極め方」やWEB +DB PRESS Vol.52の特集「Vimの流儀」にも詳しく書いてあります。どちらもkana氏の書いた必読の資料なので、参考にすると良いでしょう。

Shougo
このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #74: 簡単にvimrcを編集する
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Comments:0

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://vim-users.jp/2009/09/hack74/trackback/
Listed below are links to weblogs that reference
Hack #74: 簡単にvimrcを編集する from Vim-users.jp
pingback from SanRin舎 » vi/Vim 11-11-03 (木) 11:42

[...] augroupについてはVim-users.jp – Hack #74: 簡単にvimrcを編集するを参照。 VimLeaveは2009-04-15 – basyura’s blogによると”Vim を終了する前で、ファイル .viminfo を書き込んだ後。VimLeavePre の [...]

Home > Vim Hacks > Hack #74: 簡単にvimrcを編集する

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top