在一个直接缓冲区中的Emacs事物

时间:2009-08-11 06:33:59

标签: emacs dired

我想知道在一个直接缓冲区中有什么“东西”。

例如,Debug是一个“目录”:

drwxrwxrwx 0 10-08-2009 17:50调试

Makefile是一个“文件”:

-rw-rw-rw-15k 6-03-2009 13:02 Makefile

这是一个“标题”

d:/富/酒吧/调试:

找到一件事的一种方法是看看面对面是什么。还有另一种方法吗? 我如何确定事物的界限?

标准(thing-at-point'文件名)不处理文件名中的空格。

4 个答案:

答案 0 :(得分:6)

这些功能可能有助于编制您想要的内容:

  • dired-获得文件名
  • dired-移动到文件名
  • dired-移动到结束的文件名
  • file-directory-p和朋友

答案 1 :(得分:1)

您可以使用overlays突出显示文字。以下是您可以添加到.emacs文件中的一些函数来执行此操作。关键是我们将所有以这种方式创建的叠加命名为'my-highlight,以便我们稍后可以删除那些叠加层。

(defun highlight-thing-at-point ()
  (interactive)
  (let* ((my-thing (bounds-of-thing-at-point 'sexp))
         (my-overlay (make-overlay (first my-thing) (rest my-thing))))
    (overlay-put my-overlay 'name 'my-highlights)
    (overlay-put my-overlay 'face 'highlight)))

(defun unhighlight-all-of-mine ()
  (interactive)
  (remove-overlays nil nil 'my-highlights))

编辑:

您可以添加自定义函数,以便在其中包含空格的点返回文件名的边界。有关示例,请参阅this EmacsWiki article。因此,如果你编写一个名为my-bounds-of-filename-at-point的函数,你可以将它设置为默认值((在物理上的边界'文件名)和(事物点'文件名')这样:

(put 'filename 'bounds-of-thing-at-point 'my-bounds-of-filename-at-point)

答案 2 :(得分:1)

列表的第一个字符是d表示目录,l表示链接, - 表示普通文件。有代表字符和块设备,进程等的字符。您还想知道什么? (我从未见过你的“标题”类型。你是如何制作的?)

答案 3 :(得分:1)

从来没有(几乎从不?) 单个 。有点事件函数可以在特定类型的点或附近检索某些文本。所以你在这里有一个根本的误解。

在Dired中,与其他地方一样,根据点的位置,您可以在点检索符号名称,在点检索文件名,以及其他几种东西 - 所有这些都来自同一位置。

其他人已经回答了如何确定给定行是用于普通文件还是目录。

如果使用Dired+,则可以使用 Ch RET (命令diredp-describe-file)获取有关当前行上的文件或目录的信息 - 其类型,属性等。

如果您想以编程方式获取点或接近点,请参阅Thing At Point+