連載
» 2011年07月21日 00時00分 公開

いまさら聞けないVim(6):設定ファイルを作って自分の好みに改造 (3/3)

[後藤大地,@IT]
前のページへ 1|2|3       

設定ファイルのサンプル

 これまでに紹介した基本的な設定項目を利用して、設定ファイルのサンプルを作ってみると以下のようになる。コピー&ペーストして最初の足がかりとして使ってみるといいだろう。まずはUNIX/Linux向けのファイルだ。

" [Backspace] で既存の文字を削除できるように設定
"  start - 既存の文字を削除できるように設定
"  eol - 行頭で[Backspace]を使用した場合上の行と連結
"  indent - オートインデントモードでインデントを削除できるように設定
set backspace=start,eol,indent
" 特定のキーに行頭および行末の回りこみ移動を許可する設定
"  b - [Backspace]  ノーマルモード ビジュアルモード
"  s - [Space]      ノーマルモード ビジュアルモード
"   - [→]          ノーマルモード ビジュアルモード
"  [ - [←]          挿入モード 置換モード
"  ] - [→]          挿入モード 置換モード
"  ~ - ~            ノーマルモード
set whichwrap=b,s,[,],,~
" マウス機能有効化
set mouse=a
" シンタックスハイライト有効化 (背景黒向け。白はコメントアウト
" されている設定を使用)
syntax on
highlight Normal ctermbg=black ctermfg=grey
highlight StatusLine term=none cterm=none ctermfg=black ctermbg=grey
highlight CursorLine term=none cterm=none ctermfg=none ctermbg=darkgray
"highlight Normal ctermbg=grey ctermfg=black
"highlight StatusLine term=none cterm=none ctermfg=grey ctermbg=black
"highlight CursorLine term=none cterm=none ctermfg=darkgray ctermbg=none
set nohlsearch " 検索キーワードをハイライトしないように設定
set cursorline " カーソルラインの強調表示を有効化
" 行番号を表示
set number
" ステータスラインを表示
set laststatus=2 " ステータスラインを常に表示
set statusline=%F%r%h%= " ステータスラインの内容
" インクリメンタル検索を有効化
set incsearch
" 補完時の一覧表示機能有効化
set wildmenu wildmode=list:full
" 自動的にファイルを読み込むパスを設定 ~/.vim/userautoload/*vim
set runtimepath+=~/.vim/
runtime! userautoload/*.vim

 Windows向けのサンプルは以下の通りだ。

" [Backspace] で既存の文字を削除できるように設定
"  start - 既存の文字を削除できるように設定
"  eol - 行頭で[Backspace]を使用した場合上の行と連結
"  indent - オートインデントモードでインデントを削除できるように設定
set backspace=start,eol,indent
" 特定のキーに行頭および行末の回りこみ移動を許可する設定
"  b - [Backspace]  ノーマルモード ビジュアルモード
"  s - [Space]      ノーマルモード ビジュアルモード
"   - [→]          ノーマルモード ビジュアルモード
"  [ - [←]          挿入モード 置換モード
"  ] - [→]          挿入モード 置換モード
"  ~ - ~            ノーマルモード
set whichwrap=b,s,[,],,~
" マウス機能有効化
set mouse=a
" シンタックスハイライト有効化 (背景黒向け。白はコメントアウト
" されている設定を使用)
syntax on
highlight Normal ctermbg=black ctermfg=grey
highlight StatusLine term=none cterm=none ctermfg=black ctermbg=grey
highlight CursorLine term=none cterm=none ctermfg=none ctermbg=darkgray
"highlight Normal ctermbg=grey ctermfg=black
"highlight StatusLine term=none cterm=none ctermfg=grey ctermbg=black
"highlight CursorLine term=none cterm=none ctermfg=darkgray ctermbg=none
set nohlsearch " 検索キーワードをハイライトしないように設定
set cursorline " カーソルラインの強調表示を有効化
" 行番号を表示
set number
" ステータスラインを表示
set laststatus=2 " ステータスラインを常に表示
set statusline=%F%r%h%= " ステータスラインの内容
" インクリメンタル検索を有効化
set incsearch
" 補完時の一覧表示機能有効化
set wildmenu wildmode=list:full
" 自動的にファイルを読み込むパスを設定 ~/_vimfiles/userautoload/*vim
set runtimepath+=~/_vimfiles/
runtime! userautoload/*.vim

 設定ファイルがある状態とない状態では、次のようにVimの表示も大きく変わる。設定ファイルに何も記述していないと、下の例のように白黒の表示になる。

 一方、設定ファイルにいろいろ書き込んでおくと、以下のようにテキストの色分け表示や、行番号表示など、いろいろな機能を利用できる。

 最後に、応用例を3つ紹介しよう。

ショートカットキーの割り当てを変える

 ほかのエディタからVimに移ってくると、ショートカットキーが違いすぎることにストレスを感じるかもしれない。この場合は、よく使っていたショートカットキーをVimでも使えるように設定してやればよい。例えば次に示す設定ファイル(UNIX/Linux向け)では、ファイルの保存に[Ctrl-s]、編集の終了に[Ctrl-x] [Ctrl-q]、アンドゥに[Ctrl-z]、日付の挿入に[Ctrl-x] [t]を割り当てている。

" Save shortcut - Ctrl-s
imap :write
nmap  :write
" Quit shortcut - Ctrl-x Ctrl-q
imap :quit
nmap  :quit
" Undo shortcut - Ctrl-z
imap :undo
nmap  :undo
" Insert Data
imap t =system('LANG=C date')

 [Ctrl-s]などは特に便利だ。このショートカットに保存機能を割り当てているアプリケーションも多く、すでに体が覚えてしまっている人も多いだろう。imapは挿入モードでの割り当て、nmapはノーマルモードでの割り当てとして機能する。system('LANG=C date')は外部コマンドを実行してその結果を持ってきている。Windowsであればここをsystem('date /t')のように書き換えればよい。

ショートカットキーをEmacs風に設定する

 Emacsユーザーなら、[Ctrl]を活用したショートカットが体の芯まで染み付いているはずだ。Vimを使っていても、自然とEmacsのショートカットを使うように手が動いてしまうため、大変な結果を招くことも少なくない。このようなとき、先ほど紹介したショートカットキーの割り当て機能を使って、Emacsでよく使う操作を割り当てたショートカットを設定してしまえばよい。例えば次のように設定する。

" Emacs keybind
function! b:emacsCtrlK()
let l:curcolnum = col('.')
let l:curcoleol = col('$')
if  1 == l:curcolnum
normal! D
join!
call cursor(line('.'), 1)
elseif l:curcolnum  :call cursor(line('.'), 1)
nmap  :call cursor(line('.'), 1)
" Ctrl-e
imap :call cursor(line('.'), col('$'))
nmap  :call cursor(line('.'), col('$'))
" Ctrl-k
imap =b:emacsCtrlK()
nmap  :call b:emacsCtrlK()
" Ctrl-x Ctrl-f
imap :tabnew:edit .
nmap  :tabneb:edit .
" Ctrl-x Ctrl-s
imap :write
nmap  :write
" Ctrl-x Ctrl-w
imap :call b:emacsCtrlXCtrlW()
nmap  :call b:emacsCtrlXCtrlW()
" Ctrl-x Ctrl-q
imap :quit
nmap  :quit
" Backspace
nmap  Xi
vmap  di
" Space
nmap  i 
vmap  i 
" Ctrl-x u
imap u :undo
nmap u :undo
" Ctrl-x Ctrl-u
imap :undo
nmap  :undo
" Ctrl-d
imap :normal! x
nmap  x
" Ctrl-f
imap /
nmap  /
" Enter
nmap  i
" Ctrl-x 2
imap 2 :sp
nmap 2 :sp
" Ctrl-x 3
imap 3 :vsp
nmap 3 :vsp
" Ctrl-x 0
imap 0 :quit
nmap 0 :quit

 この設定ファイルでは、関数を定義して少し込み入った処理も入れている。本連載の範囲を超えてしまうのでVimの本格的なプログラミングについて説明はしないが、それほど難しいものではない。Vimをインストールすると拡張子が.vimという名前のファイルが大量にインストールされるので、これらのファイルを参考に、あとは:helpを使って機能を調べながら作成すればよいのだ。

日本語対応

 設定ファイルの用途の1つとして、Vimを日本語にスムーズに対応させる方法を1つ紹介する。Vimでは明示的にノーマルモードから挿入モードに移行しないと文字を入力できない。しかし、日本語がVimの命令に割り当てられていることはない。つまり、日本語を入力したときは、その文字を入力したいときと判断しても問題ない。

 であれば、日本語のすべての文字に対してそれぞれショートカットを割り当て、その文字を挿入するという機能にしてしまえばいい。文字が大量にあるのですべて掲載することはしないが、例えば次のように設定ファイルを書いていけばいい。常用漢字にひらがなとカタカナ、全角アルファベットや全角記号などを加えたものを用意すればよいのだ。

nmap  亜 i亜
vmap  亜 亜
nmap  哀 i哀
vmap  哀 哀
nmap  挨 i挨
vmap  挨 挨
nmap  愛 i愛
vmap  愛 愛
nmap  曖 i曖
vmap  曖 曖
nmap  悪 i悪
vmap  悪 悪
nmap  握 i握
vmap  握 握
nmap  圧 i圧
vmap  圧 圧
nmap  扱 i扱
vmap  扱 扱

 ただし、すべての日本語の文字に対応させようとするとかなりの行数になる。その結果、この設定を適用するとVimの起動に長い時間がかかるようになってしまう。Vimならではの、スパッと起動する爽快感がなくなるので、ちょっと考えた方がいい愚直な設定ではある。

設定ファイルは使いながら見直していく

 最初は設定ファイルに多くの機能を詰め込みがちだが、Vim風の操作に慣れてくると、最初は手助けになっていた機能が、むしろ煩わしいものになってくることがある。それに多くの設定があると、なにか特定の設定を変えようとしたときに設定を記述する部分を見付けにくくなる。設定ファイルは時々見直して、不要になった設定は消去し、設定ファイルの見通しをよくしておきたい。

著者紹介

後藤 大地

後藤大地

オングス代表取締役。@ITへの寄稿、MYCOMジャーナルにおけるニュース執筆のほか、アプリケーション開発やシステム構築、『改訂第二版 FreeBSDビギナーズバイブル』『D言語パーフェクトガイド』『UNIX本格マスター 基礎編〜Linux&FreeBSDを使いこなすための第一歩〜』など著書多数。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。