2016/10/18 21:13:02

[ vim ]プロジェクト保存するセッションの活用

Vim-editor_logo
目次(クリックするとジャンプします)
  • 1:プロジェクトA
  • 2:vimのセッションはとても便利
  • 2.1:sessionoptionsオプション
  • 2.1.1:タブ使いのvimer
  • 2.1.2:windowsとの連携の場合
  • 3:セッションを操作するコマンド
  • 3.1:セッションを作る(保存する)
  • 3.2:次の日などに作業再開
  • 3.3:vimで作業中にセッション読み込み
  • 3.4:上書き
  • 4:補足・注意点・ハマりポイント
  • 4.1:セッション切り替えるときは必ずファイルを保存してから
  • 4.1.1:ファイル全保存
  • 5:まとめ

プロジェクトA

コーディングするとき、複数のファイルを同時に開くことが多いかと思います。統合開発環境(以下IDE)では作業ファイルをまとめるプロジェクト保存が当たり前のようにあります。

@MINOも最初はnetbeansというIDEを使っていましたが、vimに乗り換えました。でもvimにはプロジェクト保存というのは無かったのです。

初心者の@MINOとしてはなかなかにプロジェクト保存に依存していたようで困りました。そこで調べてみたらvimにもプロジェクト保存に相当する機能があるではないですか!!

vimにはセッションというものがありまして、これがプロジェクト保存として機能してくれます。

vimのセッションはとても便利

セッションは開いていたファイル、ウィンドウのレイアウト、グローバル変数、オプションの設定などを保存してくれます。

正確に言うとsessionoptionsで指定されている要素が保存される形になります。

sessionoptionsオプション

デフォルトでは以下の要素が保存対象になっています。

要素 意味
blank 空のウインドウ
buffers 開いているバッファ
curdir カレントディレクトリ
folds 折り畳みの状態
winsize ウインドウサイズ
options キーマップ、すべてのオプション設定
help ヘルプウインドウ

そのほかの要素として以下があります。

要素 意味
globals 一部のグローバル変数の
localoptions ウインドウかバッファに設定しているローカルオプションとキーマップ
sesdir セッションファイル保存先がカレントディレクトリになる
slash ファイル名に使われている ”(バックスラッシュ) を’/’スラッシュに置換
tabpages 全タブページのセッション保存
winpos ウインドウのポジション(gvim)
unix Unix形式のEOL(end-of-line)を使う

タブ使いのvimer

@MINOはタブを使っていないのでtabpagesは使っていないですが、タブ使いのvimerは必須のようです。

このオプションがない場合、カレントタブしかセッション保存されないようです。

windowsとの連携の場合

slashとunixはwindowsとlinuxでセッションファイルを共有する為使うそうです。

windowsはunix形式スクリプトを読み込めるのですが、unix・linuxはdos形式に使われているディレクトリ階層を表す”(バックスラッシュ)が読み込めないそうで、変換してあげる必要があるようです。

またunix・linuxはEOL(end-of-line)もunix形式にしないと読み込むことができないそうです。

なのでslashとunixでセッションファイルを明示的にunix形式にしてしまえば共有ができるとのこと。

セッションを操作するコマンド

セッションを作る(保存する)

:mksession hoge.vim

これでhoge.vimにセッション情報が保存されます。

次の日などに作業再開

vim -S hoge.vim

とすることでvim起動と同時にセッションを復元することができます。

vimで作業中にセッション読み込み

:souce hoge.vim

でセッションが読み込まれます。

上書き

:mksession!

で現在のセッションを直近のセッションに上書きします。

補足・注意点・ハマりポイント

セッション切り替えるときは必ずファイルを保存してから

セッションは便利で、複数のプロジェクトを切り替えて作業できるような環境を与えてくれますが、セッションを切り替える前には必ず保存していないファイルは保存するようにしましょう。

ファイル全保存

:wa

切り替える前にこれしとかないと死にそうになるときがあります。

まとめ

vimでもプロジェクト扱いができて嬉し楽しいです。