Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

女子受けバツグン必殺Vimカラースキームを自作しよう

$
0
0

【前置き】カノジョを作る作戦を立てよう

今年もカノジョができなかった @yamasy1549です :innocent:

さてエンジニアという職業ですが、一般の方々に印象を聞くと「ずっとPCに向かってる」「話しかけづらい」「黒い画面に吸い込まれそう」と言われ[要出典]、実際黙々とコードを書くだけだと人間関係が希薄になりやすいです[要出典]。関わる人間の数が圧倒的に少ないのではカノジョができなくても仕方ないし、そんな中でカノジョを作ろうと思ったらもう狙いの精度を上げるしかありません。今回は「それとなく自分の趣味を明らかにし、同じ趣味の人に気づいてもらう」ことで精度向上を図る作戦を考えましょう。

作戦

おもむろにVimを立ち上げます。

カノジョできてるエンジニアとカノジョできないエンジニアの何が違うのか、それは普段使っているエディタに表れているに違いない、と思い簡単な調査をしました。

imageimage

僕がVimユーザーなのでVimに絞って聞いてみましたが、2つの結果は大して変わりませんでした。
しかしこれは有用な結果です。みんな似たようなものを使っているなら、ここで自分の個性をアピールすればきっと誰かが自分の存在に気づいてくれるはずです。

前置きが長かったですが、自分の趣味をアピールできるようなVimカラースキームを作っていきましょう。

【本題】Vimカラースキームを作ろう

構成を知ろう

一から書くのはしんどいので、既存のカラースキームを上書きしていくのがラクで良いです。

今回は icebergというカラースキームを参考にしました。

諸々の設定

setbackground=darksetbackground=light

カラースキームの背景を設定します。
icebergのようにどちらかの色使いのみ対応するなら、カラースキーム側にどちらかを書いておきます。両対応にするなら、カラースキーム側でdark向けの色使いとlight向けの色使いを振り分けることができます(例 : solarized)。

if exists("syntax_on")syntax reset
endifhi clear
" orhighlight clear

すべてのハイライト設定を一旦クリアします。

Highlight command

:help highlight

で詳細を確認できます。

highlight {group-name} {key}={arg}

よく使うのが上の形です。

group-name

:help group-name

で詳細を確認できます。

{group-name}として以下が使えます。

group-name意味
*Commentコメント
Constant定数
String""で囲まれるような文字列定数"this is a string"
Character''で囲まれるような一文字の定数'c''\n'
Number数字定数2340xff
Booleanブール定数TRUEfalse
Float浮動小数点定数2.3e10
*Identifier識別子
Function関数名(クラスメソッドなども)
*Statement命令文
Conditional条件ifthenelseendifswitch
Repeat繰り返しfordowhile
Labelラベルcasedefault
Operator演算子sizeof+*
Keywordその他のキーワード
Exception例外trycatchthrow
*PreProc一般的なプリプロセッサ
Include#include
Define#define
MacroDefineと同じ
PreCondit#if#else#endif
*Typeintlongchar
StorageClassstaticregistervolatile
Structurestructunionenum
Typedeftypedef宣言
*Special特殊なシンボル
SpecialChar特殊な文字定数
TagCTRL-]で宣言元にジャンプできる
Delimiter注意が必要な文字
SpecialCommentコメント内での特記事項
Debugデバッグ命令
*Underlined目立つ文、HTMLリンク
*Ignore空白、見えない
*Errorエラーなど間違った構造
*Todo特別注意の必要なものTODO FIXME and XXX

*マークの付いているものは親、付いていないものは子として扱われます。
例えば

highlight Comment ctermfg=15" CUIでの Comment group の文字色を灰色(15)にする

とすると、ConstantStringCharacterNumberBooleanBooleanも自動的に灰色になります。

highlight-groups

:help highlight-groups

で詳細を確認できます。

{group-name}として以下が使えます。

