このex
コマンドは$
次に進みます。最初最後の行の文字です。したがって、リバース検索を実行すると、現在の行はスキップされます。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
はい)。
ビーム7.3を使用してください。
答え1
ex
のように見える最後line -ex -c '1' -c '?bar' -c 'visual' test.txt
カーソルを最後の行に移動します。
答え2
私のバージョンでは、戻る検索を開始しているようです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
答え3
別の解決策:
ex -c '?bar' -c '/bar' -c 'visual' test.txt
bar
デフォルトでは、 '?bar' はファイルの最後の行から始まる文字列を検索しますが、最後の行内では検索しません。したがって、bar
最後の行の最初の行をクリックすると、正しく作成され、/bar
最後のbar
行に戻ります。
最後の行に文字列が含まれていないと失敗しますbar
。