使用helm导航文件

时间:2014-09-14 14:50:53

标签: regex emacs emacs-helm

我正在尝试使用helm设置一个函数来按照以下建议导航beamer文件:“http://blog.jenkster.com/2013/10/a-tip-for-navigating-clojure-files-in-emacs.html”。我试过了:

(defun helm-beamer-headlines ()
  "Display headlines for the current Beamer file."
  (interactive)
  (helm-mode t)
  (helm :sources '(((name . "Beamer Headlines")
                    (volatile)
                    (headline "^\\s\|^\\f")))))

仅显示以\ f和\ s开头的行(对应于分段和帧命令),而正则表达式与emacs regexp搜索和helm-occurrence一起使用时,我得不到M-x helm-beamer-headlines的匹配。< / p>

我尝试过的最小文件是:

\documentclass{beamer}
\begin{document}
\section{A}
\subsection{Aa}
\frame{\frametitle{}
\begin{enumerate}
\item one
\item two
\end{enumerate}
}
\subsection{Ab}
\frame{\frametitle{}
\begin{align*}
\alpha&=\beta
\end{align*}
}
\section{B}
\subsection{Ba}
\frame{\frametitle{}
\includegraphics[width=\textwidth]{abc.png}
}
\end{document}

1 个答案:

答案 0 :(得分:1)

  1. 您可能希望"^\\\\s.*\\|^\\\\f.*"或至少 "^\\\\s\\|^\\\\f" 作为正则表达式。见(elisp) Syntax for Strings(elisp) Regexp Backslash 关于Lisp中的反斜杠。

  2. 我不能说出你应该用于Helm的东西。但作为替代方案,如果您使用Icicles

    ,这就是您所需要的
    (defun foo ()
      "..."
      (interactive)
      (icicle-search (point-min) (point-max) "^\\\\s.*\\|^\\\\f.*" t))
    
  3. 然后在您的投影缓冲区中M-x foo TAB。完成候选人是你想要的线。使用C-down等在其中导航。有关详细信息,请参阅doc for Icicles search