Vim8のファイラー周りを充実させる

前回、プラグイン管理をするためのプラグインを導入しました。

これでだいぶプラグイン管理がはかどるようになってきました。

次は、開発する際に欠かせないファイラー周りを充実させていこうと思います。

今回入れるファイラーは Fern

ファイラーを調べてみたところ種類がたくさんありましたが、その中からFern を使うことにしました。

Fern を選んだ理由は、次の 3 点です。

  • 外部依存なし
  • 「分割ウィンドウ」と「プロジェクトドロワー」の 2 つのスタイル
  • プラグインで拡張可能

1 点目は、依存関係がなくそのプラグインを入れるだけですぐに使えるというのは個人的には大きかったです。
依存関係が多いとセットアップ時の手順が多くなり大変なので依存関係がないというのは大きなメリットでした。

2 点目は、ファイラーを使うときのスタイルが 2 種類あるのも良かったです。
Fern の使い方を見るとどんなものかわかると思います。
個人的には「分割ウィンドウ」スタイルを使っていこうと思っています。

3 点目は、プラグインで機能拡張ができることです。
あとでプラグインも追加していきますが、必要なものをプラグインで入れられるというのはとても便利です。
Fern のプラグイン一覧

Fern のインストールと設定

vim-plug を使ってインストールするため、vimrcに下記を追加します。

:PlugInstallでプラグインをインストールしていきます。

call plug#begin('~/.vim/plugged')
Plug 'lambdalisue/fern.vim'
call plug#end()

これで:Fern .でファイラーが起動するようになります。

さらにvimrcに設定を追加します。
隠しファイルの設定方法はこちらの記事を参考にしました。
これでSpace+e押下すると、Fern が起動するようになりました!

" <Leader>にSpaceキー割り当て
let mapleader = "\<Space>"
" 隠しファイルを表示する
let g:fern#default_hidden=1
" Fern .をSpace+eキーに置き換え
nnoremap <silent> <Leader>e :<C-u>Fern .<CR>

Fern をSpace+eで開いているところ。

https://asciinema.org/a/6HJDlmoox6qOCQKXDb0x84ORq

Fern のプラグインを追加

ざっとインストール方法と vimrc の設定、実際にどのようなことができるのかを紹介。

fern-preview.vim

yuki-yano/fern-preview.vim: Add a file preview window to fern.vim.

call plug#begin('~/.vim/plugged')
" Filer
Plug 'lambdalisue/fern.vim'
  Plug 'yuki-yano/fern-preview.vim' " 追加
call plug#end()

" 公式リポジトリを参考にキーマップを追加
function! s:fern_settings() abort
  nmap <silent> <buffer> p     <Plug>(fern-action-preview:toggle)
  nmap <silent> <buffer> <C-p> <Plug>(fern-action-preview:auto:toggle)
  nmap <silent> <buffer> <C-d> <Plug>(fern-action-preview:scroll:down:half)
  nmap <silent> <buffer> <C-u> <Plug>(fern-action-preview:scroll:up:half)
endfunction

augroup fern-settings
  autocmd!
  autocmd FileType fern call s:fern_settings()
augroup END

ファイラーを開いてて、ファイルにカーソルを合わせてpとするとプレビューがフローティングウィンドウで表示されるようになります。
神プラグインです。
Ctrl+pとすると、ファイルにカーソルが合うと自動でプレビューしてくれます。

https://asciinema.org/a/jpEntLeTDxBk4jeidIIcU4wbf

fern-git-status.vim

lambdalisue/fern-git-status.vim: 🌿 Add Git status badge integration on file:// scheme on fern.vim

call plug#begin('~/.vim/plugged')
" Filer
Plug 'lambdalisue/fern.vim'
  Plug 'yuki-yano/fern-preview.vim'
  Plug 'lambdalisue/fern-git-status.vim' " 追加
call plug#end()

ファイル毎に git ステータスを表示してくれるようになるので便利です。

https://asciinema.org/a/k8SlnBvatD0HO26HuyTJugxsk

fern-hijack.vim

lambdalisue/fern-hijack.vim: Make fern.vim as a default file explorer instead of Netrw

call plug#begin('~/.vim/plugged')
" Filer
Plug 'lambdalisue/fern.vim'
  Plug 'yuki-yano/fern-preview.vim'
  Plug 'lambdalisue/fern-git-status.vim'
  Plug 'lambdalisue/fern-hijack.vim' " 追加
call plug#end()

viとしてSpace+eでファイラーを起動していましたが、このプラグインを入れるとvi .でファイラーを起動することができるようになります。

https://asciinema.org/a/V43iyvXVXHzGZ5CcjF5BIwDHo

Fern でよく使うコマンドまとめ

fern.vim

基本的なファイル操作は網羅できているはず。
-を使う事で複数選択してリネームだったり、削除などができるのでとても便利。
コマンドが分からなくなったら help を見る。

コマンド用途
Shift+? or ahelphelp 表示
Shift+c(ファイル or ディレクトリ)コピー
Shift+m(ファイル or ディレクトリ)カット
Shift+p(ファイル or ディレクトリ)ペースト
-(ファイル or ディレクトリ)選択
Shift+nファイル新規作成
Shift+kディレクトリ新規作成
Shift+r(ファイル or ディレクトリ)リネーム
aremove(ファイル or ディレクトリ)削除

fern-preview.vim

コマンド用途
pファイルプレビュー
Ctrl+p自動でファイルプレビュー
Ctrl+dフローティングウィンドウ内のファイルをスクロールダウン
Ctrl+uフローティングウィンドウ内のファイルをスクロールアップ

fern-hijack.vim

コマンド用途
vi .ターミナルから Fern を起動
Hugo で構築されています。
テーマ StackJimmy によって設計されています。