CUI Vim で最高の molokai を味わう。
黒の見やすい配色がいい
テキストエディタの背景は暗いほうが個人的には好みなので、
以前までは、GUI Vim で colorscheme desert
使っていました。
しかし、term と行き来することが多いので CUI Vim へ転換。
そしたら、CUI Vim のdesert
が、まあ残念。
なので、大人気 colorscheme molokai
を入れました。
molokai なら、ちょっと設定すれば CUI Vim でも最高の colorscheme が味わえます。
詳しくは GitHub をどうぞ
https://github.com/tomasr/molokai
インストール
NeoBundleでもちろん入ります。
NeoBundle 'tomasr/molokai'
インストールしたらあとは、:colorscheme molokai
を叩くもよし、.vimrc
に書いてデフォルト設定にするもよし
colorscheme 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の翻訳結果をクリップボードへ入れる
翻訳結果は使いたい
私のような英語がスラスラ読めない人は vim で google翻訳 する。
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
を押しても、zsh
がgit
のように補完してくれません。
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でどの関数内に居るかを知る
背景
vimのscreen.c
を読んだ(見た)ことがあるでしょうか?
- 計10701行
- foldline関数 約1600行
- その他の関数 お察し。
はっきり言って、タグジャンプした時点で即迷子です。
なので、「いまどの関数の中にいるか」がわかるなにかが欲しい
そこで見つけたTagbar
Tagbarって?
vimのプラグインです。
どんなプラグインかは、紹介しているサイトがたくさんあるので省略。
どの関数の中にいるかわかるの?
このプラグインの:TagbarShowTag
というコマンドを叩けば、
こんな↓感じにハイライトして教えてくれます。
インストール・設定
.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
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をごにょごにょできたら便利かなーなんて思ってますが、とりあえず保留。
こだわり
vim + drawit + ditaa でテキストダイアグラムを画像に
できること
こんな画像をテキストデータから作れる
使うもの
- vim
- drawit (vimplugin)
- ditaa
vimで図を書く
- ノーマルモードでおもむろに
\di
を押下 - 線を書くのを辞めたいときは、
\ds
- 十字キーで線がかける
- 空白で上書きたいときはスペースを押下
- 線が書きたくなれば、もう一度スペースを押下すればOk
Home
,End
,PgUp
,UgDn
キーで斜め線^
,v
,<
,>
で、上下左右の矢印がかける
詳しくは、vimで:help drawit
して見てくださしあ
ditaaでアスキーアートを画像に
テキストデータ、出力ファイル名の順に与えて上げればOK
$ ditaa inputfile outputimage.png
-s
オプションで画像サイズを何倍にするか?などのオプションがいろいろありますが、詳細は下記の公式へ
参考URL
- drawit
- ditaa
- 公式:http://ditaa.sourceforge.net/
- 日本語が読みたい人は:ditaa で遊ぶ | Amrta
余談
"テキストダイアグラム"なんて言葉をタイトルに書いてみたけど、伝わりそうで伝わらなさそうな言葉だ…
検索してもそんなことば出てこないし笑