みなさんテキストエディタは何を使用していますか?
私は過去に atom => sublime text 3 => vscode と浮気をしまくってきたのですが、どうにかこうにかvimに落ち着きそうです。
そこで今回は皆様にvimの素晴らしさをお伝えしたいと思っております。
macでbrewが入っていることを前提にお話します。
CentOSとかDebianならbrew
をyum
とかapt-get
とかに脳内変換をお願いいたします。
まずはneovimを入れましょう。
$ brew install neovim
neovimはプラグイン によってはpythonやNodeと連携して素敵な処理を行ってくれます。
なので、NodeとPythonを入れておきましょう。
余談ですがbrew install python
で3系が入るようになったんですね。
# nodeをインストール
$ brew install node
# python3をインストール
$ brew install python
あとはnodeおよびpythonのneovimパッケージをインストールしておきます。
pythonの方はpynvim
なのでお気をつけを。
# nodeのneovimパッケージ
$ npm install -g neovim
# python3のneovimパッケージ
$ pip3 install pynvim
下ごしらえはこの程度ですね。
neovimはXDG Base Directory Specificationを使用しています。
超ウルトラ大雑把に言えば設定ファイルを ~/.config/アプリ名/
の中に入れましょうみたいな感じです。
この時の~/.config
のことをXDG_BASE_HOME
と呼びます。
環境変数として保存するためにbash_profileやらzshenvやらにexport XDG_BASE_HOME='~/.config'
を記載しておきましょう。
本命のneovimの設定ファイルは$XDG_BASE_HOME/nvim/init.vim
になります。
まずはこいつを作成します。
syntax on
set t_Co=256
set autoindent
set smartindent
set expandtab
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,utf-8,ucs-2,cp932,sjis
set tabstop=2
set shiftwidth=2
set cursorline
set number
set showmode
set showmatch
set title
set backspace=indent,eol,start
set inccommand=split
set imdisable
set hidden
set nobackup
set nowritebackup
set conceallevel=0
" htmlのマッチするタグに%でジャンプ
source $VIMRUNTIME/macros/matchit.vim
hi Comment ctermfg=gray
if has('mouse')
set mouse=a
endif
"dein Scripts-----------------------------
if &compatible
set nocompatible " Be iMproved
endif
set runtimepath+=~/.config/nvim/dein/repos/github.com/Shougo/dein.vim
if dein#load_state('~/.config/nvim/dein')
call dein#begin('~/.config/nvim/dein')
call dein#load_toml('~/.config/nvim/dein.toml', {'lazy': 0})
call dein#end()
call dein#save_state()
endif
filetype plugin indent on
syntax enable
" If you want to install not installed plugins on startup.
if dein#check_install()
call dein#install()
endif
"End dein Scripts-------------------------
vimの面白さはこの設定ファイルは地道に育てていくことにあります。
自分好みのキーバインドとかを設定してあげてくださいね。
上の設定はスーパーミニマムです。私もこの状態からスタートしました。
今ではIDEに引けを取らないほどに成長しています。
Shougoさん(暗黒美夢王)というvimのエキスパートの日本人が作っているプラグインマネージャーです。
この人はvimをとことんまで理解している凄いお方なのです。
中二病を患っているのもお茶目で素敵です。
https://github.com/Shougo/dein.vim
こちらにインストール方法が書かれています。
プラグインは~/.cache/dein
にインストールされる設定になっています。
私は色々とっ散らかるのが嫌いなので、全て~/.config/nvim/dein
の中に入れたいと思うので
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
# For example, we just use `~/.cache/dein` as installation directory
sh ./installer.sh ~/.cache/dein
の~/.cache/dein
を~/.config/nvim/dein
に変更します。
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh ~/.config/nvim/dein
先ほどのinit.vim
も~/.config/nvim/dein
に合わせた設定になっています。
公式が~/.cache/dein
って言ってるんだからそこにインストールしたいという方はinit.vim
の方も修正してあげてください。
入れたいプラグインは~/.config/nvim/dein.toml
に記述します。
[[plugins]]
repo = 'Shougo/dein.vim'
ミニマムだとこれだけです。
このファイルも育てていくファイルです。ありったけの愛を持って可愛がってあげましょう。
通常neovimはnvim
コマンドで起動します。
でもvim
って打ってもneovimが起動して欲しいもんですよね。
そこで~/.zshrc
なり~/.bashrc
に
alias vim='nvim'
を入れておきましょう。
これでvim
でnvim
が起動します。
あとinit.vim
やdein.toml
は最初のうちは頻繁に編集しますので、
alias vimcf='vim ~/.config/nvim'
としておくと、vimcf
でnvimディレクトリ配下のファイルの編集が行えます。
またも余談ですが最近bash
からzsh
に変更してみました。変更してからシェルスクリプトを作成していないのでまだ恩恵がわかりませんが、近々zsh
の機能にも触れていきたいと思います。
これは入れるべきだというプラグイン をご紹介します。
私自身は
をよく使うので、それに合わせたプラグイン となります。それでは行ってみよう。
,,
で展開するようにすると便利ですよ。gcc
でカーソル行のコメントのトグルができます。gc
で一気にコメントのトグルもできます。cs"'
でダブルクォーテーション囲いをシングルクォーテーション囲いに変更できたりと囲い系の操作が色々できます。eslint
や各種eslintのプラグイン のインストールが必要です。prettier
やprettierのプラグイン のインストールが必要です。go run
とかまでできちゃうよ。とまぁとりあえずこんな感じです!
ほかにも色々入っているんですが全部紹介していたらキリがないので。。。
せっかく育てた設定ファイルたちをリモート環境とかでも使用したいですよね?
そのために~/.config/nvim
をgit
で管理してあげましょう。
その際には.gitignore
で~/.config/nvim/dein
を除外しておきましょう。init.vim
とdein.toml
さえあればdein.vim
が自動で持ってきてくれます。
私はneovim
のインストールからnode
やpython
のneovimパッケージのインストール。環境変数の設定。~/.config/nvim
のgit clone
までを自動で行ってくれるshellスクリプトを書いてgitリポジトリに上げています。
curlをshにパイプするだけで快適neovim環境がお手軽に手に入りますので、おすすめですよ。
とは言え私もまだまだ駆け出しvimmerです。
みなさんも楽しい楽しいvimの世界に足を踏み入れてみては?
コータ=ザッカーバーグ
@kota_zuckerberg
バイクとプログラミングをこよなく愛する編集部の後方支援担当。 愛車はSUZUKI GSR250。 Illustratorの自動化からWEB制作、インフラの整備などをこなしていくうちに いつの間にかフルスタックエンジニアになっちゃった。 主な使用言語はphp, javascript, go, applescript。最近はjsに傾倒ぎみ。