大家好,我是良許。 今天我們討論一個 Vim 使用技巧——用 Vim 讀寫遠程文件。要實現這個目的,我們需要使用到一個叫 netrw.vim 的插件。從 Vim 7.x 開始,netrw.vim 就被設置為預設安裝的標準插件了。這個插件允許用戶通過 ftp、rcp、scp、http 等協議讀寫、編輯 ...
大家好,我是良許。
今天我們討論一個 Vim 使用技巧——用 Vim 讀寫遠程文件。要實現這個目的,我們需要使用到一個叫 netrw.vim
的插件。從 Vim 7.x 開始,netrw.vim 就被設置為預設安裝的標準插件了。這個插件允許用戶通過 ftp、rcp、scp、http 等協議讀寫、編輯和瀏覽遠程文件。
插件 netrw 是什麼?
netrw
(面向網路的讀寫和瀏覽 Network oriented reading, writing and browsing)插件不僅支持本地和遠程終端跨網路編輯、讀寫文件,還能支持瀏覽本地和遠程終端目錄。需要瞭解這個插件的更多細節信息,在 Vim 會話輸入 help netrw
即可查看。
下麵讓我們來看看怎麼用 Vim 從本地系統讀寫存儲在遠程 Linux 系統上的文件。
使用 Linux 系統上的 Vim 讀寫遠程文件
讀寫遠程文件的方法幾乎和編輯遠程文件一樣,需要從本地系統讀取一個遠程文件,我們可以簡單的使用下麵這個命令來打開它:
$ vim scp://[email protected]/info.txt
輸入 q
退出文件。
要從本地系統寫一個遠程文件,也是先用上述命令打開文件,之後再按 i
進入插入模式接著就可以往文件里寫入了。等寫完需要寫入文件的內容之後,按 ESC
鍵退出插入模式,然後輸入 wq
保存並退出。
命令背後的運行過程實際上是用 scp 命令將遠程文件拷貝到本地系統的 /tmp
目錄下,然後再打開文件編輯的。在你編輯完後,scp 命令再次將本地已編輯文件拷貝回遠程系統。
要從本地查看遠程文件內容是否真的改動過用這一條命令:
$ ssh [email protected] cat info.txt
請註意,如果你要用遠程終端目錄的絕對路徑,應像如下所示命令一樣使用雙斜杠:
$ vim scp://[email protected]//home/cirdan/Documents/info.txt
如果你已經因為安全原因改變了SSH埠,則應當顯式地說明SSH埠號,如下所示:
$ vim scp://[email protected]:2200/info.txt
這裡埠 2200 就是我們自定義的埠號,大家可以根據具體情況使用自己的 ssh 埠號替代上述命令中的2200。
如果你沒有 ssh/scp 的通道,也可以用其他協議來替代,如下所示:
$ vim ftp://user@remotesystem/path/to/file
在Vim會話里讀寫遠程文件
如果你已經進入了一個 Vim 會話,則可以使用 Nread(NetRead)和 Nwrite(NetWrite)命令來讀寫遠程文件。
假如,我們現在使用如下命令打開本地系統的 Vim 編輯器:
$ vim
接著你就進入了 Vim 會話,要在本地新緩存中的 Vim 會話中讀一個遠程文件,只需要運行如下命令:
:e scp://[email protected]/info.txt
除此之外,還可以用 Nread
命令如下所示:
:Nread scp://[email protected]/info.txt
或者,這樣輸入:
:Nread "scp://[email protected]/info.txt"
想要知道這個命令的詳細信息,請在 Vim 會話中輸入如下命令:
:Nread ?
讀完說明文件後,輸入 :q
退出文件即可。
與之相似,要寫入遠程文件也應先使用如下命令:
:e scp://[email protected]/info.txt
按 i
鍵進入插入模式就可以寫入和修改文件了。
你也可以用 :w
創建並寫文件,但是這個命令只能創建一個新的空文件:
:w scp://[email protected]/info.txt
寫完之後,按 ESC
鍵退出編輯,然後輸入:wq
保存並退出文件。
除此之外,還可以用 Nwrite
命令創建並寫入文件,其用法示例如下:
:Nwrite scp://[email protected]/info.txt
關於 Nwrite
命令的詳細信息,在Vim會話中輸入如下信息即可:
:Nwrite ?
希望這篇文章對各位有所助益。
公眾號:良許Linux