プログラミング歴1年ちょっと.
ずっと裸のvimでやってきました.
補完もctrl+p
,
毎回,ctrl+z
で, shellに戻って, コンパイラして, エラーチェックする.
化石のようなプログラマでした.
vimの能力を全然使いこなせていない感が強かったので, ちょっと重い腰をあげて, pluginを入れようと思い立ちました.
まずはファイラーからだなと思い, ぐぐったらnerdTree
がいいらしいということを聞いたので,
早速入れていこうと思います.
pluginを導入する前に, pluginを管理するツールを入れるのが先だと思い, それも調べると, patheogenがいいと聞いたので, まずそれを入れたいと思います.
その中で, 設定するためのvimコマンドも紹介しようと思います.
毎回git hubや公式サイトがあれば, 公式サイトの情報を見て, インストールしようとしています.
今回も, nerdTreeのgitHubから, セットアップします.
想定読者は, 超初心者だけど, かっこいいからLinux使ってるとか, bash使ってるとかそういう人向けです(つまり, 自分です).
概要
- pathogenの導入
- nerdTreeの導入
- nerdTreeを使いやすくするvimの設定のコマンドの説明(次の記事で)
環境
Windows Subsystem for Linuxで,
OS: VERSION="18.04 LTS (Bionic Beaver)"
VIM: Vi IMproved 8.0 (2016 Sep 12, compiled Apr 10 2018 21:31:58)
WSLのせいで, 共有のvim設定ファイルを読んでいる気がしていろいろはまりそう.
pathogenの導入
pathogenは, pluginの管理ツールです.
今までは, すべてのpluginを同じディレクトリに管理しなければいけなくてぐちゃぐたになってたらしいです(初めてpluginを導入するから, 知らないけど).
pathogenは, pluginごとに, ディレクトリを分けて管理できるので, 使いやすいらしいです.
ということで, pathogenを使っていきましょう.
Install
gitHubのvim-pathogenに, アクセスして, READMEを読んで導入していきましょう.
Install to ~/.vim/autoload/pathogen.vim. Or copy and paste the following into your terminal/shell:
と書いてあります.
これをするには, 以下のコマンドをたたきましょう.
~/
で指定しているので, カレントディレクトリはどこでも大丈夫です.
mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
コピペ病にかからないように, 一応コマンドの意味も読んでおきましょう.
mkdir
コマンドで, ディレクトリを作ります.
-p
オプションを使うことで, ディレクトリを階層ごとに作ることができます.
.vim
ディレクトリを作って, さらにその子ディレクトリとして, autoload
を作ります.
bundle
も同じです.
&&
は, &&
の前のコマンドが正しく実行された場合, そのあとのコマンドを実行します.
もし前のコマンドで実行が失敗した場合, 次のコマンドが実行されないので, 前のコマンドに依存するような場合に有効です.
今回は, curl
コマンドで, 作ったディレクトリの中に出力した情報を保存しようとしているので, ディレクトリができていないとエラーが起きます.
なので, &&
でつないでいます.
\
は, 改行して次の行に書かれたコマンドも一行として認識されます.
mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
と同じ意味になります.
次にcurl
です.
これだけで一つの記事が書けそうなくらい深いコマンドですが, 今回は, http
で, URLから, 情報をとってきているくらいの認識で大丈夫です.
-s
オプションは, 表示を抑える.-S
オプションは, エラーだけ出力する-o
オプションは, とってきた情報を指定したファイル名で保存する-L
オプションは, 指定したURLのリソースが違う場所に移動したときに, 別のところにも取りに行ってくれます.
ということで, https://tpo.pe/pathogen.vimを見に行けばわかると思いますが, vim scriptが表示されます.
これをコピペして, ~/.vim/autoload/pathogen.vim
に保存しても同じことになります.
これでインストールは終わりです.
次に, Runtime Path Manipulationについて.
Runtime Path Manipulation
runtime pathとは, vimがどのパスから, 設定ファイルやプラグインファイルを読み込んでいるかを設定しているオプションです.
:set runtimepath
を, 叩くと, パスがずらっと表示されます.
自分の環境の場合は,
runtimepath=~/.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim80,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after
となっています.
pathogen.vimは, pluginを入れたときに, ~/.vim/bundle
配下においておけば, vimが読み込んでくれます.
直接, runtimepathオプションを操作しなくても, pathogen.vimがいい感じに, パスを通して, pluginを入れてくれるということです.
pathogen.vimを実際に機能させるには, ~/.vimrc
に以下の一文を入れましょう.
execute pathogen#infect()
また, .vimrc
が存在しないときには, 新しく.vimrc
を作って,
execute pathogen#infect()
syntax on
filetype plugin indent on
の3文を加えましょう.
下の二つは何を意味するかというと,
syntax on
これは, 構文でいい感じに色づけしてくれます.
filetype plugin indent on
これは,
filetype on
filetype indent
filetype plugin
をまとめたもので,
ファイルを読んだときに, filetypeを識別してくれます.
What is the difference between filetype plugin indent on
and filetype indent on
?
この2行は.vimrc
も使ったことない初学者に対する優しさだと思います.
なくても動きます.
とりあえず, execute pathogen#infect()
を書いておけば大丈夫です.
Plugin sensible.vim
試しに, sensible.vim
を入れてみましょう.
まず, ~/.vim/bundle
配下に移動しましょう.
そして, sensible.vimのgit repositoryをcloneしましょう.
$ cd ~/.vim/bundle && \
git clone https://github.com/tpope/vim-sensible.git
lsで確認すると, 確かに, 入っています.
$ ls
drwxrwxrwx 0 morishita-g morishita-g 4096 Jul 6 18:52 vim-sensible
実際に, sensible.vimが読み込まれているか, 確認するには, vim
を開いて,
NORMAL MODEになって, :scriptnames
をたたくと, 読み込まれたshell scriptが一覧で表示されます.
10: ~/.vim/bundle/vim-sensible/plugin/sensible.vim
実際に, 自分の環境では10番目に読み込まれていました(順番は関係ないですが).
また, 管理するディレクトリを, ~/.vim/bundle
から変えたい場合は,
execute pathogen#infect()
の引数を変えることで対応できます.
相対パスで指定する場合
execute pathogen#infect('stuff/{}')
{}
は, ワイルドカードとして働きます.
なので, ~/.vim/stuff/
配下にすべてを読みに行きます.
実験してみましょう.
まず, ~/.vimrc
を編集して, さきほどexecute pathogen#infect()
と書いた部分を編集して,execute pathogen#infect('stuff/{}')
にしましょう.
そして, vim
を再起動してみると,,,
~/.vim/bundle
配下にあった, sensible.vim
が読み込まれなくなっていると思います.
~/.vim/bundle
をrenameして, stuff
にしてから, vimを再起動してみましょう.
$ pwd
~/.vim
$ mv bundle stuff
$ vim
vimのNORMAL MODEで, :scriptnames
をたたくと,,,
10: ~/.vim/stuff/vim-sensible/plugin/sensible.vim
と, stuff配下で読み込まれていることがわかります.
絶対パスで指定する場合
execute pathogen#infect('bundle/{}', '~/src/vim/bundle/{}')
第2引数に, 絶対パスを入れれば, そこを読みに行きます.
実際に自分で読み込んでくれるか試してみるといいでしょう.
helptags
pluginのdocumentationを作成するのに, helptags
で作れます.
インストールしたpluginのディレクトリに, doc
ができると思います.
:helptags [docまでのパス]
をたたくと, ヘルプが作成されて,
:help [plugin名]
とすると, ヘルプが見えるようになります.
実際は, pluginのgithubのページにhelpの作り方は書いてあるのでそれに従うといいと思います.
それでは, pathogenのこともある程度わかったところで, nerdTreeを導入しましょう.
nerdTreeの導入
nerdTreeのgitHubから, セットアップします.
pathogenを入れているので,
git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle/nerdtree
をたたきます(さっきのstuffから名前を元に戻しておいてください).
これだけで終わりです.
あとは, githubにいろいろ設定の仕方が書いてあるので, それに従って自分のやりたいようにカスタマイズできます.
次回は, nerdTreeのカスタマイズを開設しようと思います.