Screen の caption に Vim のタイトルを表示する(+タイトル文字列のカスタマイズとか)


Vim を起動するとタイトルバーに編集中のファイル名などが表示されます。

Screen で「タイトルバー」の代わりとなるものは caption ですが、そのままの設定では Vim からのメッセージが表示されません。
これは次のように設定すると解決します。^[ のところは Control + V ESC のように入力してください。

if &term =~ '^screen'
    set t_ts=^[k
    set t_fs=^[\
endif

はい。終わり。……では悲しいので、この文字列をもうちょっとカスタマイズしてみましょう。

Continue reading

Vim のカラースキーム集 2012 年版

2 年前の記事で紹介した Colour Sampler Pack が久しぶりに更新されていました。

Colo(u)r Sampler Pack – [[[Oct 2012 Update]]] Top 100(ish) Themes, GUI Menu : vim online
http://www.vim.org/scripts/script.php?script_id=625

vim-scripts/Colour-Sampler-Pack · GitHub
https://github.com/vim-scripts/Colour-Sampler-Pack

インストールは Github からやった方が簡単ですね。Vundle なら次の一行を .vimrc に加えて、:BundleInstall<CR> するだけです。

Bundle 'vim-scripts/Colour-Sampler-Pack'

GVim ならメニューも追加されてマウスで色んなカラースキームを選ぶことが出来ます。以前紹介した Solarized も含まれています。


121209-0010.png

でも Vimmer ならマウスなんぞ使わずキーボードで選択したいですよね。そういうときは Unite-colorscheme がオススメです。

Vim-users.jp – Hack #188: 見た目を気軽に変更する
http://vim-users.jp/2010/12/hack188/

:Unite colorscheme<CR> で起動した後は、KJ で選択し、P でプレビュー、Enter で選択です。

便利ですね〜。先人に感謝です。

最強カラースキームと言えば Solarized だよね!

121023-0001_mod.png

エンジニアだと一日の大半をターミナルやエディタの画面を見つめて過ごす人も多いと思いますが、そういう人(僕含む)にうってつけなのが Solarized

これは、目に優しいカラースキーム決定版!とも言えるものです。ターミナルだけでなく、Mac、Windows 用の各種エディタ向けの設定も含まれています。

Solarized を使うと、通常はこんな感じでどぎつい色使いのターミナルが、

121020-0007.png

こんな感じになります。

Continue reading

【vim】インサートモードでカーソルを目立たせる

vim ではモードが重要です。特にノーマルモードインサートモードの 2 つは、現在自分がどちらにいるのかを常に把握していないといけません。

以前紹介した Powerline はステータスバーを目立たせることでこれを実現していました。

【Vim】Powerline でリッチなステータスラインを使う – blog.delphinus.dev
https://blog.delphinus.dev/2012/01/vim-powerline.html

このプラグインは非常に優れものですが一つ問題がありました。目立つのは画面最下部ですので、インサートモード時に視点が向いているであろう、カーソル付近でモードを知る術がないのです。

Continue reading

【vim】タブを自由に移動させる


121015-0011_MOD.png

この記事に続いてタブ間を自由に移動する方法について書きましたが、タブ自体を移動させる方法が抜けていました。要するに右の図のように、タブ自体の並びを変えたいわけです。

これを関数を定義して実現しようとしたら思いの外複雑でした。

  • <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> 値に現在の行番号が含まれたりすることがあるんですけど、どういうわけですかね? これがなければもう少し簡潔になったのですが。