CUI Vim で最高の molokai を味わう。

黒の見やすい配色がいい

テキストエディタの背景は暗いほうが個人的には好みなので、
以前までは、GUI Vimcolorscheme desert 使っていました。

しかし、term と行き来することが多いので CUI Vim へ転換。
そしたら、CUI Vimdesertが、まあ残念

なので、大人気 colorscheme molokai を入れました。
molokai なら、ちょっと設定すれば CUI Vim でも最高の colorscheme が味わえます。

f:id:shocrunch:20150115234438p:plain

詳しくは GitHub をどうぞ

https://github.com/tomasr/molokai

インストール

NeoBundleでもちろん入ります。

NeoBundle 'tomasr/molokai'

インストールしたらあとは、:colorscheme molokai を叩くもよし、.vimrcに書いてデフォルト設定にするもよし

colorscheme molokai

追加設定

個人的に行っている設定を紹介(必須じゃない)

  • CUI Vim でも molokai をしっかり使うための設定
  • molokai をちょっといじる

CUI Vim でも molokai をしっかり使うために

ホームディレクトリ~/.bashrcなり.zshrcなり.zshenvなりに以下を追加すると CUI Vimでも最高の molokai が味わえます。

export TERM=xterm-256color

参考記事:確認しておきたい!ターミナルが本当に256色表示できてるか?

molokai の見にくさを改善する

環境によりますが、個人的には

  • コメント文字
  • 選択範囲(Visual mode)

見難いので、.vimrc にこんな設定を追加してます。

if &term == "xterm-256color"
    colorscheme molokai
    hi Comment ctermfg=102
    hi Visual  ctermbg=236
endif

設定値についての参考記事: Vim のカラースキームが微妙に気に食わないときの対処法

alt-gtagsからunite-gtagsにした

unite-gtags

gnu globalを使ったタグジャンプにalt-gtagsを使っていたけれど、uniteでできれば操作性も一緒で便利だね? ってことで、unite-gtagsに乗り換えました。

Goal

  • unite-gtagsをインストールする
  • 複数のタグファイルを対象にglobalできるようにする

インストール (Neobundle)

NeoBundle 'hewes/unite-gtags'

GitHub: https://github.com/hewes/unite-gtags

$GTAGSLIBPATH 相当の設定

global$GTAGSLIBPATHを設定することで、
カレントディレクトリ以外のタグファイルを検索できる。

unite-gtagsではこの$GTAGSLIBPATHの値をディレクトリごとに指定できる。

サンプル

let g:unite_source_gtags_project_config = {
\   '_': {
\     'gtags_libpath':
\       [ '/usr/include/' ]
\   }
\   '/tmp/sample/': {
\     'gtags_libpath':
\       [ '/usr/include/'
\       , '/home/foo/my/include/'
\       ]
\   }
\ }

上記の設定では

  • カレントディレクトリが/tmp/sample/の時
$GTAGSLIBPATH=/usr/include/:/home/foo/my/include/ global ...

と同じ動作をする

  • 指定されていないディレクトの場合は、
$GTAGSLIBPATH=/usr/include/ global ...

と同じ動作をする

ディレクトリであることをしっかり示そう

ディレクトリごとの設定をする場合は/まで書く必要があります。
なので、以下の設定はNG

let g:unite_source_gtags_project_config = {
\   '/tmp/sample': {    " 本来は /tmp/sample/ と書かなければ動作しない
\     'gtags_libpath':
\       [ '/usr/include/'
\       , '/home/foo/my/'
\       ]
\   }
\ }

ディレクトリごとの設定の絶対パス/まで書くゼッタイ

その他

その他の詳しいことは README.md とソースコードを見てください
GitHub: hewes/unite-gtags

前まで使っていたalt-gtags
GitHub: 5t111111/alt-gtags.vim

translategoogle.vimの翻訳結果をクリップボードへ入れる

翻訳結果は使いたい

私のような英語がスラスラ読めない人は vimgoogle翻訳 する。
google 翻訳機能を持った plugin の中で自分は daisuzu/translategoogle.vim を使用しています。

このプラグイン非常にシンプルで使いやすい。

vimコマンドラインから翻訳ができる機能もあり、単語を調べたいときには重宝する。

:TranslateGoogleCmd japan

しかし、これは翻訳結果を echo するだけなので、yank できない。
yankするとすれば、マウスで echo 結果をドラッグしないといけない(すごくめんどくさい)

翻訳結果を vimクリップボード に入れるコマンドを登録する

この問題の打開策として.vimrcにユーザ定義コマンドを追加します。

command! -nargs=*
            \ TranslateGoogleCmdYank redi @+ | echon translategoogle#command(<q-args>) | redi END
command! -nargs=*
            \ TranslateGoogleCmdReverseYank redi @+ | echon translategoogle#command_reverse(<q-args>) | redi END

コマンドの実行方法はTranslateGoogleCmdと全く同じ。

:TranslateGoogleCmdYank japan

ステータスラインに表示される実行結果も:TranslateGoogleCmdと同じですが、
putできるようになっています。

コマンドをより便利に使うキーマップ

コマンドを毎回打つのも非効率的なので、私は以下のようなキーマップを使っています。
それぞれ、.vimrcに追加すればいいだけ。

nnoremap tj yiw:TranslateGoogleCmdYank <C-R>"<CR>
nnoremap tr yiw:TranslateGoogleCmdReverseYank <C-R>"<CR>
  • tja押下で、カーソル下の単語の翻訳結果を、append する
