swiper对行的过滤

比如一个 org-mode 的文件

我如何只得到包含 ~foo bar~ 的行(在我不输入任何任何正则的时候 )

并且允许我继续用输入做搜索

再比如一个java文件

我如何只在字符串中搜索

Occur?

C-c C-o 然后继续C-s?

把选区/光标所在内容当作默认输入:

  • thing-at-point

    emacs-helm-swoop-region

  • region

    emacs-helm-swoop-region


@casouri Occur 能编辑搜索关键字吗?

occur不行,deadgrep好像是可以的。


我觉得楼主的意思是,首先搜索所有foobar,收集到一起显示,然后再搜索其他字符:

首先搜索foobar,然后搜索kuma

(点击打开图片会清晰一点)

有一个命令 ivy-restrict-to-matches, 默认绑定到 S-SPC, 让你能够在已有的匹配中再搜索.

3 个赞

就是你这个意思

但swipe能在移动上下按键的时候跳转

我不仅是要搜索 更要他的快速跳转

我好像懂了,color-rg这种么?

https://github.com/manateelazycat/color-rg

我给color-rg提交过代码的

那你想要的效果到底是什么样的啊,说半天还是没懂。要是只是想搜索“foobar + kuma”的话直接swiper foobar kuma就行。但我觉得你说的应该不是这种。

这个 样子 的

想不到不用正则的方法,字符串可能是多行的,那样的话中间的行就不包括引号,但还算在字符串里。(用正则也想不到

(info “(elisp)Motion and Syntax”)

搜索语法表就可以知道哪个是字符串了

这种功能最好要整合特定语言的 lexer。然而就 Emacs 这種不用正则也沒別的可用。

我只需要搜索当前buffer 而不是整个目录中的字符串

我觉得楼上 @ YangZhao11 就符合楼主的需求啦。

先swiper输入: foo bar。

然后按S-spc。

然后就继续搜?

谢谢

这个应该算是满足了80%的需求

但如果我想要只让他显示 “匹配正则的部分”, 而不是一整行的时候又该怎么做呢?

C-o m 切换match 方式?

这是什么意思呢?能举个例子吗?

比如一个java文件的buffer 我只想搜索字符串中的内容 并让swiper的minibuffer也只是显示字符串的内容

再比如一个org文件 我经常用 =xxxxxx= 来高亮某一段文字 我也只是想让swiper只显示 两个“=”之间的内容