ハングアップの日々

2012年 12月分

2012/12/31

memo

2012/12/26

memo

2012/12/17

memo

2012/12/07

memo

2012/12/06

less.vim/less.sh で文字コードを指定して標準入力を開く

 Vim を less の代わりとして使える less.vim/less.sh というスクリプトで、標準入力の文字コードを指定する方法を調べてみた。
 文字コードの自動判別が間違った場合などに、Vim でファイルの文字コードを指定して開き直すには、通常以下のようにすればよい。

:e ++enc=iso-2022-jp

しかし、標準入力を読み込む場合は、:e による再読み込みができない。autocmd を使って、標準入力からの読み込み直前に fileencodings を指定の文字コードに固定してしまうのが良さそうである。なお、less.sh に引数を指定した場合、標準入力から読み込むためには - の指定が必須である。

$ foo bar | less.sh --cmd 'autocmd StdinReadPre * set fileencodings=iso-2022-jp' -

あるいは、短縮形を使って以下のようにする。

$ foo bar | less.sh --cmd 'au StdinReadPre * se fencs=iso-2022-jp' -

日本語ならば、fencs には、utf-8, cp932, euc-jp, iso-2022-jp などを指定することになるだろう。
しかし日本語に限定するなら、nkf 等を使って文字コードを utf-8 にでも変換して読み込ませた方が楽だ。

$ foo bar | nkf -w8 | less.sh

2012/12/03

memo


Copyright (C) 2012 K.Takata