Re: previmでプレビューのタイミングがよりリアルタイムになったりcssを定義できるようにした
前回の更新 で問題がいくつか報告されました。
それを受けて考え直し、以下のように仕様を変えました。
デフォルトではリアルタイムにプレビューしない
保存時のみプレビューを更新します。
これまでと同じです。
挿入モードを抜けてもプレビューは更新されません。
リアルタイムにする場合はg:previm_enable_realtimeを1にする
前回の記事では以下のように説明しました。
g:previm_enable_realtime
はデフォルトで1- リアルタイムプレビューを無効にしたければ明示的に0を設定すること
今回の修正で以下のようになりました。
g:previm_enable_realtime
はデフォルトで0- リアルタイムプレビューを有効にしたければ明示的に1を設定すること
おまけ
あと前回の修正ではプラグイン側でupdatetime
を変えていました。
リアルタイムを有効にした場合、updatetimeに依存して更新されるためです。
updatetimeはVimのデフォルトで4000(4秒)です。
updatetimeを小さく設定しているユーザーなら問題ないのですが、今回の用途ではちょっと遅いなあと思っていました。
ただ「ユーザー側でupdatetime変えればいいだけか」と考え、書き換えるのを辞めました。
例えばこんな設定でリアルタイムプレビューの間隔を早められる(はず)。
関数に切り出してtry-catchしてってのがお行儀良いのだろうか。
その辺りは良く分かっていない。
" .vimrcに書く。この例では.markdownの場合のみ augroup Markdown autocmd! autocmd BufEnter *.markdown let s:updatetime_origin = &updatetime | let &updatetime = 100 autocmd BufLeave *.markdown let &updatetime = get(s:, 'updatetime_origin', &updatetime) augroup END
previmでプレビューのタイミングがよりリアルタイムになったりcssを定義できるようにした
previmの更新情報です。
- 保存しなくてもプレビュー出来るようになった
- CSSの拡張が可能になった
保存しなくてもプレビュー出来るようになった
今までは保存時にのみブラウザのプレビュー内容を更新していました。
最新版ではもう少しリアルタイムに近いタイミングで変更が反映されます。
- 保存時
- 挿入モードを抜けた時
- ノーマルモードで少しの間(0.5秒くらい)何も押さなかったとき
- 挿入モードで少しの間(0.5秒くらい)何も押さなかったとき
この挙動が嫌な人はvimrcに設定を書くことで以下のタイミングに変更出来ます。
- 保存時
- 挿入モードを抜けた時
(help: g:previm_enable_realtime
)
" .vimrc let g:previm_enable_realtime = 0
補足
TextChanged/TextChangedIイベントを使えば、タイミング的にはもっとリアルタイムに出来ます。
が、そこまで頻繁に動かすと環境によってはCPU負荷が高くなりそうなので辞めました。
(特にreStructuredTextの場合rst2html.pyを動かすので結構つらい)
リアルタイムに近いほど感動は強いですが、実用的にはそこまで必要ないだろうという判断もあります。
CSSの拡張が可能になった
PrevimはデフォルトでGithubチックなCSSを適用しています。
今回CSSファイルを独自定義できることになったので次のようなことが可能になりました。
(help: g:previm_disable_default_css
)
" .vimrc " デフォルトのCSSを無効にする let g:previm_disable_default_css = 1
(help: g:previm_custom_css_path
)
" .vimrc " デフォルトのCSSに加えて独自のCSSも適用する let g:previm_custom_css_path = '/Users/kanno/tmp/some.css' " .vimrc " デフォルトのCSSを使わず、独自のCSSのみ適用する let g:previm_disable_default_css = 1 let g:previm_custom_css_path = '/Users/kanno/tmp/some.css'
lsをksとタイポした時に怒らせるようにした
ターミナルで作業しているときに、ls
をks
とタイポすることが増えた。
単純にcommand not foundって言われるのもつまらないので、適当なksコマンドを定義した。
利便性を考えるならksをlsのaliasにすればいいけど、zshの勉強もしようと思ってコマンド定義にした。
# .zshrcに以下を記述 function ks() { local -a arts arts=( "ヽ(`Д´#)ノ ムキー!!" "(#・∀・)ムカッ!!" "(# ゚Д゚) ムッ!" "(# ゚Д゚) ムッカー" "(#゚Д゚) プンスコ!" "(#゚Д゚)y-~~イライラ" "(#^ω^)ビキビキ" "( ゚д゚)、ペッ" "(゚Д゚)ゴルァ!!" ) local rnd=$RANDOM local max=`expr $#arts - 1` local i=`expr $rnd % $max` echo $arts[$i] }
before
/Users/kanno% ks zsh: command not found: ks
after
/Users/kanno% ks (# ゚Д゚) ムッカー /Users/kanno% ks (#^ω^)ビキビキ /Users/kanno%
なんということでしょう。
zsh - localで配列を宣言するときは代入を同時にしてはいけないっぽい
zshで少しハマったことのメモです。
環境
/Users/kanno% zsh --version zsh 5.0.5 (x86_64-apple-darwin13.0.0)
zshの配列について
こちらの記事が参考になります。
ハマったこと
まずはグローバルな変数宣言で試す
/Users/kanno% () { ary=(1 2); echo $ary } 1 2
これはよし。
なお上記の書き方は無名関数の即時実行です。
変数をローカル宣言にする
/Users/kanno% () { local -a ary=(1 2); echo $ary } (anon): unknown file attribute
!?
値を文字列にしてみる
/Users/kanno% () { local -a ary=(a b); echo $ary } (anon): number expected
!?!?
解決
宣言と代入は分ける
/Users/kanno% () { local -a ary; ary=(1 2); echo $ary } 1 2 /Users/kanno% () { local -a ary; ary=(a b); echo $ary } a b
原因
わかりません