先月、ソフトウェアデザインを購入しました。
vim絶対主義、いいフレーズですね。
ただ私はトーシロなので、vimのカスタマイズ、ほぼしてません。
折角なので、購入したこちらを参考に、vimの設定変更やプラグイン導入にチャレンジしようかと思いました。
目次
(私の)初期vimrc
過去に一度書いた事がありますが、私の.vimrcは以下のようになっています。
尚、環境はRaspbianでvimのバージョンは version 8.0.707です。
set ruler set incsearch set hlsearch set showmatch set wrapscan set ignorecase set smartcase set hidden set history=500 set autoindent set expandtab set tabstop=4 set shiftwidth=4 syntax on
へぇ、こんな風に設定していたんだという気持ちになりました。意味わからんまま使うのもあれなので、今何を設定しているのか調べてみます。
set ruler
現在のカーソル位置を「列,行」で表示してくれます。これは必要。
set incsearch
検索文字を入力するとその時点で検索が開始される。何を言っているかわからないと思うが、使えばわかる。
set hlsearch
検索にマッチする文字列がハイライトされる。
set hlsearch
検索にマッチする文字列がハイライトされる。
set showmatch
対になるカッコを強調表示してくれる。
set wrapscan
最後まで検索したら一番上に戻る。
set ignorecase
検索の時に、大文字小文字を区別しない。historyで検索をかければ「history」も「HISTORY」も見つけられる。
set smartcase
検索文字が大文字と小文字混在の時は、大文字小文字を区別して検索する。
set hidden
保存されていないファイルがあっても別ファイルを開ける。buffer使うときは必須ですね。
set history=500
コマンドラインモードの履歴を指定の数保存する。この場合500まで保存。
set autoindent
改行する時に前の行のインデントを引き継ぐ。
set expandtab
タブ入力をスペースにする。私はスペース派。
set tabstop=4
タブ文字の幅。
set shiftwidth=4
自動インデントの幅。
syntax on
文字に色付けする。なんかRaspbianのvimだとこれ書いとかないと色変わんなかったんで書いてます。
いつ設定したか忘れましたが、これだけでも無いと不便です。
vimのプラグイン管理(dein.vim)インストール
早速プラグインを入れようと思ったのですが、vimのプラグインを管理するものがあるそうな。最近の主流はdein.vimとの事で、早速導入してみます。
$mkdir -p ~/.cache/dein $ cd ~/.cache/dein $ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh $ sh ./installer.sh ~/.cache/dein Done. Complete setup dein!
スクリプト走らせると、その環境の設定も表示してくれます。私の場合は以下のような設定内容が表示されました。
if &compatible set nocompatible " Be iMproved endif " Required: set runtimepath+=/home/engineer1/.cache/dein/repos/github.com/Shougo/dein.vim " Required: if dein#load_state('/home/engineer1/.cache/dein') call dein#begin('/home/engineer1/.cache/dein') " Let dein manage dein " Required: call dein#add('/home/engineer1/.cache/dein/repos/github.com/Shougo/dein.vim') " Add or remove your plugins here: call dein#add('Shougo/neosnippet.vim') call dein#add('Shougo/neosnippet-snippets') " You can specify revision/branch/tag. call dein#add('Shougo/deol.nvim', { 'rev': '01203d4c9' }) " Required: call dein#end() call dein#save_state() endif " Required: filetype plugin indent on syntax enable " If you want to install not installed plugins on startup. "if dein#check_install() " call dein#install() "endif
こちらを.vimrcに記述せよとのこと。早速記入します。
$ ~/.vimrc if &compatible set nocompatible " Be iMproved endif " Required: set runtimepath+=/home/engineer1/.cache/dein/repos/github.com/Shougo/dein.vim " Required: if dein#load_state('/home/engineer1/.cache/dein') call dein#begin('/home/engineer1/.cache/dein') " Let dein manage dein " Required: call dein#add('/home/engineer1/.cache/dein/repos/github.com/Shougo/dein.vim') " Add or remove your plugins here: call dein#add('Shougo/neosnippet.vim') call dein#add('Shougo/neosnippet-snippets') " You can specify revision/branch/tag. call dein#add('Shougo/deol.nvim', { 'rev': '01203d4c9' }) " Required: call dein#end() call dein#save_state() endif " Required: filetype plugin indent on syntax enable " If you want to install not installed plugins on startup. "if dein#check_install() " call dein#install() "endif set ruler set incsearch set hlsearch set showmatch set wrapscan set ignorecase set smartcase set hidden set history=500 set autoindent set expandtab set tabstop=4 set shiftwidth=4 syntax on
.vimrcがこんな感じになりました。
最後にvimを起動して、インストールします。
$ vim :call dein#install()
しかし、この後にvimを起動しようとするとターミナルが文句を言い始めます。
$ vim ~/.vimrc deol.nvim requires Neovim or terminal feature enabled Vim. Press ENTER or type command to continue
どうやらNeovimか新しいvimを使えとのこと。deol.nvim自体がなんなのかわからんので、こいつをvimrcからコメントアウトしたら出なくなりました。
vimプラグイン(NERDTree)のインストール
インストールは出来たみたいなので、早速SDで紹介されていたNERDTreeを入れてみます。
欲しいプラグインを.vimrcの中に追記したあげれば良いようです。
$ vim .vimrc call dein#add('scrooloose/nerdtree') " Required: call dein#end() call dein#save_state() endif
call dein#add('scrooloose/nerdtree')を追記しました。再び:call dein#install()で追加したプラグインがインストールされます。
vimのコマンドで:NERDTreeと入力するとNERDTreeが使えるようになります。いちいち入力するのが面倒なので、以下をvimrcに追加することで、Ctrl+eでNERDTreeが開けるようになります。
$ vim .vimrc nnoremap <silent><C-e> :NERDTree<CR>
便利なものを使って生産性上げたいですが、まずは使い方を覚えるところからスタートですね。