みなさんテキストエディタは何を使用していますか?
私は過去に atom => sublime text 3 => vscode と浮気をしまくってきたのですが、どうにかこうにかvimに落ち着きそうです。
そこで今回は皆様にvimの素晴らしさをお伝えしたいと思っております。
macでbrewが入っていることを前提にお話します。
CentOSとかDebianならbrewをyumとかapt-getとかに脳内変換をお願いいたします。
まずはneovimを入れましょう。
$ brew install neovimneovimはプラグイン によっては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に傾倒ぎみ。