Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

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

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

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

まぁたぶん、メニューを使わない理由は 「キーボードからマウスに手を動かすのがメンドイ」からでしょう。
私もそんな理由でメニューを以下のような設定で非表示にしていたのですが...。(正確にはメニュー項目を1つも設定しないですが (== 非表示)。)

setwinaltkeys=yes
setguioptions=mM

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

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

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

メニューの表示/非表示

  • メニューを表示する。
setguioptions+=m
  • メニューを非表示する。
setguioptions-=m

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

メニューのデフォルト項目とは、上の図でいう「File Edit Tools Syntax Buffers Window Help」らのことです。
これらは"$VIMRUNTIME/menu.vim"を読み込むことで設定されます。

  • "$VIMRUNTIME/menu.vim"を読み込まない。
setguioptions+=M
  • "$VIMRUNTIME/menu.vim"を読み込む。
setguioptions-=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さんです。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>