搜索了一会儿,我明白了 C-M-s 下可以 C-q C-j 搜索空行。 但是我想用 Swiper/Swiper isearch 搜索空行,有人知道该怎么搜索的吗?我试了一下 C-q C-j 没用,\n 也不行,会搜索成 n。 我现在是用 ivy–regex-plus 补全风格的。
先谢谢了。
搜索了一会儿,我明白了 C-M-s 下可以 C-q C-j 搜索空行。 但是我想用 Swiper/Swiper isearch 搜索空行,有人知道该怎么搜索的吗?我试了一下 C-q C-j 没用,\n 也不行,会搜索成 n。 我现在是用 ivy–regex-plus 补全风格的。
先谢谢了。
不知道有个东西叫正则?
谢谢解答……我知道正则。\n不也是正则的一部分吗。
你这个方式只能搜索一个空行(其实本质上只是一个空行的一种workaround),搜索不了两个空行(不能复合搜索多个空行)……其实我的需求是搜索多行空行(比如说两个空行),不过我在首楼没说清楚我也有锅。
因为mini-buffer中文本输入适用不同而规则https://www.gnu.org/software/emacs/manual/html_mono/emacs.html#Inserting-Text
猜一下, 你要解决的问题, 定位空行的下一步, 只有删除和替换操作,
regex-replace是更好的选项.
非要定位空行用grep.
不你不知道,\n
是转义字符,意思是换行符。和正常的字符 abcd123 之类并无区别。
好吧,是我不熟悉elisp, 应该是^\s-*$
,这就可以了
注:
In this case
\s-
is the syntax class (typeC-h s
to see your buffer’s syntax table) for whitespace characters. The*
meta-character, in case you are not a regexp person, means zero or more of the preceding character.
From Removing blank lines in a buffer - Mastering Emacs
那同样用正则表达多行 ^\s*$
,不过貌似swiper
不支持转义符\s
?得去看看swiper
细节
在函数 swiper–candidates 中 会调用 swiper–line 函数
他好像是将一行作为了一个candidate
如果你想搜索两个连续的空白行 肯定是不可能的
除非你实现自己的 swiper–line 将多个连续的空白行看做是一个(有点难 也不是不可能)