ex
コマンド$
は、最後の行のfirst文字に移動します。したがって、逆方向検索を実行すると、現在表示されている行がスキップされます。 ex
を使用して最後の文字に移動する方法、または正規表現の最後の出現箇所を検索するにはどうすればよいですか?
例:
$ cd -- "$(mktemp --directory)"
$ printf '%s\n' foo bar foo bar > test.txt
$ ex -c '$' -c '?bar' -c 'visual' test.txt
この時点で、カーソルは4行目ではなく2行目にあります。 ex -c '?bar' -c 'visual' test.txt
を使用すると、折り返したときに最後の行が見つかると期待していても、同じ結果が得られます(vim
はそうします)。
Vim7.3の使用。
ex
はlast行から始まるようです--ex -c '1' -c '?bar' -c 'visual' test.txt
カーソルを最後の行に移動します。
私のバージョンのex
では、$+1?...
は後方検索を開始しているように見えます後最後の行:
sh$ ex -version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jul 12 2010 12:49:33)
sh$ ex -c '$+1?bar' -c visual test.txt
別の解決策:
ex -c '?bar' -c '/bar' -c 'visual' test.txt
デフォルトでは、「?bar」はファイルの最後の行から文字列bar
を検索しますが、最後の行の文字列は検索しません。したがって、最後の行から最初のbar
を押すと、/bar
正しくして、最後の行のbar
に戻ります。
最後の行に文字列bar
が含まれていない場合、これは失敗します。