最近発見した方法。 基礎知識 ユーザ定義コマンドを定義する際、-range= 引数を使うことで :[range]Command のように [range] を受け取ることができるようになる。 指定の仕方で無指定の場合のデフォルト値が変わり、-range で現在行、-range=% でファイル全体、-range=N で N 行目になる。 入力された行番号は、<line1> <line2> で取れる。 :command -range=% RangeTest echo <line1> <line2> " バッファが10行だったとすると… :RangeTest => 1 10 :%RangeTest => 1 10 :2,5RangeTest => 2 5 問題点 ユーザが範囲を無指定で実行したのか、デフォルト値と同じ範囲を指定したのかどうかが判断できない。 解決策 以下のようにする。 functi