Vim Tips
Vimで日付をunixtimeに置換する
jsonの日付データをyyyy-mm-dd hh:mm:ssからunixtimeに置換する方法
code:json
{
"create_at": "2021-01-02 15:10:13",
"update_at": "2021-03-02 21:10:00"
}
code:vim
:%s;\("\d\+-\d\+-.*"\);\=strptime("\"%F %T\"", submatch(1));g
もしくは
code:vim
:%s;"\d\+-\d\+-.*";\=strptime("\"%F %T\"", submatch(0));g
解説
Vimでは:substituteで\=を使うと、式を評価できる
strptime({format}, {string})は{format}な{string}をunixtimeに変換してくれる
味噌はsubmatch({nr})で、こいつは:substituteまたはsubstitute()内のみ使える関数で、{nr}マッチ部分を返す
選択した範囲内での検索
/\%V{world}\%Vでビジュアルで選択した範囲内の{world}を検索できる
詳細はヘルプの :h /\%Vを参照
denopsプラグイン開発のTips
起動時にrtpにプラグインディレクトリを追加してdenopsにロードさせる方法
code:sh
# カレントディレクトリがプラグインディレクトリの場合
nvim -c "set rtp^=$PWD"
VimをUbuntuでビルドする
code:sh
sudo apt install libxmu-dev libncurses-dev
sudo make distclean && ./configure --with-x --enable-multibyte --enable-fail-if-missing
make && sudo make install
検索で見つかった行を別のバッファに追記
code:vim
:g/{word}/call appendbufline(buf, "$", trim(getline(".")))
マルチバイト文字を配列に変換
code:vim
:echo split("こんにちは", "\\zs")
特定のバッファに対してコマンドを実行する
k8s://*のバッファに対して:eを実行する
code:vim
function! s:getk8sbuflist() abort
let buflist = []
for i in range(tabpagenr('$'))
const bufnrlist = tabpagebuflist(i + 1)
for bufnr in bufnrlist
let name = bufname(bufnr)
if name =~# '^k8s:\/\/^/\+' let winidlist = win_findbuf(bufnr)
if len(winidlist) > 0
call add(buflist, {'bufnr': bufnr, 'bufname': name, 'winid': winidlist0}) endif
endif
endfor
endfor
return buflist
endfunction
function! s:update_k8s_buffer(timer) abort
for buf in s:getk8sbuflist()
call win_execute(buf.winid, 'e', 1)
endfor
endfunction
" call timer_stop(g:k8s_update_timer_id)
let g:k8s_update_timer_id = timer_start(2000, function('<SID>update_k8s_buffer'), {'repeat': -1})
ビルド
code:sh
# Vim
cd src
sudo make distclean
# mac
# XQuartz があるとX11が有効になってしまうため、macOSのクリップボードと連携されなくなるので --without-x をつける
./configure --enable-fail-if-missing --without-x
# linux
./congigure --with-x --enable-multibeyte --enable-fail-if-missing
make
sudo make install