大家好,我是良許,
今天我們討論一個 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
有識訓?希望老鐵們來個三連擊,給更多的人看到這篇文章
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/17175.html
標籤:Linux
上一篇:linux下快速列出局域網中所有主機名(計算機名)的腳本
下一篇:Docker資料卷的創建與應用
