Startify – スタート画面を追加するVimプラグイン

vim-startify

通常 Vim や neovim の起動直後は、直接ファイルを開かない限り Vim のロゴとヘルプ、寄付を募るメッセージを表示してから、無題のファイルを開くことになります。

しかし、Vim / neovim を開いて最初に作業する場合、0から何かを書くよりも、前回開いていたファイルやセッションを開くことの方が圧倒的に多いはずです。たぶん。

そうすると、コマンドモードで履歴を辿るか、:e コマンドでファイルを探すことになります。(Netrw/NERDtree/VimFiler/Defxなどのファイラを利用したり、MRUなどを利用するかもしれませんが)

いずれにせよ、作業開始にひと手間取られる問題が発生します。

この記事では、そんな手間を減らしてくれる Vim / neovim にスタート画面を追加するプラグイン「Startify」をご紹介します。

vim-startify

このプラグインを使えば、良い感じにVimでの作業を開始できるようになります。

https://github.com/mhinz/vim-startify

単純にプラグインを導入するだけでもこんな感じになります。

Startify デフォルト画面

ダッシュボードというよりは、あくまで作業の開始をサポートしてくれる仕組みと理解した方が良いでしょう。

楽にファイルを開く

ちょっとした上下操作、あるいは番号だけで以前に開いていたファイルが開いて作業ができるのは素敵です。また、セッションなども選択できます。

Startify デフォルトの履歴やブックマークの選択画面

ヘッダー/フッターのカスタマイズ

vim-statifyを使うと、ヘッダー/フッターに好きなテキストを入れることができます。

これで、オリジナリティが出せるのも魅力の一つです。シンプルが好きな筆者の場合は、こんな感じです。

こちらは次のように設定ファイルに記載します。(罫線は文字数を省略しています。)

let g:startify_custom_header = [
    \ '============================================',
    \ ' VIM - Vi IMproved
    \ '============================================',
    \]

配列になっていて、1行1値で記載して表現します。

なお、ググってみるとわかりますが、こちらにはアスキーアートを入れている人も多いようです。

次のサイトでアスキーアートを作成して、ぜひ自分だけのスタートページを作ると良いでしょう。

http://asciiflow.com/

https://kaomoji-cafe.jp/category/aa/

https://lazesoftware.com/tool/hugeaagen/

https://yonelabo.com/aa_artmaker

キーバインド

少ないですが、一応いくつかキーバインドが用意されています。

キー操作実行内容
e空のバッファーを開く(Normal mode)
i空のバッファーを開く(Insert mode)
qバッファを閉じる(他にバッファーがなければ Vimを終了する)
数字表示されている行のファイルを開く
Enter選択したファイルを開く
bバッファに開くファイルを選択する(Enter実行時)
s上下分割で開くファイルを選択する(Enter実行時)
v左右分割で開くファイルを選択する(Enter実行時)
tタブで開くファイルを選択する(Enter実行時)
Bバッチモード(バッファに開くファイルを一括選択)のOn/Off
Sバッチモード(上下分割に開くファイルを一括選択)のOn/Off
Vバッチモード(左右分割に開くファイルを一括選択)のOn/Off
Tバッチモード(タブで:開くファイルを一括選択)のOn/Off

上記のうち、b/s/v/t は表示されたファイルを選択して、Enterを押した時点でそれぞれ開く複数選択の機能となります。

また、それらの大文字でバッチモードに入ることで、より簡単にファイル選択ができるようになります。例えば、1 と 3 と 5 のファイルを水平分割で開く場合のキー操作は次のようになります。

S135 Enter

スタート画面の再表示

作業中にスタート画面を再度表示する方が都合が良いこともあります。その時には、次のコマンドを実行しましょう。

:Startify

カーソルがあるカレントウインドウに、スタート画面が再表示されます。

もちろん、作業中の他のバッファは維持されます。

セッション管理

このプラグインを利用すると、セッション管理も簡単かつ細やかに扱うことが可能になります。

:SLoadセッションを読み込みます。
:SSave
:SSave!
セッションを保存します。
:SDelete
:SDelete!
セッションを削除します。
:SCloseセッションを閉じます。

:SSave と :SDelete は ! を付与して実行すると、確認なく実行します。

セッションは、Vimであれば $HOME/.vim/session ディレクトリに保存されます。($HOME/.vim/sessionディレクトリは作成しておく必要があります。)

なお、Vim終了時にセッションを自動保存するには、次のように設定しておきます。

let g:startify_session_persistence = 1

設定値

こちらのプラグインでは、下記を設定値として変更できます。

