半空洞男女関係

思ったこととかプログラミングしてるときのメモとか色々かいてます。メールはidそのままgmail

現在行をハイライトする

環境を新しくして背景色とかが変わった影響で、現在行のハイライトが微妙な感じになった。治そうと思ってvimrcを見てたらコピペしたものが多すぎて、何がなんだかわからなくなってしまった。とりあえず現在行をハイライトする部分はわかったので、そこだけ何やってるのか解説したい。

コード片

" Highlighting
set cursorline
augroup cch
  autocmd! cch
  autocmd WinLeave * set nocursorline
  autocmd WinEnter,BufRead * set cursorline
augroup END

hi clear CursorLine
hi CursorLine gui=underline
highlight CursorLine ctermbg=white guibg=white

大体こんな感じ。

1行目:" Highlighting

コメント。 '"'を頭につけるとコメントになる。

2行目:set cursorline

現在カーソルがある行をハイライトする機能をオンにする。set numberとかすれば行数表示されるし、set nonumberとすれば行数表示されない。省略としてseも可能らしい。

3行目~7行目:augroup cch...augroup END

augroupはコマンドをグループ化するときに使うコマンド[2]。augroup ENDを終わりに書く約束。

augroup グループ名

4行目:autocmd! cch

このグループのautocmdを全削除する。init作業かな。ちなみにau!とも書ける。

5行目:autocmd WinLeave * set nocursorline

autocmdは、イベントドリブンで何かを行いたい時に使うコマンド。文法はこんな感じ。

:autocmd [group] {events} {file_pattern} [nested] {command}

※[]で囲われた部分は省略できるところ

WinLeaveはウィンドウを立ち去るときに発生するイベントなので、つまりこういうことになる。なお、ウィンドウを立ち去る時だけであって、コマンドラインウィンドウに入ったりした時には起こらないようだ?[2]

ウィンドウを去る時なら、いつでも、cursorlineをオフにする

6行目:autocmd WinEnter,BufRead * set cursorline

WinEnterはウィンドウに入るときに発生するイベント、BufReadはバッファを読むときに発生するイベントらしい。だから5行目と6行目を合わせることで、「カーソルが移動しても、カーソルがいるところだけがハイライトされる」という機能が実現できる。

8行目:hi clear CursorLine

hiはhighlightの省略形。"hi clear [group]"で、[group]のハイライトに関する色設定を削除してしまう[3]。CursorLineは、"cursorline"がオンになっている時の、カーソルがある行を指している。

cursorlineに関する色設定を削除している。

9行目:hi CursorLine gui=underline

guiGUIで起動している時の属性を表している。underlineは下線。

10行目:highlight CursorLine ctermbg=white guibg=white

なぜかここだけhighlightだった。ctermbgはターミナルで起動している時の背景色。guibgはGUIで起動している時の背景色。whiteは現在使っているターミナルのANSIカラーから持ってくる。

まとめ

記事がごちゃっとしたが大体何をしたいかは分かった。万が一誤りがあった場合はコメントしていただけると嬉しいです。記述されたvimrcに関しては:helpすれば結構わかるなぁ。部屋の大掃除も大切だけどこういうのも大切ですね。

参考文献

あとは:helpとか