為什麼文本文件總是在我關閉它的同時打開?
我有一個
.txt
包含很長文本內容的文件。我注意到每當我將內容閱讀到某一行並關閉文件時,如果我稍後(立即、幾小時後或幾天后)重新打開文件,文件打開時總是顯示我結束我的同一區域先前閱讀並關閉文件。
你對這種行為有什麼解釋嗎?(任何提示,實施……)
我用 Gedit 打開文件。
許多文本編輯器將您最後的游標位置儲存在您已編輯的文件中。這些資訊通常只儲存您使用編輯器保存的文件,不同的編輯器在這方面的行為可能不同。但它不會儲存在您編輯的文件中。相反,它儲存在其他地方,因為在純文字文件中,沒有放置它的好地方。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
(這適用於您正在使用的 Debian 及其衍生產品,例如 Ubuntu。此外,根據您使用的桌面環境,
gvfs-info
可能已經安裝了類似的命令。但是 gedit 本身並不使用這些命令行實用程序,而是安裝gedit
在非-GNOME 桌面環境不安裝gvfs-bin
。)然後可以使用
gvfs-info
命令查看屬性。假設您編輯的文件被呼叫*your-file
*並且它位於目前目錄中。然後執行:gvfs-info -a metadata::gedit-position *your-file*
或者,正如CrazyApe84 的回答所解釋的那樣,您可以在以下輸出中 grep for
metadata::gedit-position
(或者只是position
,如果您願意多寫幾行):gvfs-info *your-file*
gvfs-info *your-file* | grep metadata::gedit-position
有一個流行的 gedit 分支,稱為pluma,它與MATE 桌面環境一起提供(與 gedit 一樣,如果您使用不同的桌面環境,可以單獨安裝)。如果您使用的是 pluma 而不是 gedit,則屬性是
metadata::pluma-position
而不是metadata::gedit-position
. 如果您想知道為什麼 gedit 和 pluma 不共享有關您在文件中的位置的資訊,這就是原因。