題 隱藏NERDTree gVim中的dot和dotdot(“./”,“../”)目錄


這是在Windows上的gVim中。

NERDTree正在註冊 ../ 和 ./ 每個目錄中的鏈接。由 -> 我想也許他們是添加到我所有目錄的快捷方式/符號鏈接,但是在Windows文件瀏覽器中我沒有看到任何指向這種情況。我可以打 轉移+一世 隱藏它們,但我希望能夠看到點文件。

我最近也安裝了mysysgit,安裝時會在路徑中添加一些Unix工具。我總是在Windows系統上完成此操作而沒有任何負面影響,但我之前沒有使用過gVim和NERDTree。也許在添加Unix工具時,它做了一些有趣的事情 cd ../ 在Windows提示中?在我的Debian系統上,NERDTree不會這樣做。

我對Vim和NERDTree比較陌生,我不經常在Windows工作,所以我各種各樣的迷失。

截圖 - > Screenshot

為了澄清,我正在嘗試 隱藏 這些。

我試著擺弄 let NERDTreeIgnore=[...] 無濟於事。


2
2018-03-25 19:39


起源


./是當前目錄。 ../是前一個。這些一直在windows中工作(雖然它通常是。\和..)。不確定為什麼NERDTree會展示它們,但它們在操作系統級別並不是什麼新鮮事。 - Herms


答案:


以下是我所希望的 let NERDTreeIgnore=['\.\.$', '\.$', '\~$']

注意: 該 '\~$' 是一個單獨的正則表達式,忽略Vim生成的'tilda-d'備份文件,例如 somefile.text~

這個答案複製自 可口的 答案是錯誤地寫在問題中。


1
2018-03-25 20:00





Windows的文件系統(FAT,FAT32,NTFS)都有目錄條目 . 和 .. 在每個目錄中,分別對應於當前目錄和父目錄。

來自 Microsoft EFI FAT32文件系統規範

創建目錄時,[...]目錄不是根目錄,需要在目錄的前兩個32字節目錄條目中創建兩個特殊條目(前兩個32字節條目)剛剛分配的集群的數據區域)。

第一個目錄條目的DIR_Name設置為:
  “。 “

第二個將DIR_Name設置為:
  “..”

這些被稱為  和 dotdot 條目。兩個條目上的DIR_FileSize字段都設置為0,並且這兩個條目中的所有日期和時間字段都設置為與剛剛創建的目錄的目錄條目中的值相同。您現在為此設置DIR_FstClusLO和DIR_FstClusHI  條目(第一個條目)到您在目錄目錄條目的那些字段中放入的相同值(包含該目錄的集群的集群號)  和 dotdot 項)。

最後,為此設置DIR_FstClusLO和DIR_FstClusHI dotdot 條目(第二個條目)到您剛剛創建目錄的目錄的第一個簇號(如果此目錄是根目錄,則值為0,即使對於FAT32卷也是如此)。

這是摘要  和 dotdot 項:

  •  entry是指向自身的目錄。
  • dotdot 入口指向此目錄的父節點的起始集群(如果此目錄父節點是根目錄,則為0)。

實際上,這些目錄條目存在於每個目錄中。它們是隱含的,因此在NERDTree中展示它們可能沒什麼價值,但這只是一個設計選擇。


4



從早期文件系統中完整獲取並在unix中顯示的功能。不確定它是否源自unix,或者來自計算機史上的早期(multics,也許?)。 - dmckee
雖然這個 是 非常有趣,我真正想做的是只隱藏這些條目而不是雜項點文件。我在Linux環境中使用NERDTree時沒有看到這些條目(我知道它們在那裡,但它們是隱藏的),無法想像為什麼它實際上是一個設計選擇(也不是專門針對gVim /對於那個問題的Windows)。 - Zachary J Rollyson
我會接受關於Windows FS上那些令人敬畏的信息的答案。 - Zachary J Rollyson