指定した間隔で行頭へ文字列を挿入する

2011/10/05未分類import
23行目から35行目までの範囲で,24行目から5行ずつ\tcc\tという文字列を行頭に挿入.
:23,35g/^/ if (line('.')- 23)%6|s/^/\tcc\t/
あるいは明示的に0以外と書きたければ
:23,35g/^/ if (line('.')- 23)%6>0|s/^/\tcc\t/
これを削除にしたければ,パイプ以下をdとする.
:23,35g/^/ if (line('.')- 23)%6|d
要は,計算式「(line('.')- 23)%6」が0でない場合に処理を行うという操作です.
ただし,このdを使ったコマンドは失敗することがあるようなので,
行頭などにフラグの文字列を一度入れて,改めてその行を削除するのがより確実だと思います.
:23,35g/^/ if (line('.')- 23)%6|s/^/delete/
:23,35g/delete/d

BonTsDemuxをLinux(Debian squeeze)で使う

2011/08/21未分類import
BonTsDemuxをLinux(Debian squeeze)で使うことができます.
というか多くの人は苦もなくインストールして使っているでしょう.
ですが私は例によってつまづいたのでメモしておきます.

Wineをインストールする

WineはLinuxにWindowsのような挙動をさせてWindowsのプログラムをLinux上で実行できるようにするプログラムです.
これをインストールします.squeeze標準のパッケージで問題ありませんでした.

BonTsDemuxを入手して適当な場所に置く

こちらのリンクからBonTsDemuxを入手して,Linux機の適当な場所に保存します.

Microsoft Visual C++ 2008 再頒布可能パッケージ (x86) を入手しインストールする

BonTsDemuxの実行にはVisual C++のランタイムが必要なのでインストールします.
http://www.microsoft.com/downloads/ja-jp/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF

ダウンロードしたファイルvcredist_x86.exeをcabextractというコマンドを使って展開します.
解凍後にinstall.exeあるいはsetup.exeというプログラムが出現するはずですので,
それを実行する(ダブルクリックでできるはず)とインストールできます.

BonTsDemuxを実行する

後はBonTsDemuxを実行するだけです.私の環境ではドラッグアンドドロップは有効になりませんでしたが
それ以外は問題なく動作しているようです.
作成したファイル(5.1ch音声のTSを2ch音声のMPEG2-PSに変換したもの)も
Windowsで変換したものと同様に音ずれやノイズ,再生の可否に問題はありませんでした.

Gvimで印刷する

2011/07/15未分類import

範囲を指定せずに印刷する

:hardcopy
とたたくか,メニューから印刷を行う.

範囲を指定して印刷する

56行目から,101行目までを印刷する場合次のようにコマンド入力する.
これを覚えていれば,非常に便利だ(個人的には).
:56,101hardcopy
Windows版で動作確認をしたが,普通に他の環境でも利用できるだろう(プリンタの設定がされていればだが).

ヘッダの編集

例えば次のような設定をしておくと,印刷時刻,ファイル名,ページ,作成者名がわかって検索性が高いだろう.
:set printheader=%{strftime('%Y/%m/%d\ %H:%M')}\ %t\ page:%N\ \ \ \ Hirosugu\ Hirayama

GNU sed をWindowsで使う

2011/06/29未分類import

GNU sed をWindowsにインストールする.

sedは主にUNIX系のOSで置換操作をするのに使われるプログラムですが,
バッチファイルと連携することで,Windowsでも同様の作業を行うことができます.
ただし,自分でsedをインストールする必要があるためそこから解説します.

sed for Windowsからバイナリをダウンロードして実行してみたところ,dllがないから動かないとエラーが出ました.
このため表示されたライブラリを探していく作業を経ました.
sed-4.2+alpha.zipはライブラリを集めて,動作する状態で再圧縮をかけたものです.
バージョンは固定ですが必要に応じて利用ください(GNUライセンスなので再配布は可能なはずですのでおいておきます.).
解凍したフォルダ内のbinに実行ファイルとかき集めたライブラリがあるので,これをパスの通っている場所に置きます.
私はTeXをインストールしたフォルダに古いsed(有用なオプションが使えないバージョン)があったので,そこに上書きする形で置きました.

バッチファイルを任意のエディタで編集できるようにする

バッチファイルは使用頻度の高いテキストファイルです.
上のsedを使うにしてもバッチファイルで使うと他のプログラムと連携する場合に便利だと思われます.
ですがいざ編集をしようと右クリックメニューで編集を選択すると,
開かれるのはメモ帳というのが残念なデフォルトです.
バッチファイルを開くプログラムは,レジストリエディタ(regedit.exe)を使って変更可能です.
regeditを起動したあと,HKEY_CLASSES_ROOT→batfile→shell→edit→command
と進んで,commandの既定をダブルクリック(あるいは右クリックで修正を選択する)します.
そして,そこにあるメモ帳のパスを好きなエディタのものに変更すれば完了です*1
C:\Software\vim73-kaoriya-win32\gvim.exe "%1"
私は上のようにvimを使っています.この際,「"%1"」を「%1」とすると,
半角スペースが入ったパスのファイルが編集できないので注意が必要です.

*1 : ちなみにデフォルトは「%SystemRoot%\System32\NOTEPAD.EXE %1」でした.

バッチファイルを使って文字列の置換を行う

以下のような内容のバッチファイル"ikkatsu.bat"を作成します.
for %%A in (%1) do sed -i -e "s/てすと/#てすと/g" %%A
for %%A in (%1) do sed -i -e "s/Km/km/g" %%A
for %%A in (%1) do sed -i -e "s/,/	/g" %%A
この"ikkatsu.bat"は次のように実行することで,
拡張子がcsvのファイル内の対象文字列を一括で置換してくれます.
ikkatsu.bat *.csv
必要に応じて,内容を変更すれば,様々な要求に応えられるでしょう.

2024年12月追記

この記事は2011年のものです.現在も(恐らく)上の内容でsedを使用可能ですが,
Windows 10や11ではWSL(Windows Subsystem for Linux)が使えるので,そちらをセットアップし,
WSL上のLinuxでsedをはじめとするUNIX系コマンドやシェルスクリプトを駆使して処理した方が便利な場合が多いと思います.
筆者は最近この記事の方法でsedを使っていません.