Powerlineでカッコよく - エディタ編(Neovim)

【連載】

にわか管理者のためのLinux運用入門

【第212回】Powerlineでカッコよく - エディタ編(Neovim)

[2020/01/14 08:00]後藤大地 ブックマーク ブックマーク

Linuxディストリビューションの多くが「Vim」をデフォルトエディタとしてインストールしているため、Vimを使っているユーザーは多いと思う。さらにVim好きのなかには、実装系としてVimではなく「Neovim」を使っている方もいるだろう。

Ubuntu 18.04 LTSで動作するNeovim

NoevimはVimよりもコードベースがスッキリしている。しかし、それでいてVimとの互換性は高く、Vim向けに開発されているプラグインはそのままNeovimでも使えることが多い。そのため、ユーザーとしてはたまに特定の機能の有無が気になることはあっても、普段エディタとしての違いはそれほど感じないはずだ。

Ubuntu 18.04 LTSでNeovimをインストールする方法

Neovimはパッケージ名が「neovim」になっていることが多く、コマンド名は「nvim」になっていることが多いように思う。前回、VimでPowerline風ステータスラインを実現する方法を紹介したが、今回はNeovimでPowerline風ステータスラインを実現する方法を取り上げておこうと思う。なお、Neovimはデフォルトではインストールされていないことが多い。以下のコマンドでパッケージ管理システム経由でインストールしていただきたい。

sudo apt install neovim

設定ファイル~/.config/nvim/init.vim

Neovimの設定ファイルは~/.config/nvim/init.vimだ。~/.config/というディレクトリは、ユーザーの設定ファイルを保持する目的のもので、「XDG Base Directory Specification」という仕様に従ったものである。従来、設定ファイルはホームディレクトリ直下に個別にデプロイされていたが、最近では「~/.config/ソフトウエア名/」のディレクトリ以下に配置するものが増えている。

Neovimの設定ファイルには、Vimの設定ファイルをほぼそのまま使用できる。ここでは前回取り上げたVimの設定ファイルとほぼ同じものを次に掲載しておく。

" users generic init.vim file for nvim(1)

" ----------------------------------------------------------------------
" Dein plug-ins management
" ----------------------------------------------------------------------
if &compatible
    set nocompatible
endif

set runtimepath+=~/.cache/dein/repos/github.com/Shougo/dein.vim
if dein#load_state('~/.cache/dein/')
    call dein#begin('~/.cache/dein/')
    call dein#add('Shougo/dein.vim')
    call dein#add('Shougo/unite.vim')
    call dein#add('junegunn/seoul256.vim')
    call dein#add('vim-airline/vim-airline')
    call dein#add('vim-airline/vim-airline-themes')
    call dein#end()
    call dein#save_state()
endif

filetype plugin indent on

if dein#check_install()
    call dein#install()
endif

" unite
nnoremap <silent> <C-o> :<C-u>Unite file buffer<CR>
autocmd FileType unite nmap <silent><buffer> <ESC><ESC> q

" seoul256
let g:seoul256_background = 233
colo seoul256

" vim-airline
let g:airline_powerline_fonts = 1
let g:airline_theme = 'minimalist'
let g:airline_theme = 'tomorrow'
let g:airline_theme = 'molokai'

" ----------------------------------------------------------------------
" How to install Dein:
"   mkdir -p ~/.cache/dein
"   cd ~/.cache/dein/
"   curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
"   sh ./installer.sh .
"   rm ./installer.sh
" ----------------------------------------------------------------------

" disable mouse feature
set mouse=

set pastetoggle=<F2>

" allow some keys to move the cursor left/right to move to 
" the previous/next line when the cursor is on the first/last
" character in the line.
"  b - [Backspace]  normal visual 
"  s - [Space]      normal visual
"  < - [Left]       normal visual
"  > - [Right]      normal visual
"  [ - [Left]       insert replace
"  ] - [Right]      insert replace
"  ~ - ~            normal
set whichwrap=b,s,[,],<,>,~,h,l