nnoremap tja yiw:TranslateGoogleCmdYank <C-R>"<CR>ea<Space><C-R>+<ESC>
nnoremap tra yiw:TranslateGoogleCmdReverseYank <C-R>"<CR>ea<Space><C-R>+<ESC>

補足

TranslateGoogleCmdYank で使用しているrediについては:help redirを参照
また、:help redirだけでは使い方わからないんじゃ!(怒)という人は
こちらのサイトが非常にわかりやすかったです。

Debian/jessieでLeiningenのzsh補完を有効にする

Leiningen のインストールを公式スクリプトで行うと、 leinと書いてTabを押しても、zshgitのように補完してくれません。

Leiningen が Debian package として提供されている Debian/wheezy ならこんなことは起きないんですが、Debian/jessie を使っているのでaptでインストールできない...

そこで解決手順。

1. まず、Githubからファイルをダウンロードする

wget https://raw.githubusercontent.com/technomancy/leiningen/master/zsh_completion.zsh

こんな感じで。

2. zshが読み込んでくれるように名前変更

mv zsh_completion.zsh _lein

3. 適切な場所に移動

sudo cp _lein /usr/share/zsh/vendor-completions/_lein

zshを立ち上げなおすと、望みが叶っているはず。

Tagbarでどの関数内に居るかを知る

背景

vimscreen.cを読んだ(見た)ことがあるでしょうか?

  • 計10701行
  • foldline関数 約1600行
  • その他の関数 お察し。

はっきり言って、タグジャンプした時点で即迷子です。

なので、「いまどの関数の中にいるか」がわかるなにかが欲しい

そこで見つけたTagbar

Tagbarって?

vimプラグインです。
どんなプラグインかは、紹介しているサイトがたくさんあるので省略。

どの関数の中にいるかわかるの?

このプラグイン:TagbarShowTagというコマンドを叩けば、
こんな↓感じにハイライトして教えてくれます。

f:id:shocrunch:20141214074847p:plain

インストール・設定

.vimrcに追加

Neobundle 'majutsushi/tagbar'  " Neobundleでインストール

" tagbar の設定
let g:tagbar_width = 30        " 初期設定はwidth=40なのでちょっと幅とりすぎ。
let g:tagbar_autoshowtag = 1   ":TagbarShowTag を叩かなくても有効にする

しかし、ちょっと難あり

完璧だ!と思ったんですが、いかんせん遅い & 関数限定ではない

  • 遅い:カーソルをおいてから数秒キー操作をやめないと更新されない。
  • 関数限定でない:関数の中でDEFINEマクロが書かれてるとそっちに反応してしまう。

対処法

ステータスラインに現在いる場所のタグを表示するというtipsがhelpにありました。
.vimrcにステータスラインの設定を書き加えるだけでOK

" ステータスラインの参考 %{tagbar#currenttag('[%s]','')} がタグを表示している部分
set statusline=%F%m%r%h%w\%=%{tagbar#currenttag('[%s]','')}\[Pos=%v,%l]\[Len=%L]

お世話になったサイト

vimperatorがないとしんどい。

いまさら vimperator

f:id:shocrunch:20141213024025p:plain

google driveとかを使うととても残念な事になるので、
いままでまじめに使ってませんでした。が、
Shift-ESCで一時的にOffにできるんですもんね(゚д゚)!! こりゃ安心DA!!!

.vimperatorrc貼っときますね

" ~/.vimperatorrc
" google検索を手早くする
noremap s :open<Space>google<Space>
noremap ,s :tabopen<Space>google<Space>

" 検索の大文字小文字を除外
set ignorecase

" ブックマークを Shift-B で開く
noremap B :bmarks!

" 候補選択にて Ctrl-n -> 次へ, Ctrl-p -> 前へ
cmap <C-n> <TAB>
cmap <C-p> <S-TAB>

" gr で一つ前のタブに戻る
noremap gr gT

まだまだ、vimperator使い Lv.1 なので、プラグインとかは入ってません。 Pocketをごにょごにょできたら便利かなーなんて思ってますが、とりあえず保留。

こだわり

  • Ctrl-n,Ctrl-pで候補選択とかはvimで よくあるキーバインドなのでこれじゃないと....
  • noremap B :bmarks!←これを追加しとけば、Shift-bでブックマークを一覧できる。 意外とこれ書いてるサイト見当たらない...(重要ないのか????

vim + drawit + ditaa でテキストダイアグラムを画像に

できること

f:id:shocrunch:20141210230048p:plain
こんな画像をテキストデータから作れる

使うもの

  • vim
  • drawit (vimplugin)
  • ditaa

環境づくり

環境づくりとは言ってもvimでNeobundleが使えること前提

  1. .vimrcNeoBundle 'Drawit'を追加
  2. $ sudo apt-get install ditaa

vimで図を書く

  1. ノーマルモードでおもむろに\diを押下
  2. 線を書くのを辞めたいときは、\ds
  3. 十字キーで線がかける
    1. 空白で上書きたいときはスペースを押下
    2. 線が書きたくなれば、もう一度スペースを押下すればOk
    3. Home, End, PgUp, UgDn キーで斜め線
    4. ^, v, <, >で、上下左右の矢印がかける

詳しくは、vim:help drawitして見てくださしあ

ditaaでアスキーアートを画像に

テキストデータ、出力ファイル名の順に与えて上げればOK

$ ditaa inputfile outputimage.png
-sオプションで画像サイズを何倍にするか?などのオプションがいろいろありますが、詳細は下記の公式へ

参考URL

余談

"テキストダイアグラム"なんて言葉をタイトルに書いてみたけど、伝わりそうで伝わらなさそうな言葉だ…
検索してもそんなことば出てこないし笑