1. 程式人生 > >SUSE Linux中儲存狀態資訊的viminfo和vimrc詳解

SUSE Linux中儲存狀態資訊的viminfo和vimrc詳解

最近公司在審計所有產品和方案的安全規格,比如:作業系統的日誌中禁止包含密碼明文或password之類的。幾乎將系統安全武裝到牙齒了,今天就遇到一個問題:測試發現SUSE Linux作業系統的/root/.viminfo檔案中包含了password字樣,和同事確認後瞭解到:原來.viminfo檔案存放於Linux系統的使用者HOME目錄(家目錄)下,會記錄該使用者執行vi或vim的歷史記錄。

如果為了安全或某些原因,不希望其他使用者檢視到這些vi/vim操作記錄,那麼可以通過以下方法關閉.viminfo的記錄:
1. 關閉所有使用者的viminfo記錄——修改/etc/vimrc檔案,在該檔案最後一行中增加set viminfo=
2. 關閉指定使用者的viminfo記錄——修改該使用者HOME目錄下的.vimrc檔案,在該檔案最後一行中增加set viminfo=

同時在網上搜集整理了下關於viminfo的詳細說明,在這裡也彙總分享下……

1. 資訊檔案viminfo被設計為儲存Linux以下狀態資訊:
命令列和模式搜尋的歷史記錄
暫存器內文字
各種檔案的標記
快取器列表
全域性變數

2. 你每次退出 vi/vim,它就把此種資訊存放在一個檔案內,即.viminfo
當vi/vim重新起動時,就讀取這個資訊檔案, 而那些資訊就被還原了。

3. vimrc檔案中的選項‘viminfo’的預設設定是還原有限的幾種資訊,你也許希望設定它記住更多的資訊:

其設定的規則大致如下:
set viminfo=string
其中字串 “string” 規定了什麼要儲存。

該字串的語法為一個選項字元跟一個引數,選項和引數組成的對子之間由逗號分隔。

來看一下你可以怎樣構建你自己的 viminfo 字串。首先,選項 ‘ 用於規定你為多少個檔案儲存標記 (a-z)。為此選項挑一個美妙的偶數 (比如 1000)。

你的命令現在看起來像這樣:
set viminfo=’1000

選項 f 控制是否要儲存全域性標記 (A-Z 和 0-9)。如果這個選項設為0,那麼什麼也不儲存。如果設為1,或你對f選項不作規定,那麼標記就被儲存。你要這個功能,現在你有了:
set viminfo=’1000,f1

選項 < 控制著每個暫存器內儲存幾行文字。預設情況下,所有的文字行都被儲存。如果設為0,則什麼也不儲存。為了避免成千上萬行文字被加入你的資訊檔案 (那些文字可能永遠也沒用,徒然使vi/vim 起動得更慢),你採用500行的上限,那麼以上的幾個規則最終設定就如下了: set viminfo='1000,f1,<500 另外,如果要深入研究,那麼下面這些選項可以幫到你: : 儲存命令列歷史記錄內的行數 @ 儲存輸入行歷史記錄內的行數 / 儲存搜尋歷史記錄內的行數 r 可移介質,其中沒有任何標記存入 (可用多次) ! 以大寫字母開頭的全域性變數,並且不含有小寫字母 h 起動時解除選項 'hlsearch' 的高亮度顯示 % 緩衝列表 (只有當不帶引數起動 Vim 時才還原) c 用編碼 'encoding' 轉換文字 n 用於 viminfo 檔案的名稱 (必須為最後一項選項)