Vimでファイルを開く方法(基本編)
この記事はVim Advent Calendar 2016の4日目の記事です。
Vimでファイルを開くのに
のプラグインを使っている人はたくさんいると思います。
これらのプラグインは大変便利なインターフェースを提供してくれているのですが、
依存しすぎてしまうと標準機能でファイルを開く方法を忘れてしまうかもしれません。
...さすがにそんなVimmerはいないと思いますが、ファイルを開く
- コマンド
- キーマッピング
をおさらいしてみましょう。
コマンドで開く
以下のコマンド*1の引数としてファイル名を指定します。
コマンド | 説明 |
---|---|
:e[dit] | 現在のバッファでファイルを開く |
:sp[lit] | 水平分割してファイルを開く |
:vs[plit] | 垂直分割してファイルを開く |
:tabe[dit] | 新しいタブページを作成してファイルを開く |
このとき、
<Tab>
(または<CTRL-I>
)でファイル名の補完- 動作は
wildmode
(:help wildmode)で変更可能
- 動作は
<CTRL-D>
で入力にマッチするファイル名の一覧表示
をすることができます。
また、対象のファイル名を探すのに
*
や**
などのワイルドカード(:help wildcard):p
や:h
などのファイル名修飾子(:help filename-modifiers)
を用いることもできます。
例
" <CTRL-D>で一覧を表示し、 :e */index<CTRL-D> public/index.html src/index.css src/index.js " <Tab>を押すと最初の候補が選択される :e */index<Tab> :e public/index.html " もう1度<Tab>を押すと次の候補が選択される :e public/index.html<Tab> :e src/index.css
- /usr/lib/golang/src/配下のreader.goを探す
:e /usr/lib/golang/src/**/reader.go<CTRL-D> /usr/lib/golang/src/archive/tar/reader.go /usr/lib/golang/src/archive/zip/reader.go /usr/lib/golang/src/bytes/reader.go /usr/lib/golang/src/compress/lzw/reader.go /usr/lib/golang/src/compress/zlib/reader.go /usr/lib/golang/src/debug/elf/reader.go /usr/lib/golang/src/encoding/csv/reader.go /usr/lib/golang/src/go/doc/reader.go /usr/lib/golang/src/image/gif/reader.go /usr/lib/golang/src/image/jpeg/reader.go /usr/lib/golang/src/image/png/reader.go /usr/lib/golang/src/mime/quotedprintable/reader.go /usr/lib/golang/src/net/textproto/reader.go /usr/lib/golang/src/strings/reader.go /usr/lib/golang/src/testing/iotest/reader.go
" カレントディレクトリが/rootの状態で :pwd /root " swagger-codegen/samples/server/petstore/go-api-server/main.goを開いている時 :echo expand('%:p') /root/swagger-codegen/samples/server/petstore/go-api-server/main.go " 最初の:hで"/main.go"、次の:hで"/go-api-server"が除去される :e %:h:h/**/pom.xml<CTRL-D> swagger-codegen/samples/server/petstore/java-inflector/pom.xml swagger-codegen/samples/server/petstore/java-msf4j/pom.xml swagger-codegen/samples/server/petstore/jaxrs/jersey1/pom.xml swagger-codegen/samples/server/petstore/jaxrs/jersey2/pom.xml swagger-codegen/samples/server/petstore/jaxrs-cxf/pom.xml swagger-codegen/samples/server/petstore/jaxrs-cxf-cdi/pom.xml swagger-codegen/samples/server/petstore/jaxrs-resteasy/default/pom.xml swagger-codegen/samples/server/petstore/jaxrs-resteasy/joda/pom.xml swagger-codegen/samples/server/petstore/jaxrs-spec/pom.xml swagger-codegen/samples/server/petstore/scalatra/pom.xml swagger-codegen/samples/server/petstore/spring-mvc/pom.xml swagger-codegen/samples/server/petstore/spring-mvc-j8-async/pom.xml swagger-codegen/samples/server/petstore/springboot/pom.xml swagger-codegen/samples/server/petstore/undertow/pom.xml
キーマッピングで開く
ファイル名がある場所にカーソルを移動し、以下のキー*2を入力します。
キー | 説明 |
---|---|
gf |
現在のバッファでファイルを開く |
CTRL-W f |
水平分割してファイルを開く |
CTRL-W CTRL-F |
|
CTRL-W gf |
新しいタブページを作成してファイルを開く |
現在開いているバッファにファイル名があれば良いですが、無い場合は:r!
と
ls
、find
などの外部コマンドを用いてファイル一覧を作成してしまいましょう。
" 新しいバッファにカレントディレクトリのファイル一覧を作成 :new | r! ls
なお、:new
でバッファを作成した場合、デフォルトではgf
でファイルを開く際にエラー(E37
)になってしまいます。
その場合、
set hidden
... ウィンドウ内に表示されなくなる際にバッファを隠す- 全てのバッファが対象
- Vim終了時に未保存バッファが残っているとエラーになる
set bufhidden=hide
... ウィンドウ内に表示されなくなる際にバッファを隠す- カレントバッファのみが対象
- Vim終了時に当該バッファが未保存だとエラーになる
set buftype=nofile
... バッファを書き込まれる予定のないバッファにする- カレントバッファのみが対象
- Vim終了時に当該バッファが未保存でもエラーにならない
などの設定でバッファを保存せずに切り替えられるようにしてあげる必要があります。
また、ファイル一覧に大量のファイルが表示されてしまった場合
/{pattern}
で検索したり、:g/{pattern}/d
でフィルタしてあげると
目的のファイルが探しやすくなります。
例
- カレントディレクトリ配下のファイル一覧を作成
:new | r! find . -type f " Windowsの場合 :new | r! dir . /b /s /a-d
- 現在開いているファイルがあるディレクトリ配下のファイル一覧を作成
" findの引数は実行前に<Tab>で展開しておく :new | r! find %:p:h<Tab> -type f " Windowsの場合 :new | r! dir %:p:h<Tab> /b /s /a-d
- ファイル一覧を作成するユーザコマンドの定義
上記のコマンドを毎回入力するのが面倒な場合、.vimrc
に以下のようなコマンドを追加しておくと便利です。
" 新しいscratchバッファ(:help special-buffers 参照)を作成する command! -bar NewScratch new | setlocal buftype=nofile bufhidden=hide noswapfile " :NewScratchで作成したバッファにfindコマンドの出力内容を挿入する " FIX: <args>は""で囲まないとスペースの入ったパスが正しく処理できない(derisさん、ありがとうございます) command! -nargs=1 -complete=dir Files NewScratch | r! find "<args>" -type f " Windowsの場合 " FIX: <args>は""で囲まないとスペースの入ったパスが正しく処理できない(derisさん、ありがとうございます) " command! -nargs=1 -complete=dir Files NewScratch | r! dir "<args>" /b /a-d /s " %:p:hを引数として:Filesを実行する(<args>には%:p:hが展開された状態で渡される) command! FilesBuffer Files %:p:h " .を引数として:Filesを実行する command! FilesCurrent Files .
まとめ
Vimの標準の機能でファイルを開く方法を紹介しました。
単にファイルを開くだけなら十分ですが、インタラクティブ性や非同期性が必要な場面になると物足りないところがあるかもしれません。
そういった時には組み込み関数と合わせて使ってみたり、プラグインを活用すると良いと思います。
VimConf 2016 に行ってきた
VimConf 2016に行ってきた。
発表メモ
Introduction to Vim 8.0 by Ken Takata
- 最近Vimに入った機能の中で
job
,timer
,packages
は使ったけど *1 *2Partial
,lambda
,closure
はまだ触っていないので試してみたい - 日本人VimmerがVim本体に多くのパッチを送っているのは知っていたけど改めて数字で見てみると予想以上にすごかった
- Vimのテストが充実してきたおかげで新機能の使用例としても参考にできてありがたい
Vim as the MAIN text editor by bird_nitryn
Denite.nvim ~The next generation of unite~ by Shougo
- unite.vimを使っていてパフォーマンス的な不満は特になかったけどデモに触発されてMacVimでDenite.nvimを試してみたらすごく速かった
- Decoupled UIはちょっと気になるのでそのうち試してみたい
Go、C、Pythonのためのdeoplete.nvimのソースの紹介と、Neovim専用にpure Goでvim-goをスクラッチした話 by zchee
- neovimに全然興味なかったけど発表を聞いてとりあえずインストールしてみることにした
- nvim-goの作りが気になるのでソースを見てみる
エディタの壁を越えるGoの開発ツールの文化と作成法 by tenntenn
- 自分の近くでは「Goやったことある方」でほとんどの人が手を挙げていた
- gofmt(ごーふむと)、GOOS(ぐーす)、GOARCH(ごーち)
- ファイルを生成するツール *3 は作ったから次はファイルを書き換えるツールと思っていたのでgorenameのところがとても参考になった
vim-mode-plus for Atom editor by t9md
- vim-mode-plusのアーキテクチャとそこに到るまでの考え方がただただすごかった
- Vimでテキストを編集するということへの捉え方
- モーションやオペレータの表現
- persistence-selectionはVimにも欲しい
Vimの日本語ドキュメント by MURAOKA Taro
- 「翻訳作業に手と目と知恵を貸してくれる人募集中」
- リファレンス&ユーザー・マニュアル
- メッセージ
- メニュー
- など
- 脱線しかけたのはAho-Corasick法(文字列探索アルゴリズム)
- 技術者はSPOFは排除したいはず
Vim script parser written in Go by haya14busa
- Fixer、Formatterに期待!
- stacktrace便利そう
- これがあればthemisでカバレッジ取れる!?
- Vim8とV8(node)は紛らわしい?
僕の友達を紹介するよ by aiya000
- aref-web.vim使ってみる
Best practices for building Vim plugins by thinca
:help design-goals
は知らなかった- シャイで有名なthincaさんがハイテンションで発表に懸ける強い想いが感じられた
感想
- 「Vimハラスメント」に気をつけようと思った
- 今回はチームのメンバ(2名)に参加してもらう事に成功した
- 楽しんでもらえたようで良かった
終わりに
発表者のみなさま、スタッフのみなさま、会場を提供してくださったミクシィさん、
ありがとうございました。
来年も是非参加したいです。
neocompleteとneobundleを捨てた
半年ほど使っていなかったのでvimrcを整理するタイミングで完全に消すことにした。
ただ長年ツートップだったプラグインなので消すに至った経緯を軽くメモっておく。
neocomplete
今の自分にはVim標準の補完機能(ins-completion
)で十分だった。
- 自動補完が発動するとVimが固まって使い物にならなくなることがある
- 特定の環境でたまにしか発生しないけど発生するとすごくストレス
- 自動補完されないと補完自体ができないと思ってしまう
- そんなことはなく、基本的には常に手動補完可能
- そもそも自動補完の対象になっていない補完機能もある
- if_luaが必須
昔は自動補完が必須だと思っていたけどVimの熟練度が上がったからか、
「補完したくなったらその時に
CTRL-X
(orN
,P
)押せばいいじゃん」
と思うようになった。
CTRL-X
が押しにくいと感じていたのもいつの間にか全然気にならなくなっていた。
neobundle
Vim標準のパッケージ機能(packages
)を使うことにした。
どうもプラグインを管理するプラグインに依存するのに疲れたっぽい。
決定版が出るまでは当分これでいくつもり。
次は脱unite!?
インターフェースは便利なんだけどやっぱり安定性はイマイチ...
(今までできていたことが急にできなくなったりすることがあるし)
いつ無くなっても困らないくらいには依存度を減らすようにしておくかな。
vimのjob機能を使ってプラグインを更新する
2ヶ月以上経ってるけど一応前回の続き。
~/.vim/pack/bundle/opt/配下にインストールされているプラグインを更新するには、
ls -d ~/.vim/pack/bundle/opt/* | xargs -I{} git -C {} pull --ff --ff-only
でやってしまうのが手っ取り早いんだけど、あえてvimでやってみた。
以下のようにjob機能を使うことでvimをブロックせず、結果をバッファに出力するといった処理が簡単に実現できた。
let s:plugins = [ \ 'vim-quickrun', \ ] "プラグインを更新したくなったら :call UpdatePackPlugins() を実行する function! UpdatePackPlugins() " 結果を表示するためのバッファを作成 topleft split edit `='[update plugins]'` let s:idx = 0 call timer_start(100, 'PluginUpdateHandler', {'repeat': len(s:plugins)}) endfunction function! PluginUpdateHandler(timer) let path = expand('~/.vim/pack/bundle/opt/' . s:plugins[s:idx]) let cmd = printf('git -C %s pull --ff --ff-only', path) " コマンドを実行し、結果をout_nameで指定したバッファに出力する call job_start(cmd, {'out_io': 'buffer', 'out_name': '[update plugins]'}) let s:idx += 1 endfunction
UpdatePackPlugins()内でforを使うと全部更新できなかったのでtimer機能でPluginUpdateHandler()を呼び出すようにしている。
vim pluginのbackground loading
最近vimに追加されたpackages
、timer
を使ってvimが起動した後にプラグインの読み込みができたらどうだろう?
と思ったのでやってみました。
以下のような設定をvimrcに追加してvimを起動するとvimが立ち上がってからプラグインが読み込まれます。
" vim起動後に~/.vim/pack/bundle/opt/vim-quickrunを読み込む例 let s:plugins = [ \ 'vim-quickrun', \ ] let s:idx = 0 function! PackAddHandler(timer) execute 'packadd ' . s:plugins[s:idx] let s:idx += 1 endfunction autocmd VimEnter * call timer_start(1, 'PackAddHandler', {'repeat': len(s:plugins)})
約150個のプラグインある状態のMacVim-KaoriYaで、起動時間が
- NeoBundle: 約530ms
- background loading: 約130ms
と、だいぶ高速化されました。
ただし、
packages
の仕様*1で読み込まれないプラグインがあったり、- 追記(2016-03-21)
textobj-userはruntime! plugin/textobj/*.vim
operator-userはruntime! plugin/operator/*.vim
をPackAddHandler
で実行すると読み込める
- 追記(2016-04-03)
- 7.4.1699からはサブディレクトリの.vimも読み込まれるようになったので
runtime!
は不要
- 7.4.1699からはサブディレクトリの.vimも読み込まれるようになったので
- 追記(2016-03-21)
- 起動時に指定したファイルのfiletypeが(ファイルを開いた後に読み込まれるので)反映されなかったり、
- 追記(2016-03-21)
PackAddHandler
でdoautocmd BufReadPost
を実行すると反映される
- 追記(2016-03-21)
- 引数の
-c
で指定したコマンドが(実行後に読み込まれるので)失敗したり、
するので有効に使うには色々と考えないといけなさそうです。
が 4月9日(土) に発売されます。
技術評論社さんのサイトにも来週にはページができるそうなのでできました。 gihyo.jp
興味のある人はチェックしてみてください。
VimのCTRL-X補完について
この記事はVim Advent Calendar 2015の5日目の記事です。
Vimで補完といえばShougo
さんのプラグインneocomplete
が有名ですが、プラグインを使わなくてもCTRL-X サブモード
で補完を行うことが可能です。
この機能はブログや書籍などでたびたび紹介されてはいますが、文字だけではイメージがつきにくいところもあるのでGIFアニメで紹介してみたいと思います。
行(全体)補完: CTRL-X CTRL-L
if から始まる行と l から始まる行を補完(go)
検索対象はcomplete
オプションで設定可能
局所キーワード補完: CTRL-X CTRL-N / CTRL-X CTRL-P
現在のファイルから T で始まるキーワードを補完(perl)
辞書補完: CTRL-X CTRL-K
dictionary
オプションで設定したファイルから twist で始まる単語を補完
dictionary
オプションに使用するファイルを設定する必要がある(デフォルトは未設定)
set dictionary=/usr/share/dict/words
シソーラス補完: CTRL-X CTRL-T
thesaurus
オプションで設定したファイルから twister の類語を補完
thesaurus
オプションに使用するファイルを設定する必要がある(デフォルトは未設定)
set thesaurus=/usr/share/mythes/th_en_US_v2.dat
パスパターン補完: CTRL-X CTRL-I
インクルードしているSocket.pmから getpr で始まるキーワードを補完(perl)
検索対象はinclude
オプションとpath
オプションで設定可能
タグ補完: CTRL-X CTRL-]
読み込むtagsファイルはtags
オプションで設定可能
ファイル名補完: CTRL-X CTRL-F
/etc/y から始まるファイル名を補完
定義補完: CTRL-X CTRL-D
mixinを補完(sass)
検索対象はdefine
オプションとinclude
オプションとpath
オプションで設定可能
コマンドライン補完: CTRL-X CTRL-V
vimのコマンドと関数を補完
ユーザー定義補完: CTRL-X CTRL-U
completefunc
オプションに設定したCompleteMonthsで月の名前を補完
fun! CompleteMonths(findstart, base) if a:findstart " 単語の始点を検索する let line = getline('.') let start = col('.') - 1 while start > 0 && line[start - 1] =~ '\a' let start -= 1 endwhile return start else " "a:base" にマッチする月を探す let res = [] for m in split("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec") if m =~ '^' . a:base call add(res, m) endif endfor return res endif endfun
オムニ補完: CTRL-X CTRL-O
omnifunc
オプションに設定されたjavascriptcomplete#CompleteJSでDate型のメソッドを補完(javascript)
スペリング補完: CTRL-X s / CTRL-X CTRL-S
頭文字が大文字になっていない単語と綴りが間違っている単語の修正候補を補完
spell
オプションをオンにする必要がある
上記環境はDocker上のcentos6に以下のパッケージをインストールしたものです。
プラグインは一切インストールしておらず、vimrcも作成していません。
yum install vim-enhanced ctags words mythes-en
CTRL-X サブモード について
順序が逆転してしまいましたが、CTRL-X サブモード
は挿入モード
または置換モード
中にCTRL-X
キーで入ることができます。
ポップアップメニューの補完候補はCTRL-N
(次の候補)またはCTRL-P
(前の候補)キーで選択し、CTRL-Y
キーやスペース、エンターなどで挿入することができます。
また、CTRL-E
キーで補完を中止して元のテキストに戻すことができます。
最近neocomplete
が入っていないVimを触ることがちょこちょことあり、ここ1週間くらいはメインのVimでもneocomplete
を使わずに過ごしてみました。
昔は自動補完プラグインが無いとコーディングなんてできない...とか思っていましたがそこまで困らないくらいには成長していたようです。
ただ、CTRL-X
キーがイマイチ押しにくいと感じているのでこれさえなんとかなれば自動補完プラグインは使わなくなるかもしれません。
今はこんなマッピングを試してみています。
inoremap <expr><Tab> pumvisible() ? "\<C-n>" : MyInsCompl() function! MyInsCompl() let c = nr2char(getchar()) if c == "l" return "\<C-x>\<C-l>" elseif c == "n" return "\<C-x>\<C-n>" elseif c == "p" return "\<C-x>\<C-p>" elseif c == "k" return "\<C-x>\<C-k>" elseif c == "t" return "\<C-x>\<C-t>" elseif c == "i" return "\<C-x>\<C-i>" elseif c == "]" return "\<C-x>\<C-]>" elseif c == "f" return "\<C-x>\<C-f>" elseif c == "d" return "\<C-x>\<C-d>" elseif c == "v" return "\<C-x>\<C-v>" elseif c == "u" return "\<C-x>\<C-u>" elseif c == "o" return "\<C-x>\<C-o>" elseif c == "s" return "\<C-x>s" endif return "\<Tab>" endfunction
macvim-kaoriya or macvimをビルドする(2015/08)
vim 7.4.774で追加された v:completed_item
をmacvim-kaoriyaで使いたくなったけど今日の時点だとまだバージョン7.4.769なので使えない...
Homebrewからインストールできるらしいけど手元の環境ではエラーが出たのでコンソールからビルドしてみる。
2015/08/26追記
エラーの原因は古いrecipeを参照しているせいでした。
brew tap splhack/homebrew-splhack brew install --HEAD splhack/splhack/macvim-kaoriya
でHomebrewからインストールできたので以下は通常用途では使う必要なさそう。
- vim本体のソースを変更したい
- if_*を/usr/local以外のバージョンで使いたい
時くらいか。。。
ソースのダウンロード
- macvim-kaoriya
git clone https://github.com/splhack/macvim
or
- macvim
git clone https://github.com/b4winckler/macvim
ビルド
このビルドスクリプトを
macvimディレクトリで実行する。
cd macvim
./build-macvim.sh
実行
open src/MacVim/build/Release/MacVim.app
とりあえず動いた。
- macvim-kaoriya
:version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 23 2015 20:28:09) MacOS X (unix) version Included patches: 1-826 Compiled by daisuzu <daisuzu@gmail.com> Huge version with MacVim GUI. Features included (+) or not (-): +acl +cmdline_info +emacs_tags -gettext +listcmds +mouse_netterm +persistent_undo +signs +termresponse +wildignore +arabic +comments +eval +guess_encode +localmap +mouse_sgr +postscript +smartindent +textobjects +wildmenu +autocmd +conceal +ex_extra -hangul_input +lua/dyn -mouse_sysmouse +printer -sniff +title +windows +balloon_eval +cryptv +extra_search +iconv +menu +mouse_urxvt +profile +startuptime +toolbar +writebackup +browse +cscope +farsi +insert_expand +migemo +mouse_xterm +python/dyn +statusline +transparency -X11 ++builtin_terms +cursorbind +file_in_path +jumplist +mksession +multi_byte +python3/dyn -sun_workshop +user_commands -xfontset +byte_offset +cursorshape +find_in_path +keymap +modify_fname +multi_lang +quickfix +syntax +vertsplit +xim +cindent +dialog_con_gui +float +kaoriya +mouse -mzscheme +reltime +tag_binary +virtualedit -xsmp +clientserver +diff +folding +langmap +mouseshape +netbeans_intg +rightleft +tag_old_static +visual -xterm_clipboard +clipboard +digraphs -footer +libcall +mouse_dec +odbeditor +ruby/dyn -tag_any_white +visualextra -xterm_save +cmdline_compl +dnd +fork() +linebreak -mouse_gpm +path_extra -ruby19 -tcl +viminfo -xpm +cmdline_hist -ebcdic +fullscreen +lispindent -mouse_jsbterm +perl/dyn +scrollbind +terminfo +vreplace system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" 2nd user vimrc file: "~/.vim/vimrc" user exrc file: "$HOME/.exrc" system gvimrc file: "$VIM/gvimrc" user gvimrc file: "$HOME/.gvimrc" 2nd user gvimrc file: "~/.vim/gvimrc" system menu file: "$VIMRUNTIME/menu.vim" fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim" Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe -DMACOS_X_UNIX -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 Linking: gcc -L. -L/usr/local/lib -L. -L/usr/local/lib -L/usr/local/lib -o Vim -framework Cocoa -framework Carbon -lm -lncurses -liconv -lmigemo -framework Cocoa -pagezero_size 10000 -image_base 100000000 -pagezero_size 10000 -image_base 100000000 -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE
- macvim
:version VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Aug 23 2015 20:37:09) MacOS X (unix) version Included patches: 1-383 Compiled by daisuzu <daisuzu@gmail.com> Huge version with MacVim GUI. Features included (+) or not (-): +acl +cmdline_info +emacs_tags -gettext +lua/dyn +mouse_urxvt +profile +statusline +transparency -X11 +arabic +comments +eval -hangul_input +menu +mouse_xterm +python/dyn -sun_workshop +user_commands -xfontset +autocmd +conceal +ex_extra +iconv +mksession +multi_byte +python3/dyn +syntax +vertsplit +xim +balloon_eval +cryptv +extra_search +insert_expand +modify_fname +multi_lang +quickfix +tag_binary +virtualedit -xsmp +browse +cscope +farsi +jumplist +mouse -mzscheme +reltime +tag_old_static +visual -xterm_clipboard ++builtin_terms +cursorbind +file_in_path +keymap +mouseshape +netbeans_intg +rightleft -tag_any_white +visualextra -xterm_save +byte_offset +cursorshape +find_in_path +langmap +mouse_dec +odbeditor +ruby/dyn -tcl +viminfo -xpm +cindent +dialog_con_gui +float +libcall -mouse_gpm +path_extra +scrollbind +terminfo +vreplace +clientserver +diff +folding +linebreak -mouse_jsbterm +perl/dyn +signs +termresponse +wildignore +clipboard +digraphs -footer +lispindent +mouse_netterm +persistent_undo +smartindent +textobjects +wildmenu +cmdline_compl +dnd +fork() +listcmds +mouse_sgr +postscript -sniff +title +windows +cmdline_hist -ebcdic +fullscreen +localmap -mouse_sysmouse +printer +startuptime +toolbar +writebackup system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" 2nd user vimrc file: "~/.vim/vimrc" user exrc file: "$HOME/.exrc" system gvimrc file: "$VIM/gvimrc" user gvimrc file: "$HOME/.gvimrc" 2nd user gvimrc file: "~/.vim/gvimrc" system menu file: "$VIMRUNTIME/menu.vim" fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim" Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe -DMACOS_X_UNIX -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 Linking: gcc -L. -L/usr/local/lib -L. -L/usr/local/lib -L/usr/local/lib -o Vim -framework Cocoa -framework Carbon -lm -lncurses -liconv -framework Cocoa -pagezero_size 10000 -image_base 100000000 -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE
gettext-mkやif_*の言語は全部Homebrew経由でインストールした。
luaenv、pyenv、rbenvあたりが有効だと多分ビルドできないので無効にするか以下を正しく設定する。