Emacs 24.3区分大小写搜索失败,C-s C-s“再次搜索”

时间:2014-03-27 12:27:04

标签: search emacs case-sensitive

我的问题是:

  • case-fold-search设置为t(不区分大小写)。
  • C-s thisisaverylongword(搜索字符串)。
  • Emacs找到ThisIsAVeryLongWord(正确)。
  • 退出增量搜索。
  • case-fold-search设置为nil(区分大小写)。
  • C-s C-s (再次搜索上一个字符串)。
  • Emacs仍然找到ThisIsAVeryLongWord错误)。

要让case-fold-search正常工作,我必须重新输入一个新命令。 有没有办法避免这种情况?

2 个答案:

答案 0 :(得分:2)

这不是我发生的事情。请提供emacs -Q的明确食谱。

这就是我所看到的:

emacs -Q
M-x set-variable RET case-fold-search RET t RET
C-s ; searches insensitively
M-x set-variable RET case-fold-search RET nil RET
C-s ; searches sensitively

<强>更新

抱歉,我错过了你只是使用 C-s C-s 。这不仅重用相同的搜索字符串,而且重用相同的搜索状态。只需使用 M-e 来“编辑”最后一个搜索字符串,并且不对其进行任何更改(只需再次点击 C-s )。这将获得case-fold-search的最新值。

IOW:

emacs -Q
M-x set-variable RET case-fold-search RET t RET
C-s ; searches insensitively
M-x set-variable RET case-fold-search RET nil RET
C-s M-e C-s  ; searches last search string sensitively

如果您已经感到困惑并且不想冒更进一步的混淆,请忽略这一点。 ;-)如果没有,可能会有所帮助。)

如果您使用库Isearch+,那么您可以选择w / r / t如何处理布尔选项。

使用vanilla Isearch,任何即时切换都只影响当前的Isearch调用(即,退出Isearch并再次启动它将恢复为保存的选项值的行为,无论可能是什么)。

使用 Isearch + ,布尔选项 isearchp-toggle-option-flag 可控制切换行为的命令是否也切换关联的用户选项。对于此类命令,前缀参数将翻转行为,就像暂时切换isearchp-toggle-option-flag一样。目前,此功能适用于切换 M-c (区分大小写)和 M-s i (匹配隐藏文本)。

您可以在Isearch期间切换选项isearchp-toggle-option-flag M-s v

答案 1 :(得分:2)

我不会手动更改case-fold-search变量。以下是我处理区分大小写和不敏感搜索的方法:

  • C-s thisisaverylongword
    • 默认情况下不区分大小写,因此找到ThisIsAVeryLongWord(正确)
  • RET 退出isearch
  • C-s C-s 再次搜索相同的单词(此时它仍然不区分大小写)
  • M-c 切换有效搜索的区分大小写
    • 现在ThisIsAVeryLongWord不匹配(正确)
    • M-c 调用isearch-toggle-case-foldabo-abo in the comments
    • 标识的功能相同