設定値データ型内容
g:startify_bookmarks配列表示するブックマークを指定します。
g:startify_change_to_dir1 / 0ファイルまたはブックマークを開いたときに、そのディレクトリへ移動します。
g:startify_change_to_vcs_root1 / 0ファイルまたはブックマークを開いたときに、gitなどVCSのルートディレクトリを探して移動します。
g:startify_commands配列選択時に実行するコマンドのリスト。
g:startify_custom_footer配列スタート画面の下部に表示する内容を設定します。
g:startify_custom_header配列スタート画面の下部に表示する内容を設定します。
g:startify_custom_header_quotes配列事前定義された引用符が必要な場合に使用します
g:startify_custom_indices配列数字を増やす代わりに、指定した文字列のリストをインデックスとして使用します。
g:startify_disable_at_vimenter0 / 1Vimの起動時に Startify (スタート画面)を実行しません。:Startifyコマンドで呼び出すだけになります。
g:startify_enable_special0 / 1<empty buffer>および<quit>を表示します
g:startify_enable_unsafe0 / 1Vimの起動が遅いと感じる場合にのみ、オプションを有効にします。
g:startify_files_number整数リストアップするファイル数
g:startify_fortune_use_unicode0 / 1このオプションを1に設定し、かつ ‘encoding’ が ‘utf-8’ の場合、The fortune header はASCII文字ではなく、代わりにUnicode のBox-drawing character を使用されます。
g:startify_list_orderこのオプションは非推奨です。g:startify_listsを使いましょう。
g:startify_lists配列Startifyが表示するリストの構成をDictionary形式で指定します。
g:startify_padding_left整数左のパディング(余白)に使用されるスペースの数。
g:startify_relative_path0 / 1ファイルが現在の作業ディレクトリ以下にある場合、相対パスを使用します。それ以外の場合、絶対パスが使用します。
g:startify_session_autoload0 / 1このオプションが有効で、かつ Session.vim を含むディレクトリで Vim を起動した場合、そのセッションを自動的にロードします。それ以外の場合は Startifyバッファの一番上のエントリとして表示します。
g:startify_session_before_save配列セッションを保存する前に実行するコマンドのリストです。
g:startify_session_delete_buffers0 / 1セッションをロードするとき、または閉じるときに全バッファを削除します。
g:startify_session_dir文字列セッションを保存するディレクトリを指定する
g:startify_session_number整数表示するセッションの最大数。
g:startify_session_persistence0 / 1Vim終了時もしくは新しいセッションを読み込む場合、今のセッションを自動保存する
g:startify_session_remove_lines配列このリストのパターンのいずれかに合致する行は、 セッションファイルから取り除きます。
g:startify_session_savecmds配列セッションのロード時に実行するコマンドを指定します。
g:startify_session_savevars配列通常保存するものに加えて、セッションファイルに保存する変数を指定します。
g:startify_session_sort0 / 1セッションをアルファベット順ではなく、変更時刻で並べ替えます。
(セッションファイルが書き込まれた時刻)
g:startify_skiplist配列最近使用したファイルのうち、表示しないファイルのフィルタリングルール。Vim正規表現のリストとして表記します。
g:startify_skiplist_server配列このリストに含まれる名前の Vimサーバーインスタンスである場合、startify バッファを作成しない。
g:startify_update_oldfiles0 / 1:Startifyで表示するよう、ファイル利用履歴を常時更新します。
g:startify_use_env0 / 1パスが長い場合、環境変数を使って表示します。

各値の詳しい設置値はこちらを確認しましょう。

https://github.com/mhinz/vim-startify/blob/master/doc/startify.txt

設定例

" Most used options     
let g:startify_bookmarks = [ {'c': '~/.vimrc'}, '~/.vim/startify.vim']    
let g:startify_change_to_dir = 1     
let g:startify_change_to_vcs_root = 1     
let g:ascii = [    
        \ '        __',    
        \ '.--.--.|__|.--------.',    
        \ '|  |  ||  ||        |',    
        \ ' \___/ |__||__|__|__|',    
        \ ''     
        \]    
let g:startify_custom_header = g:ascii + startify#fortune#boxed()     
let g:startify_enable_special = 1   
let g:startify_lists = [
          \ { 'type': 'files',     'header': ['   MRU'] },
          \ { 'type': 'dir',       'header': ['   MRU '. getcwd()] },
          \ { 'type': 'sessions',  'header': ['   Sessions'] },
          \ { 'type': 'bookmarks', 'header': ['   Bookmarks'] }
          \ ]
let g:startify_skiplist = [
        \ '^/tmp',
        \ '.swap$',
        \ '.tmp$',
        \ ]
let g:startify_update_oldfiles = 1

" For Misc options
let g:startify_commands = []
let g:startify_custom_footer = ['-------------------------------------------------------']
let g:startify_disable_at_vimenter = 0
let g:startify_enable_unsafe = 0
let g:startify_files_number = 5
let g:startify_fortune_use_unicode = 0
let g:startify_padding_left = 4
let g:startify_relative_path = 1
let g:startify_use_env = 1

" For Sessions     
let g:startify_session_autoload = 1     
let g:startify_session_before_save = ['echo "Saving this session ..."']    
let g:startify_session_delete_buffers = 0     
let g:startify_session_dir = '~/.vim/session'     
let g:startify_session_number = 20     
let g:startify_session_persistence = 1     
let g:startify_session_remove_lines = ['setlocal', 'winheight']    
let g:startify_session_savecmds = ['echo "Saved a session."']
let g:startify_session_savevars = [    
           \ 'g:startify_session_savevars',    
           \ 'g:startify_session_savecmds',    
           \ ]    
let g:startify_session_sort = 1

このVimプラグインの補足情報

  • 利用頻度[star rate=5]
  • 便利さ[star rate=5]
  • 導入の簡単さ[star rate=4]

関連するVimヘルプ

https://github.com/mhinz/vim-startify/blob/master/doc/startify.txt

設定が参考になる記事

MJHD
vim-startifyでvimのロゴを起動画面に設定する - MJHD vim-startifyはvimの起動画面にASCII ARTや最近使ったファイルの一覧などを表示することのできるプラグインだ。 今回は、vimのロゴを表示させた。
derisの日記
Vimmerなら2013年中に試しておきたい海外産Vim plugin 8選 - derisの日記 Vim この記事はVim Advent Calendar 2013の15日目の記事です。 14日目はjoker1007さんによるwebapi-vimとBufWriteCmdでWeb上のリソースをVimで編集するでした。 本記事では...

Vimの参考書籍

Vimを使うなら、こちらの書籍は一読しておくべきです。もう読みましたか?

[temp id=3]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。