以前書いた初心者がVimをインストールするメモという記事が今でもたまに見られているようなので、新しいMacのセットアップを機に書き直してみました。以前の記事よりは洗練されているはずです。
XCodeをインストールする
App Storeにありますので、アプリを起動してインストールします。
インストールが終わったら一度起動して、コマンドラインツールをインストールしておきましょう。
Homebrewをインストールする
Homebrewにアクセスすると、トップにインストールスクリプトが表示されていますので、それをターミナルにコピペして実行します。
実行するとパスワードを聞かれるので、管理者パスワードを入力しましょう。
インストールが完了したらbrew help
を実行してみます。使い方が表示されていたら正常にインストールが完了しています。man brew
などで詳しい使い方を見てみてもいいでしょう。
gitをインストールする
Mac標準でgitがインストールされていますが、最新バージョンを使用するためにHomebrewでインストールします。
まずは標準のgitについて確認してみましょう。
$ git --version
git version 2.11.0 (Apple Git-81)
$ which git
/usr/bin/git
標準のgitを確認したところで、Homebrewでgitをインストールしてみます。
$ brew install git
インストールが完了したら、先ほどMac標準のgitを確認したときと同じように、今インストールしたgitを確認してみます。
$ git --version
git version 2.11.0 (Apple Git-81)
$ which git
/usr/local/bin/git
gitは/usr/local/bin/gitを参照しているようですが、バージョン情報が変わっていませんね。一度ターミナルを再起動して再度実行してみましょう。
$ git --version
git version 2.12.2
$ which git
/usr/local/bin/git
無事バージョンが上がり、Homebrewでインストールしたgitを使える状態になりました。
Vimをインストールする
では本題のVimをインストールします。
これまたMacには標準のVimがインストールされていますので、バージョンを確認してみます。
$ vim --version
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Feb 4 2017 00:48:24)
Included patches: 1-898, 8056
Compiled by root@apple.com
Normal version without GUI. Features included (+) or not (-):
+acl -farsi -mouse_netterm +syntax
-arabic +file_in_path -mouse_sgr +tag_binary
+autocmd +find_in_path -mouse_sysmouse +tag_old_static
-balloon_eval +float -mouse_urxvt -tag_any_white
-browse +folding +mouse_xterm -tcl
+builtin_terms -footer +multi_byte +terminfo
+byte_offset +fork() +multi_lang +termresponse
+cindent -gettext -mzscheme +textobjects
-clientserver -hangul_input +netbeans_intg +title
-clipboard +iconv +path_extra -toolbar
+cmdline_compl +insert_expand -perl +user_commands
+cmdline_hist +jumplist +persistent_undo +vertsplit
+cmdline_info -keymap +postscript +virtualedit
+comments -langmap +printer +visual
-conceal +libcall -profile +visualextra
+cryptv +linebreak +python/dyn +viminfo
+cscope +lispindent -python3 +vreplace
+cursorbind +listcmds +quickfix +wildignore
+cursorshape +localmap +reltime +wildmenu
+dialog_con -lua -rightleft +windows
+diff +menu +ruby/dyn +writebackup
+digraphs +mksession +scrollbind -X11
-dnd +modify_fname +signs -xfontset
-ebcdic +mouse +smartindent -xim
-emacs_tags -mouseshape -sniff -xsmp
+eval -mouse_dec +startuptime -xterm_clipboard
+ex_extra -mouse_gpm +statusline -xterm_save
+extra_search -mouse_jsbterm -sun_workshop -xpm
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: gcc -L/usr/local/lib -o vim -lm -lncurses -liconv
$ which vim
/usr/bin/vim
とても長いですが、重要なことが書かれています。
$ vim --version | grep clipboard
-clipboard +iconv +path_extra -toolbar
+eval -mouse_dec +startuptime -xterm_clipboard
grepで必要な部分だけ抜き出してみました。Mac標準のVimではclipboardに対応していないため、ブラウザでコピーしたスニペットなどをVimに貼り付ける、といったことができません。
$ vim --version | grep lua
+dialog_con -lua -rightleft +windows
これは私事なのですが、Luaに対応していないため、普段使っているVimのプラグインも使えません。
そのため、Luaを使えるようにインストールをしなければなりません。
なお、clipboardはHomebrewでインストールするVimだと標準で有効になっています。
では実際にインストールを行ってみましょう。
まずはインストールオプションを確認します。
$ brew info vim
vim: stable 8.0.0535 (bottled), HEAD
Vi "workalike" with many additional features
http://www.vim.org/
Conflicts with: ex-vi
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/vim.rb
==> Dependencies
Optional: lua ✘, luajit ✘, gettext ✘
==> Requirements
Required: ruby >= 1.8 ✔, perl >= 5.3 ✔
Recommended: python ✔
Optional: python3 ✘
==> Options
--with-client-server
Enable client/server mode
--with-custom-perl
Build with a custom Perl instead of the Homebrew version.
--with-custom-python
Build with a custom Python 2 instead of the Homebrew version.
--with-custom-ruby
Build with a custom Ruby instead of the Homebrew version.
--with-gettext
Build vim with National Language Support (translated messages, keymaps)
--with-lua
Build vim with lua support
--with-luajit
Build with luajit support
--with-override-system-vi
Override system vi
--with-python3
Build vim with python3 instead of python[2] support
--with-tcl
Build vim with tcl support
--without-perl
Build vim without perl support
--without-python
Build vim without python support
--without-ruby
Build vim without ruby support
--HEAD
Install HEAD version
いっぱい出てきました。例によってgrepでluaの部分だけ抜き出してみましょう。
$ brew info vim | grep lua
Optional: lua, luajit, gettext
--with-lua
Build vim with lua support
--with-luajit
Build with luajit support
実際luaとluajitの何が違うのかわかりませんが、jitは多分JITコンパイラ付きだったりするのかなあと思うものの、実際にLuaを書くことは今のところないので、余計なことはせず--with-lua
オプションだけつけます。
$ brew install vim --with-lua
インストールにはしばらく時間がかかるので、ゆっくり待ちましょう。
インストールが終了したら、先ほどのgitのようにバージョンを確認してみます。
$ vim --version | grep VIM
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Feb 4 2017 00:48:24)
system vimrc file: "$VIM/vimrc"
fall-back for $VIM: "/usr/share/vim"
$ which vim
/usr/local/bin/vim
またもやバージョンの情報がおかしいですね。ターミナルを再起動してもう一度確認してみましょう。
$ vim --version | grep VIM
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Apr 3 2017 22:51:38)
system vimrc file: "$VIM/vimrc"
defaults file: "$VIMRUNTIME/defaults.vim"
fall-back for $VIM: "/usr/local/share/vim"
$ which vim
/usr/local/bin/vim
バージョンが上がっています。ではclipboardとluaがどうなっているのか見てみましょう。
$ vim --version | grep clipboard
+clipboard +job +path_extra +user_commands
+eval +mouse_dec +statusline -xterm_clipboard
$ vim --version | grep lua
+dialog_con +lua +rightleft +writebackup
Linking: clang -L. -L/usr/local/lib -F/private/tmp/vim-20170403-5105-18lfi48/vim-8.0.0535/Frameworks -L/usr/local/lib -o vim -lm -lncurses -liconv -framework Cocoa -L/usr/local/lib -llua -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE -lperl -framework Python -lruby.2.0.0 -lobjc
clipboardもluaも有効になっています。
インストール作業は以上になります。今後は.vimrcをセットアップして快適なVimライフを満喫しましょう。
ちなみに、Vimがどの設定ファイルを参照するかはvim --version
の下の方に書いてあります。Vimに慣れてない人は、どんなファイルを参照しているのか確認しておいたほうがいいでしょう。
--with-gettext編
ここからは蛇足です。
gettextオプションを有効にすると、Vimが多言語対応して日本語での表示が可能になります。
英語がどうしてもダメならばこちらを使ってみましょう。
すでにVimをインストールしてしまった場合
アンインストールします。brew uninstall vim
で綺麗になります。
--with-gettextをそのままつけてもダメ
そのままbrew install --with-lua --with-gettext
とやってしまうと、次のようなメッセージが表示されます。
This formula is keg-only, which means it was not symlinked into /usr/local.
macOS provides the BSD gettext library and some software gets confused if both are in the library path.
If you need to have this software first in your PATH run:
echo 'export PATH="/usr/local/opt/gettext/bin:$PATH"' >> ~/.bash_profile
For compilers to find this software you may need to set:
LDFLAGS: -L/usr/local/opt/gettext/lib
CPPFLAGS: -I/usr/local/opt/gettext/include
おそらくMacにはBSDのgettextがあるので、Homebrewでインストールしたgettextと同時に存在するとシステムが混乱してしまうということでしょう。
呼び出す優先順位を決めるならパスを設定しろと書いています。
その下ではコンパイラがgettextを見つけるためにはこの値を設定しろと書いてあります。
ということで、.bash_profileに以下の値を設定しましょう。.bash_profileがなければ$HOMEに作りましょう。
# Homebrewでインストールしたgettext用にpathを追加する
export PATH="/usr/local/opt/gettext/bin:$PATH"
# Homebrewでコンパイルする際に環境変数を設定する
export LDFLAGS="-L/usr/local/opt/gettext/lib"
export CPPFLAGS="-I/usr/local/opt/gettext/include"
LDFLAGS
とCPPFLAGS
はVimをインストールした後に削除して、ターミナルを再起動しておいた方が良いと思います。特に他のソフトウェアをインストールしようと思っているのならばなおさらです。
では、 ターミナルを再起動した後に brew install vim --with-lua --with-luajit --with-gettext
を実行してインストールしましょう。オプションが増えているのは気にしないでください。使わない人は--with-luajitを入力する必要はありません。
インストールが終わったら、.bash_profileのLDFLAGSとCPPFLAGSの行をコメントアウト(あるいは削除)して、ターミナルを再起動(正確には再ログイン)します。
インストール前後に再ログインしている理由は、.bash_profileが読み込まれるタイミングにあります。早い話がログインのタイミングで読み込まれるからです。.bashrcに書いてsourceしても問題はありませんし、ファイルに書かなくても直接exportを実行しても大丈夫でしょう。
とりあえずインストールが完了して環境も問題ない状態になったので、バージョンと有効なオプションを確認してみます。
$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Apr 6 2017 01:29:19)
MacOS X (unix) 版
適用済パッチ: 1-543
Compiled by Homebrew
Huge 版 without GUI. 機能の一覧 有効(+)/無効(-)
+acl +file_in_path +mouse_sgr +tag_old_static
+arabic +find_in_path -mouse_sysmouse -tag_any_white
+autocmd +float +mouse_urxvt -tcl
-balloon_eval +folding +mouse_xterm +termguicolors
-browse -footer +multi_byte +terminfo
++builtin_terms +fork() +multi_lang +termresponse
+byte_offset +gettext -mzscheme +textobjects
+channel -hangul_input +netbeans_intg +timers
+cindent +iconv +num64 +title
-clientserver +insert_expand +packages -toolbar
+clipboard +job +path_extra +user_commands
+cmdline_compl +jumplist +perl +vertsplit
+cmdline_hist +keymap +persistent_undo +virtualedit
+cmdline_info +lambda +postscript +visual
+comments +langmap +printer +visualextra
+conceal +libcall +profile +viminfo
+cryptv +linebreak +python +vreplace
+cscope +lispindent -python3 +wildignore
+cursorbind +listcmds +quickfix +wildmenu
+cursorshape +localmap +reltime +windows
+dialog_con +lua +rightleft +writebackup
+diff +menu +ruby -X11
+digraphs +mksession +scrollbind -xfontset
-dnd +modify_fname +signs -xim
-ebcdic +mouse +smartindent -xpm
+emacs_tags -mouseshape +startuptime -xsmp
+eval +mouse_dec +statusline -xterm_clipboard
+ex_extra -mouse_gpm -sun_workshop -xterm_save
+extra_search -mouse_jsbterm +syntax
+farsi +mouse_netterm +tag_binary
システム vimrc: "$VIM/vimrc"
ユーザー vimrc: "$HOME/.vimrc"
第2ユーザー vimrc: "~/.vim/vimrc"
ユーザー exrc: "$HOME/.exrc"
デフォルトファイル: "$VIMRUNTIME/defaults.vim"
省略時の $VIM: "/usr/local/share/vim"
コンパイル: clang -c -I. -Iproto -DHAVE_CONFIG_H -DMACOS_X_UNIX -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
リンク: clang -L. -L/usr/local/lib -F/private/tmp/vim-20170406-10867-t6ysr7/vim-8.0.0543/Frameworks -L/usr/local/lib -o vim -lm -lncurses -liconv -lintl -framework Cocoa -pagezero_size 10000 -image_base 100000000 -L/usr/local/lib -lluajit-5.1 -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE -lperl -framework Python -lruby.2.0.0 -lobjc
日本語で表記されていますね。
ではluaとgettextオプションを見てみましょう。
$ vim --version | grep lua
+dialog_con +lua +rightleft +writebackup
リンク: clang -L. -L/usr/local/lib -F/private/tmp/vim-20170406-10867-t6ysr7/vim-8.0.0543/Frameworks -L/usr/local/lib -o vim -lm -lncurses -liconv -lintl -framework Cocoa -pagezero_size 10000 -image_base 100000000 -L/usr/local/lib -lluajit-5.1 -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE -lperl -framework Python -lruby.2.0.0 -lobjc
$ vim --version | grep gettext
+byte_offset +gettext -mzscheme +textobjects
いい感じですね。Vimを起動すると日本語で案内してくれます。
ちなみに日本語のヘルプはvim-jp/vimdoc-ja: A project which translate Vim documents into Japanese.にあるので、cloneするなりプラグインマネージャなりでインストールしておくといざという時便利です。
日本語でヘルプを読んで、初めてVimのヘルプって凄いんだと認識しました。webで調べなくてもいいんじゃないかなと思います。とても今更な話ですね。
こんなことにならないようにヘルプを活用できるようにしておきましょう。