簡單來說, vim
是一種純文字編輯器,是從 vi
發展出的增強版,而 vi
是從 ex
發展出的視覺化文字編輯器, ex
又是從 ed
發展出的增強版。 以上這些工具都是在 Unix / Unix-Like 作業系統上的純文字編輯器。
早期,當人們還在用電傳打字機作為電腦的終端機時,由於無法即時更新畫面,因此皆是使用如 ex
/ ed
的 line-oriented editor,一次編輯一行,並且只有在使用者下指令時才會將該行印出。
當人們陸續開始使用顯示器作為終端機時,由於畫面可以即時更新了,line-oriented editor 的使用體驗不在令人滿意, vi
也隨之誕生。 vi
延伸了 ex
的功能,但同時實現了視覺化編輯的功能,或稱為 screen-oriented editor。 vi
能夠在螢幕上呈現文本,並透過游標在文本中自由移動,選擇欲修改的位置。 vi
大幅提升了編輯文本的體驗,成為諸多 Unix / Unix-Like 發行版上預設的純文字編輯器。
最後, Vi IMproved (vim
) 是 vi
的增強版,增加了更多強大的功能,例如 auto-completion 、 syntax highlight 等等利於程式開發的功能,還能夠撰寫 plugin 進一步擴充功能,至今仍是最多工程師使用的純文字編輯器之一。
.swp
、 .swo
、 .swn
的隱藏檔案,在 vim 意外中斷時,這些備份檔案可以用於還原尚未儲存的變更。
flag
檔案時,第一次會生成 .flag.swp
的備份檔案,若 .flag.swp
存在(例如已經有一次意外中斷,或者有另一外使用者已開啟此檔案),則會生成 .flag.swo
,第三次則會產生 .flag.swn
vim -r <.檔名.要的備份檔>
的指令ls -al
cat <.檔名.目標備份檔>
# Create Folder
sudo mkdir /var/www/html/vim && cd /var/www/html/vim
# Take ownership
sudo chown -R "$(whoami)" .
# Edit File with VIM
vim index.php
# Save Empty file
:w
# Enter Insert Mode
i
# Type flag
FLAG{caec56b46ae54987465ee1231dfff}
# Enter Normal Mode
<ESC>
# Wait a minute (wait for vim write the modification into swap file)
# Suspend vim
<Ctrl>z
# Kill vim
kill -9 %
# 有時候可能因為版本、設定的原因,備份檔可能權限為600,也有可能是644
# 讓網頁可以讀取的權限,至少要讓 other 擁有 r 的權限
chmod o+r .index.php.swp
存取 .index.php.swp
,由於非純文字檔,瀏覽器一般會直接下載下來。
使用 vim -r
還原檔案