为什么文本文件总是在我关闭它的同一点打开?

Bil*_*adj 1 gedit

我有一个.txt包含很长文本内容的文件。

我注意到每当我将内容读到某一行并关闭文件时,如果我稍后重新打开文件(立即、几小时后或几天后),文件打开时总是显示我结束我的相同区域先前阅读并关闭文件。

你对这种行为有什么解释吗?(任何提示,实施...)

我用 Gedit 打开文件。

Eli*_*gan 6

许多文本编辑器将您最后的光标位置存储在您编辑过的文件中。这些信息通常只存储您使用编辑器保存的文件,不同的编辑器在这方面的行为可能不同。但它不会存储在您编辑的文件中。它存储在其他地方,因为在纯文本文件中,没有放置它的好地方。Gedit 使用 gvfs 为每个文件存储和检索此信息。

正如CrazyApe84 自己gedit 在哪里存储最后一个光标位置的回答中所解释的那样(在Ask Ubuntu 上),gedit 通过将光标位置写入~/.local/share/gvfs-metadata/home. 当您重新打开文件时,它会读回它们。gedit 不包含显式代码来打开、写入和读取该文件,而是使用gvfs而该文件恰好是存储这些特定 gvfs 数据的地方。该信息存储在metadata::gedit-position您编辑的每个文件的gvfs 属性中。之所以不矛盾,是因为文件的 gvfs 属性不是文件的一部分,甚至不是其常规文件系统元数据的一部分。它们存储在gvfs-metadata目录中的文件中,例如home.

如果你想自己查看——甚至编辑——这个信息,安装这个gvfs-bin包:

sudo apt update
sudo apt install gvfs-bin
Run Code Online (Sandbox Code Playgroud)

(这适用于您正在使用的 Debian 及其衍生产品,例如 Ubuntu。此外,根据您使用的桌面环境,命令如下 gvfs-info可能已经安装了。但是 gedit 本身不使用这些命令行实用程序,而是安装gedit在非-GNOME 桌面环境不安装gvfs-bin。)

然后就可以使用gvfs-info命令查看属性了。假设您编辑的文件被称为your-file并且它在当前目录中。然后运行:

gvfs-info -a metadata::gedit-position your-file
Run Code Online (Sandbox Code Playgroud)

或者,正如CrazyApe84 的回答所解释的那样,您可以在以下输出中使用grep for metadata::gedit-position(或者只是position,如果您愿意多加几行):gvfs-info your-file

gvfs-info your-file | grep metadata::gedit-position
Run Code Online (Sandbox Code Playgroud)

有一个流行的 gedit 分支称为pluma,它与MATE 桌面环境一起提供(并且,如果您使用不同的桌面环境,可以单独安装 gedit)。如果您使用 pluma 而不是 gedit,则属性是metadata::pluma-position而不是metadata::gedit-position。如果您曾经想知道为什么 gedit 和 pluma 不共享有关您在文件中的位置的信息,这就是原因。