group-name意味
ColorColumnset colorcolumnで設定された場所の文字行のn文字目以降に色を付ける
Conceal代替テキスト長い文字を短い文字で置き換えて表示する
Cursorカーソルのある文字
CursorIMIMEモードでの Cursor
CursorColumnset cursorcolumnされているときのカーソルのある文字の桁(縦方向)
CursorLineset cursorlineされているときのカーソルのある文字の行(横方向)
Directoryディレクトリ名・特別な名前
DiffAdd差分モードでの追加された行
DiffChange差分モードでの変更された行
DiffDelete差分モードでの削除された行
DiffText差分モードでの変更されたテキスト
EndOfBufferバッファ中で最終行以降の残りのスペースを埋める行'~' を無効にする
ErrorMsgコマンドライン上でのエラーメッセージ
VertSplitウィンドウを垂直分割したときの区切り行
Folded折りたたまれた行
FoldColumn折りたたみがあることを表示する列
SignColumnsign(目印)を表示する列
IncSearchinsearchのハイライト
LineNr:number:#コマンドの行番号
CursorLineNrset cursorlineset relativenumberされているときの現在行の行番号
MatchParenカーソル下(または直後)の括弧とそれに対応する括弧
ModeMsgshowmodeのメッセージ
MoreMsgmore-prompt のメッセージ
NonTextウィンドウ端の @showbrakeで設定されたような、実際のテキストには存在しない文字
Normal普通のテキスト
Pmenuポップアップメニューでの普通の項目
PmenuSelポップアップメニューでの選択された項目
PmenuSbarポップアップメニューでのスクロールバー
PmenuThumbポップアップメニューでのスクロールバーのツマミ
Questionhit-enter プロンプトと yes/no
Search最後に検索した単語のハイライト
SpecialKeyメタキーなど
SpellBadスペルチェッカーに認識されない単語
SpellCap大文字で始まるべき単語
SpellLocalスペルチェッカーが他の地域で使われると認識する単語
SpellRareスペルチェッカーによって殆ど使われないと認識される単語
StatusLineカレントウィンドウのステータスライン
StatusLineNCカレントウィンドウでないウィンドウのステータスライン
TabLineタブページ行のアクティブでないページのラベル
TabLineFillタブページ行のラベルがないところ
TabLineSelタブページ行のアクティブなページのラベル
Title:set allautocmdなどの出力タイトル
Visualビジュアルモード選択
VisualNOS"Not Owning the Selection" のときのビジュアルモード選択
WarningMsg警告
WildMenuwindmenuの補完での現在の候補

highlight-args

:help highlight-args

で詳細を確認できます。

カラー端末用には cterm*={arg}、そうでない端末用には term*={arg}、gVimなど用には gui={arg}を使います。

{key}={arg}意味args
cterm={arg}文字のスタイルboldunderlineundercurlreverseinverseitalicstandoutNONE
ctermbg={arg}文字の背景色色番号
ctermfg={arg}文字の色色番号

cterm*={arg}では16進数での色指定ができないので、色番号で指定する必要があります。
参考 : ターミナルで使える色と色番号を一覧にする

書いてみよう

上で紹介したものは設定のほんの一部ですが、数カ所色を変えるだけでも見た目がかなり変わります。

矢澤にこさんを見ながら作るとこうなる

image

絢瀬絵里さんを見ながら作るとこうなる

image

Vim上で

:so $VIMRUNTIME/syntax/hitest.vim

と叩いてしばらく待つと、どのエイリアスがどの色を表示しているかを確認できるので便利です。

もっとできること

まとめ

僕の例はかなり下手ですが、こんな感じで自分の好きなキャラの色をベースにカラースキームを作るといつか誰かに「◯◯さんのエディタってエリチ仕様ですよね!」って気づいてもらえ…たらいいんじゃないかなぁ…

来年は「カノジョできてるエンジニア Advent Calendar」のほうでお会いできるようお祈りしています :pray: Enjoy Vim life!

参考

僕のお気に入りのカラースキームはhybridです。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>