Vimプラグイン

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

vim-startify
記事内に広告が含まれています。
スポンサードリンク

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

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

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

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

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

スポンサードリンク

vim-startify

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

GitHub - mhinz/vim-startify: :link: The fancy start screen for Vim.
:link: The fancy start screen for Vim. Contribute to mhinz/vim-startify development by creating an account on GitHub.

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

Startify デフォルト画面

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

楽にファイルを開く

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

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

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

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

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

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

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

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

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

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

ASCIIFlow
https://kaomoji-cafe.jp/category/aa/
巨大文字AAジェネレーター
任意のテキストまたは画像ファイルから、お好きなサイズの巨大な文字AA(アスキーアート)を生成します。絵文字を使った巨大文字AAや、回転や反転された巨大文字AAも作成できます。
アスキーアートメーカー ちゃんねらの究極AA作成ツール

キーバインド

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

キー操作実行内容
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パスが長い場合、環境変数を使って表示します。

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

vim-startify/doc/startify.txt at master · mhinz/vim-startify
:link: The fancy start screen for Vim. Contribute to mhinz/vim-startify development by creating an account on GitHub.

設定例

" 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プラグインの補足情報

  • 利用頻度5.0
  • 便利さ5.0
  • 導入の簡単さ4.0

関連するVimヘルプ

vim-startify/doc/startify.txt at master · mhinz/vim-startify
:link: The fancy start screen for Vim. Contribute to mhinz/vim-startify development by creating an account on GitHub.

設定が参考になる記事

Vimの参考書籍

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


Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。


こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。

Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。

プロフィール
管理人
Vim太郎

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

\フォローする/
スポンサードリンク
関連記事