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の拡張が可能になった

保存しなくてもプレビュー出来るようになった

previm

今までは保存時にのみブラウザのプレビュー内容を更新していました。
最新版ではもう少しリアルタイムに近いタイミングで変更が反映されます。

  • 保存時
  • 挿入モードを抜けた時
  • ノーマルモードで少しの間(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ファイルを独自定義できることになったので次のようなことが可能になりました。

  • デフォルトのCSSを辞めて自分のCSSだけを適用したい
  • デフォルトの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とタイポした時に怒らせるようにした

ターミナルで作業しているときに、lsksとタイポすることが増えた。
単純に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% 

なんということでしょう。

gitでpecoを使ってチェックアウトする

背景

チケット番号-hoge-featureみたいなブランチ名がたくさん出来上がる。
普段のコマンドとかではzshのTAB補完を使うのだけど、チケット番号だとすぐに思い出せない。
補完一覧を出したあとで「これだ」って感じで打つ必要があった。
これがめんどい。あと数字だと打ちにくい。

対応

pecoを使ってチェックアウトするaliasを定義した。

$ git config --global alias.pco !git checkout `git branch | cut -b 3- | peco`

だいぶ楽になった。

zsh - localで配列を宣言するときは代入を同時にしてはいけないっぽい

zshで少しハマったことのメモです。

環境

/Users/kanno% zsh --version
zsh 5.0.5 (x86_64-apple-darwin13.0.0)

zshの配列について

こちらの記事が参考になります。

zsh の配列操作の基本から応用まで

ハマったこと

まずはグローバルな変数宣言で試す

/Users/kanno% () { ary=(1 2); echo $ary }
1 2

これはよし。
なお上記の書き方は無名関数の即時実行です。

zsh で無名関数を作る

変数をローカル宣言にする

/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

原因

わかりません