Edited at

メニュー使っていますか?

More than 5 years have passed since last update.

この記事はVim Advent Calendar 2012 : ATND272日目の記事になります。

突然ですが、皆さんはVimのメニュー使っていますか?

私が思うにVimmerの方々でメニューを表示し使っている方はすごく少数派な気がします。

まぁたぶん、メニューを使わない理由は 「キーボードからマウスに手を動かすのがメンドイ」 からでしょう。

私もそんな理由でメニューを以下のような設定で非表示にしていたのですが...。(正確にはメニュー項目を1つも設定しないですが (== 非表示)。)

set winaltkeys=yes

set guioptions=mM

set winaltkeys=yesguioptions=mにしておかないとAlt+Spaceでシステムメニューが開けなくなっちゃうんですよねぇー。

でもここ最近、私は 「マウスからキーボードに手を動かすのがメンドイ」という理由 でVimのメニューを使ったりしています。

ということで今回は、Vimのメニューについて簡単にまとめたいと思います。詳しいことはVimにヘルプしてください(:h menus参照)。


メニューの表示/非表示


  • メニューを表示する。

set guioptions+=m


  • メニューを非表示する。

set guioptions-=m


メニューのデフォルト項目を設定しない。

メニューのデフォルト項目とは、上の図でいう「File Edit Tools Syntax Buffers Window Help」らのことです。

これらは"$VIMRUNTIME/menu.vim"を読み込むことで設定されます。


  • "$VIMRUNTIME/menu.vim"を読み込まない。

set guioptions+=M


  • "$VIMRUNTIME/menu.vim"を読み込む。

set guioptions-=M


メニューに項目を追加する。

メニューに新しい項目を追加するには以下のような構文になります。


menu [項目名] [コマンド]


[項目名]は項目の階層を.で区切って表します。

[コマンド]はその項目を選択した時に実行したいVimコマンドを指定します。

例:

menu Commnads.Edit\ \.vimrc                  :e $MYVIMRC<cr>

menu Commnads.-sep- :
menu Commnads.\.vimrcを再読み込みする。 :so $MYVIMRC<cr>

説明:

[項目名]はマルチバイト文字でも基本的にOKです。

エスケープしなければならない文字は半角スペース(0x20)とカンマ(0x2E)です。

-sep-はセパレーターを表します。ハイフン(0x2D)で括られた項目であればsepでなくても大丈夫です。

例えば、Commnads.-これはセパレータです-もセパレーターになります。

ただし、[項目名]の先頭にセパレーターを持ってくることはできません(-seq-.force\ quitとか)。


メニューから項目を削除する。

メニューから項目を削除するには以下のような構文になります。


unmenu [項目名]


[項目名]は:menuコマンドで指定したものです。



  • Commnads.Edit\ \.vimrcの項目を削除する。

unmenu Commnads.Edit\ \.vimrc


  • すべての項目を削除する。

unmenu *


メニューの項目をコマンドラインから実行する。

メニューの項目はコマンドラインからも実行することができます。

構文は項目を削除するするときと同じです。


  • .vimrcを編集する。

emenu Commnads.Edit\ \.vimrc


終わり

以上、「メニュー使っていますか?」でした。

今回紹介したメニュ-コマンドのほんの一部です。メニュ-コマンドは他にもまだまだいっぱいあります。

まぁそんなわけで、Vimのメニューを使ってみることを検討してみてはどうでしょうか?

たまにはマウスからキーボードに手を動かすこともめんどくさがりましょう

明日の記事は@manga_osyoさんです。