"TODO:" を目立たせたいと思った、どのファイルでも

タイトルの通り、"TODO" とか "NOTE" とか、そんな目印を目立たせたい、と。
しかもここでは、ファイルタイプ関係なく*1、どのドキュメントにおいても一律、全て同じスタイルのハイライトで構わない、というかむしろそうしたいと考え、その方向で検討しています。

結果、.vimrc の任意の箇所に以下のよう、設定を施しました。;

" コメント中の特定の単語を強調表示する
augroup HilightsForce
  autocmd!
  autocmd WinEnter,BufRead,BufNew,Syntax * :silent! call matchadd('Todo', '\(TODO\|NOTE\|INFO\|XXX\|TEMP\):')
  autocmd WinEnter,BufRead,BufNew,Syntax * highlight Todo guibg=Red guifg=White
augroup END

指定の文字列のアルファベット部は全て大文字で、かつ直後にコロン : で結んだ場合にのみハイライトされるようにしています。
これは単に個人的な好みの問題です。

例えば "TODO" の場合。

単に "TODO" とタイプしてもハイライトはされません。コロン ":" がないので。
また "todo:" とか "Todo:" 等と、大文字-小文字が異なってもハイライトされません。

この度、この度参考にさせていただいた主なリソースは以下の通りです。
有難い。感謝です。;

» In vim, how do I highlight TODO: and FIXME:? - Stack Overflow
» Vim : Highlight the word TODO for every filetype - Stack Overflow
» ちくパ — Vimでどんなファイルタイプでもコメント中の特定の単語をハイライトする

と言うことで、今回の作業で知ったこと、感じた事メモ。

*1:現時点での自分の作業スタイルを考えると、キーワードに対するハイライトをファイルタイプ単位で切り分けると言う事に余り意味を見い出せないかな、と感じたのがあります。これは人それぞれだと思います。

続きを読む

行番号は gvimrc でいいんだろか

どのカラースキームを使っても,行番号はもう少し目立つようにしたいと思うようになりました.

結果 gvimrc の任意の場所に,以下のような記述を追加しました.;

" 行番号はどの colorscheme 使っても一律目立たせる
highlight! CursorLineNr gui=NONE guifg=#f5f5f5
highlight! LineNr guifg=#949494

気になるのは,この設定を定義する先.

.gvimrc に書くのが果たして正しいものなのかは,ちょいと自信無い.

ちなみにその根拠は,文字の色と言った "見た目" をコントロールする設定なので .vimrc ではなく .gvimrc かと.

定義した場所が rc ファイルだけに,どのカラースキームを使っても同じになりますが,現時点これで良しとしています.

あと自身,おおよそ gVim しか使わない島の人間で,尚且つ "その設定がどう効くのか良く分かっていない" と言うこともあり cterm の方は意識的にうっちゃってます(笑)*1

やっぱ $VIMRUNTIME/syntax/... のどっかで定義するのがスマートなのかなあ...

*1:決して望ましくないのは分かるのですが,良く分からずに何となく設定することの気持ち悪さと,それ以上に普段の利用において特に支障を感じない,というのがあるので良しとしてます.本当に「必要」と思った時に,改めてきちんと考えるで良いかなあと.

続きを読む

出てこいっ 「.vimrc も mru としてリストに現れるように」

またやった...

「まさかこれはないだろう」が実はソレ,って言う.故,壮大に何一つ意味の無い無駄な廻り道.

今回のお話は Unite.vimneomru.vim

未来の自分の為に,何でこんな設定をしたのか,のメモ.

.vimrc も mru ファイルのアイテムとしてリストに揚がるようにしたい

こうなりますか ?

g:neomru#follow_links = 1

あまり自信無かったりもしますが,一応願った通りの振る舞いをしてくれています,ということで :-P

キッカケ

.vimrc を色々触っている時のこと.

:Unite file_mru した時に*1,この .vimrc ファイルも mru ファイルとしてリストアップされるようになってほしいと考えました.

*1:実際はマップをしてますが

続きを読む

そのまま,ボコッと

これ分かった時,膝の力抜けましたよ.とはいえ,いつもの無知ゆえの話なのですが.

そんなこんなでちょっとした発見もあり,しかしながら「こんなことすら忘れるようになったら終わりだな」思いつつも,やっぱ信じられないので(笑,メモ.

今回は矩形ビジュアルモードでの切り貼りに関するお話.

先日こんな作業に出くわしました.感覚としてスプレッドシートでの作業をイメージして頂けると伝わり易いかもしれません.

例えば*1,こんな感じです.;

町域
赤堤
池尻
宇奈根
梅丘
大蔵
大原
岡本
奥沢
尾山台

郵便番号    市区町村    町域
156-0044    世田谷区    赤堤  アカツツミ
154-0001    世田谷区    池尻  イケジリ
157-0068    世田谷区    宇奈根   ウナネ
154-0022    世田谷区    梅丘  ウメガオカ
157-0074    世田谷区    大蔵  オオクラ
156-0041    世田谷区    大原  オオハラ
157-0076    世田谷区    岡本  オカモト
158-0083    世田谷区    奥沢  オクサワ
158-0086    世田谷区    尾山台   オヤマダイ

この上のブロックの先頭に,下の郵便番号列にあたるテキストを持って行きたい.

知らなかったのは貼り付け方.

てっきり,矩形ビジュアル挿入の要領で対象領域のすべての行の先頭文字を矩形選択して P 貼り付けかと思ったら,これは間違い.

正解は,挿入箇所左上端,上の例で言うと 1 行目の "町" のところにカーソルを置くだけ.その状態で p で良いとな.

続きを読む

えぇ... ただ置いていただくだけで結構です

言葉通り長くなりそうなので,まずここで tl;dr 的に.

今回の作業をもって,こんな設定を加えることにしました.;

xnoremap <expr> p 'pgv"'.v:register.'ygv<esc>'

見ての通り p コマンド,つまり「貼り付け*1」の操作に関するものです.

選択した範囲へ貼り付け*2た時にやられちゃう,クリップボードの書き換えをしないようにしています.
とは言え実はこれ,見掛けだけの話で,書き換えと言う処理は行われていなかったりするのですが.

簡単に分解しますと.

step key description
1 p 選択した範囲へ貼り付け
2 gv #1 で貼り付けた内容を選択
3 "v:registery 選択した範囲の内容をコピー
4 gv<esc> 最後にもう一度範囲選択し解除

つまりやっていることは,"書き換えを回避させる" ではなく,何でもない,"再度クリップボードにコピー" して書き変えていないように見せている,と言うだけ.

ここで最終的に参考とした情報はこちら.;

» Vim: how to paste over without overwriting register

また上述参照先にもありますが,「v:register ってイミフ」とか,「ごく一般的な使い方で十分」とかなら恐らく単純に,{rhs} で v:register なくても良いのかも.;

xnoremap p pgvy

と言う事でして.今回は,今まであった「何となく」であったレジスタ registers というものが「なるほど」に変わった事もあって,その辺り含め以下にメモ.

Smashed filter protects lens....Paper / SGPhotography77

*1:vim の世界では「プット」と呼ぶようです.この "p" と言うのは,一般的にあるような「貼り付け(ペースト) paste」の "p" ではなく,「プット put」の "p" なのかと,恐らくですが.

*2:正確にはレジスタと言われます.

続きを読む