![如何找到与 ex 最后匹配的行?](https://linux22.com/image/32718/%E5%A6%82%E4%BD%95%E6%89%BE%E5%88%B0%E4%B8%8E%20ex%20%E6%9C%80%E5%90%8E%E5%8C%B9%E9%85%8D%E7%9A%84%E8%A1%8C%EF%BC%9F.png)
该ex
命令$
导航至第一的最后一行的字符。因此,在进行向后搜索时,它会跳过当前所在的行。如何使用 导航到最后一个字符ex
,或者搜索最后一次出现的正则表达式?
例子:
$ cd -- "$(mktemp --directory)"
$ printf '%s\n' foo bar foo bar > test.txt
$ ex -c '$' -c '?bar' -c 'visual' test.txt
此时,光标位于第 2 行而不是预期的第 4 行。使用ex -c '?bar' -c 'visual' test.txt
产生相同的结果,即使我希望它在环绕时找到最后一行(vim
确实)。
使用 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
最后一行。
当最后一行不包含 string 时,这将失败bar
。