set nohlsearch " non-highlight for search keyword<Paste>
set cursorline " use cursorline indicator

" line numbers on
set number

" incremental search and not case-sensitive on
set ignorecase

" use extended menu complementation feature
set wildmenu wildmode=list:full

" displayed line movement gj/gk as default instead of j/k
nnoremap k gk
nnoremap gk k
nnoremap j gj
nnoremap gj j

" tab jump
nmap <silent> <Tab> 15<Right>
vmap <silent> <Tab> <C-o>15<Right>
nmap <silent> <S-Tab> 15<Left>
vmap <silent> <S-Tab> <C-o>15<Left>

" for useful argdo mutli-files replaces
set hidden

" syntax highlight on
syntax enable

" laod some customized files: ~/.config/nvim/*.vim
let customvims = globpath(expand('~/.config/nvim'), "*.vim")
while strlen(customvims) > 0
    let i = stridx(customvims, "\n")
    if i < 0
        let f = customvims
        let customvims = ""
    else
        let f = strpart(customvims, 0, i)
        let customvims = strpart(customvims, i+1, 9999)
    endif
    if filereadable(f) &&
       \ f !~ '\s*/init.vim' && 
       \ f !~ '\s*/state_nvim.vim'
        exe 'source ' . f
    endif
    unlet f
    unlet i
endwhile
unlet customvims

" load user .nvimrc configuration file
if filereadable(expand('~/.nvimrc'))
    source ~/.nvimrc
endif

この設定ファイルにはプラグイン管理機能のセットアップ、Powerline風ステータスラインを実現するためのプラグインの設定と、そのほかいくつかのプラグイン設定が含まれている。

プラグイン管理「Dein」

Vimのときと同じように、Neovimでもプラグインの管理にはサードパーティ製のソフトウエアを使用する。もちろん手動でもできるし、自分の慣れたプラグイン機能を使ってもらってよいのだが、ここではVimのときと同じように「Dein」を使って管理する方法を説明しておこう。インストールコマンドは次の通りだ。

mkdir -p ~/.cache/dein
cd ~/.cache/dein/
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
sh ./installer.sh .
rm ./installer.sh

この指定では、前回のVimと同じディレクトリにDeinをインストールしている。Dein経由でインストールされるほかのプラグインも同じディレクトリにインストールされることになる。プラグインは、VimとNeovimで共有しても問題ない。別のディレクトリで分けて管理したい場合には、Deinのインストール先と、「init.vim」で指定しているパスを別のディレクトリに変更すればよい。

最初の起動でプラグインを自動インストール

Neovimで使用するほかのプラグインは、設定ファイルを配置してから起動する最初の段階でまとめてインストールが実行される。次の画面は、設定ファイルをデプロイしてDeinをインストールした後、最初のNeovim起動した際の様子だ。

Neovimの初回起動時にプラグインをインストール中

しばらくすると、次のようにインストールの終了が告げられるので、「Enter」キーを押す。

プラグインのインストール完了

きちんと設定が機能していれば、次のようにPowerline風のステータスラインが表示される。同じプラグインを使っているので、表示はVimのときとほとんど同じになる。

Powerline風ステータスラインを表示するNeovim

Powerline風ステータスラインを表示するプラグインとして「vim-airline」を使っている。このプラグインは、モードに合わせてステータスラインの表示が変わる仕組みになっているので、次のように挿入モードに入るとステータスラインの表示が変化する。

モードごとにステータスラインの表示が変化する

ターミナルモードでも表示される

Vimのときと同様、NeovimでPowerline風ステータスライン表示を実現したからといって、編集効率や開発効率が上がるわけではないが、何となくカッコよくはなる。そもそもPowerlineの目的が”表示をクールにする”という点にあるので、これで少しでも作業のモチベーションが上がるのであればよいのではないだろうか。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
対話システムをつくろう! Python超入門
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
PowerShell Core入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る