exと最後に一致する行を見つける方法は?

exと最後に一致する行を見つける方法は?

この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

関連情報