伏字検索をメンテナンス
1年5か月ぶりに伏字検索をメンテナンスしました。
データベース更新 214万語をインデックス化
Vimで編集中のRubyスクリプトを実行する
Vimで編集中のテキストの中にRubyスクリプトを書いて実行する
こんな感じでスクリプトを書いて
10.times{|i| print "array[#{i}] = ;\n" }
↑の文字列をVisualモードで選択し、eval.rbを呼び出すと
:'<,'>!ruby c:\tools\vim74-kaoriya-win64\eval.rb
選択した文字列がRubyスクリプトとして実行されて結果が埋め込
まれる。
array[0] = ; array[1] = ; array[2] = ; array[3] = ; array[4] = ; array[5] = ; array[6] = ; array[7] = ; array[8] = ; array[9] = ;
eval.rbの内容
#!/usr/bin/ruby -Ks body = $stdin.read eval body
Vimで一発Grep
Vimは超強力なエディタだけどgrepするのが辛いと思ってた。
:vimgrep hogehoge *.[ch]
やっぱり辛い。
$VIM/vimrc
" grでカーソル下のキーワードをvimgrep
nnoremap <expr> gr ':vimgrep ;\<' . expand('<cword>') . '\>; **/*.[ch] \| cw <CR>' nnoremap <f2> :cprevious<CR> nnoremap <f3> :cnext<CR>
今のところ対象は.cと.hだけ。
これでいつでもgrでgrepできる。
grepしたら F3で次を検索、F2で前を検索
上位のフォルダで検索かけちゃったとき延々とgrepし続けちゃうのは嫌だなぁ..
VimからRubyを呼び出して電卓代わりにする
Vim上で計算をしたいけど
電卓を立ち上げるのが面倒くさい。
4+2=
というテキストがあったら、数式とみなして
4+2=6
となってほしい。
#!/usr/bin/ruby -Ks body = $stdin.read body.each_line{|line| line.chomp! line.gsub!(/=(.*)/,"") if line.length > 0 print "#{line}=" ans = eval line if line.match(/0x/) printf "0x%x",ans elsif line.match(/0b/) printf "0b%b",ans else print "#{ans}" end end print "\n" }
VimのVisualモードで
4+2=
4-2=
4*2=
4%2=
0x48+0x72=
を選択して
:'<,'>!ruby c:\tools\vim74-kaoriya-win64\calc.rb
をすると
4+2=6
4-2=2
4*2=8
4%2=0
0x48+0x72=0xba
となり、電卓要らず。
Vim単体でも: C-r = 4 + 2 で計算できるけど
これだと複数の計算も一気にできて便利。
しくみ。
Visualモードで選択した行が、calc.rbの
標準入力に入るのでevalして結果を標準出力するだけ。
シンプルな仕組みなので、ほかにもいろいろできそう。
秀丸からgvimに乗り換えたときの個人的なメモ
本体とmigemoとctagsとneocomplcacheまで。
ダウンロード
本体
http://www.kaoriya.net/software/
Windows 32bit版 ダウンロード
ctags
http://hp.vector.co.jp/authors/VA025040/
C/Migemo for windows 32bit
http://www.kaoriya.net/software/cmigemo/
プラグイン neocomplcache
https://github.com/Shougo/neocomplcache.vim
neocomplcache.vim-master.zip
インストール
vim74-kaoriya-win64-20160305.zip
ec58j2w32bin.zip
cmigemo-default-win64-20110227.zip
展開してどこかに置く
vim74-kaoriya-win64-20160305.zip
→ C:\tools\vim74-kaoriya-win64
ec58j2w32bin.zip
→ C:\tools\vim74-kaoriya-win64
cmigemo-default-win64-20110227.zip
→ C:\tools\vim74-kaoriya-win64
C:\tools\vim74-kaoriya-win64_\dict\cp932\ の内容を
C:\tools\vim74-kaoriya-win64_\dict\ にコピー
neocomplcache.vim-master.zip
→ $VIM/runtime/
gvimrc
$VIM/gvimrcに追記
set number
set nowrap
syntax offset tabstop=4
set shiftwidth=4
set noexpandtabset listchars=eol:$,tab:>\
set migemo
set migemodict=C:\tools\vim74-kaoriya-win64\dict\migemo-dict
set clipboard+=unnamedset showtabline=2
nnoremap / g/
vimrc
$VIM/vimrcに追記
set runtimepath+=$VIM/runtime
set runtimepath+=$VIM/runtime/plugin/" neocomplcache
let g:neocomplcache_enable_at_startup = 1"挿入モード終了時にIME状態を保存しない
inoremap
inoremap"IMEモード固定
inoremapautocmd QuickfixCmdPost * copen
set backupdir=$VIM/backupset autochdir
set wrapscan"nnoremap
:!ctags -R
nnoremap:!start ctags -R " grでカーソル下のキーワードをvimgrep
nnoremapgr ':vimgrep ;\<' . expand(' ') . '\>; **/*.[ch] \| cw ' nnoremap
:cprevious
nnoremap:cnext " Vim終了時に現在のセッションを保存する
au VimLeave * mks! c:\temp\Session.vimsource c:\temp\Session.vim
ハマったところ
Migemoが動かない。
辞書のパス指定が間違っていた!migemo-dictがファイル名だと思っていなかった。
neocomplcachが動かない。
gvimrcに設定をしていた。vimrcに設定する必要があった。