エンジニアだと一日の大半をターミナルやエディタの画面を見つめて過ごす人も多いと思いますが、そういう人(僕含む)にうってつけなのが Solarized。
これは、目に優しいカラースキーム決定版!とも言えるものです。ターミナルだけでなく、Mac、Windows 用の各種エディタ向けの設定も含まれています。
Solarized を使うと、通常はこんな感じでどぎつい色使いのターミナルが、
こんな感じになります。
エンジニアだと一日の大半をターミナルやエディタの画面を見つめて過ごす人も多いと思いますが、そういう人(僕含む)にうってつけなのが Solarized。
これは、目に優しいカラースキーム決定版!とも言えるものです。ターミナルだけでなく、Mac、Windows 用の各種エディタ向けの設定も含まれています。
Solarized を使うと、通常はこんな感じでどぎつい色使いのターミナルが、
こんな感じになります。
vim ではモードが重要です。特にノーマルモードとインサートモードの 2 つは、現在自分がどちらにいるのかを常に把握していないといけません。
以前紹介した Powerline はステータスバーを目立たせることでこれを実現していました。
【Vim】Powerline でリッチなステータスラインを使う – blog.delphinus.dev
https://blog.delphinus.dev/2012/01/vim-powerline.html
このプラグインは非常に優れものですが一つ問題がありました。目立つのは画面最下部ですので、インサートモード時に視点が向いているであろう、カーソル付近でモードを知る術がないのです。
この記事に続いてタブ間を自由に移動する方法について書きましたが、タブ自体を移動させる方法が抜けていました。要するに右の図のように、タブ自体の並びを変えたいわけです。
これを関数を定義して実現しようとしたら思いの外複雑でした。
<Tab>n
で右へ、<Tab>p
で左へ移動します。<count>
を指定すると一気に遠くまで移動します。例: 3<Tab>n
なら 3 つ右のタブへ移動します。<Tab>n
とすると、一番左へ移動します。" 現在のタブを右へ移動 nnoremap <Tab>n :MyTabMoveRight<CR> " 現在のタブを左へ移動 nnoremap <Tab>p :MyTabMoveLeft<CR> command! -count=1 MyTabMoveRight call MyTabMove(<count>) command! -count=1 MyTabMoveLeft call MyTabMove(-<count>) function! MyTabMove(c) let current = tabpagenr() let max = tabpagenr('$') let target = a:c > 1 ? current + a:c - line('.') : \ a:c == 1 ? current : \ a:c == -1 ? current - 2 : \ a:c < -1 ? current + a:c + line('.') - 2 : 0 let target = target >= max ? target % max : \ target < 0 ? target + max : \ target execute ':tabmove ' . target endfunction
関数の中では、<count>
値に現在の行番号が含まれたりすることがあるんですけど、どういうわけですかね? これがなければもう少し簡潔になったのですが。
ジャグリングなんて書くと訳わかりませんね。要するに、vim のビジュアルモードで指定した行を最短手順でコピペするプラグインの紹介です。
LineJuggler – Duplicate and move around lines. : vim online
http://www.vim.org/scripts/script.php?script_id=4140
その昔、【GVim】Proggy + Osakaで快適コーディングという記事を書いたのですが、当時から 2 年も経って Putty + Vim な環境もずいぶん変わりました。個人的にエポックメイキングと言えるのが次の 2 点です。
両者を組み合わせることでお手軽に快適な環境が得られるわけですが、ここはもう少し踏み込んで自分好みの環境にしてしまいたいところです。
つまり何が言いたいかというと、
半角フォントはやっぱり Proggy Clean の方がかっこいい!
ってことです。そこで Ricty の半角フォントだけを Proggy Clean に置き換えてみました。誰得なんでしょうね? まさに俺得です。
みなさん vim7 から搭載されたタブ機能は使ってますか?
なんか周り見てみると相変わらずコマンドラインから vim filename.txt
で起動して一つ編集したら終わり→次のディレクトリへ……って人が多いんですよね。
別にそれでかまわない、もとい、vim とは本来そういうもんだという人も多いのでしょうが、今や unite や vimfiler などの優れたプラグインも多く、vim を一つ起動すれば、ディレクトリを縦横無尽に行き来していろんなファイルを編集できると思うんです。
せっかくだから、俺はこの Unite + vim-ref を選ぶぜ! – blog.delphinus.dev
https://blog.delphinus.dev/2010/12/vim-ref-with-unite.html
vimfilerとUniteでVimをファイラとして使用する方法 | karakaram-blog
http://www.karakaram.com/vim/vimfiler/
ただそうなると、標準のタブ機能は表示もキーバインドも簡潔すぎて不十分です。今回はカスタマイズで少しだけタブ機能を使いやすくしてみました。
vim では移動、編集に行数を指定することがよくあります。そのために行番号を画面に表示して 5j 5 行下へ移動、d6k 6 行上まで削除などとするわけですが、パッと見て目標を 5 行下、6 行上などと見積もることはなかなか難しいです。
そこでオススメなのが相対行番号です。これは現在カーソルがある位置から見て何行離れているかを画面に表示します。.vimrc
内で set number
などと指定する代わりに set relativenumber
と入力すると有効になります。
set relativenumber