vimでなんちゃって執筆集中モード

文章を書くとき、気が散らないように集中できるエディタが使いたい。

ちょっと検索するとOmmWriterやWriteRoomといったようなエディタが世間にはあるらしい。全画面モードで、背景が真っ白だったり風景だったりして気が散らないようになっていて、中心部分に文字を書くようなエディタだ。

全画面じゃなく、普通のサイズのエディタだと、エディタの後ろや横にブラウザやメーラーが開かれてて気が散って仕方がない。

だから、執筆集中モードのあるエディタは、あえて画面全体をエディタで覆い隠してしまうってコンセプトみたいだ。

ちなみに、私が普段文章を書くときに使ってるエディタはvimだ。正確に言うとWindows用にKaoriyaで配布頂いているgvimを長年愛用している。でもvimでいくら探しても、この夢をかなえてくれるpluginや設定はないみたいだ。残念過ぎる。

仕方ないので、足掻いてみる。試しに、vimで全画面モードにしてみた。

画像1

ダメだ、文章が左端に寄ってしまい、見にくいし、なんか逆にストレスが溜まってしまう。

全画面モードで左の余白と右の予約をを大きく取れるといいんだけど……
ちょっと探してみたけど、それっぽい設定は見つからないな。

これは、あれか?

もうvimを捨てて、違うエディタに乗り換えろってことなのか?


でも、本当にいいのか?

これまで長いことvimを使ってきたのに、お前のvimに対する愛情はそんなものだったのか? 欲しい機能があれば自分でなんとかするのが本当のvimmerなんじゃないのか?

 OmmWriterを使ってみたい自分と、vimへの愛情を感じる自分の間で葛藤する日々。

もういいや、OmmWriterに乗り換えよう! そう決めて眠りに落ちた翌朝。ふと閃いた。

あっ、なんだ。要は、俺の実現したいことって

・全画面モードであること
・文章が画面全体じゃなくて、真ん中にだけ表示、入力されること

でいいんだよね? じゃあ、もうこれでいいじゃん。

画像2

単純に、これで俺の要望満たせるじゃん。

でも、これを毎回手動で実施するのはあまりにも格好悪すぎるし、単純に3つのウインドウのサイズが一緒ってのじゃ、プライドが許さない。

なので、vimスクリプトを書くのには慣れていないけれども書いてみた。ちゃんとしたお作法は知らないので不恰好なのはご愛敬ってことで。

以下を、_vimrcに書いて、「:ZenMode」とすることで写真の状態になる。真ん中のウインドウのサイズは「g:zen_focus_width」に設定することで制御できるようにしてみた。

let g:zen_focus_width=80
 function! s:zenmode()
   :ScreenMode 4
   :bo vnew

   let l:zen_layout=winlayout()
   call win_gotoid(l:zen_layout[1][0][1])

   :vnew

   let l:zen_layout=winlayout()
   let l:zen_side_width=(3*winwidth(0)-g:zen_focus_width)/2

   execute ":vert res " . l:zen_side_width
   call win_gotoid(l:zen_layout[1][2][1])
   execute ":vert res " . l:zen_side_width
   call win_gotoid(l:zen_layout[1][1][1])
 endfunction
 command! ZenMode call s:zenmode()

* Kaoriya gvimには最初から入っている「ScreenMode」を使って全画面化
* 初期状態が、ウインドウ1つの場合しか想定してないけど、ウインドウを3分割
* センターウィンドウの横幅を「g:zen_focus_width」で指定し、余った横幅を左右のウインドウで等分する

この状態から戻すとか、初期状態がウインドウ1つ以外の場合ってのは全然考慮してないけど、それなりに使える気がしてる。っていうか、自分の使いたい目的にはこれで充分かな。なかなかいい。結構気に入って使ってる。

もし、同じようなことで困ってるのなら、一度試してみてください。

それでは。

この記事が気に入ったらサポートをしてみませんか?