在Linux系統中使用Vim讀寫遠程文件

来源:https://www.cnblogs.com/yychuyu/archive/2020/07/29/13399373.html
-Advertisement-
Play Games

大家好,我是良許。 今天我們討論一個 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

有收穫?希望老鐵們來個三連擊,給更多的人看到這篇文章


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文:https://almirai.live/Coding/Java/JavaWeb/Basics/type/ 數據類型 基本類型 類型 占用空間(Byte) 取值範圍 byte(位元組型) 1 -128~127 short(短整型) 2 −216~216−1 int(整型) 4 −231~231− ...
  • 提起AI,大家都會先想到Python,確實Python作為一門好幾十年的老語言,上一波的AI大流行使它煥發了青春。大家用Phtyon來做AI,最主要的原因無非就是編碼量更少,很多數學和AI相關的Api都是現成的。但是隨著ML.net的問世,我們現在可以在.netcore平臺上使用比Python更少的 ...
  • 環境: Vs 2015 .net 4.5.2 源碼: public static void toScreen() { ThreadStart ts = new ThreadStart(() =>//開線程 { Screen scr = Screen.PrimaryScreen; Rectangle ...
  • 效果圖片: 分步解析實現過程: 一.新建報表所需要的文件以及類: 1.新建一個WindowForm項目WindowsFormsReport; 2. 添加Entity文件夾,並添加StudentEntity.cs類; public class StudentEntity { /// <summary> ...
  • 一 使用背景: 通過Http 請求下載一個壓縮的文件到伺服器記憶體中(重點:不用保存到本地),然後通過代碼直接提取壓縮包的文件 二 實現思路:(註:需要提前安裝 ICSharpCode.SharpZipLib.dll) 1 通過Http請求下載壓縮文件到伺服器的記憶體中 2 讀取記憶體中壓縮的包的流(註意 ...
  • 上篇我們完成了數據源保存功能,並順便看了保存後的數據源列表展示功能。 本篇我們開始開發預覽功能,用戶預覽主要步驟: 1、點擊數據源卡片預覽按鈕 2、查看數據源包含的表 3、點擊表名,預覽表中數據 一、前端結構及樣式 效果如下圖(靜態html示意圖): 左側是數據源及包含的表。 右上為篩選條件(篩選條 ...
  • 基於kubeadm快速部署kubernetes K8S V1.17.4集群,並部署Dashboard Web頁面,實現可視化查看Kubernetes資源 ...
  • 在容器里增加、刪除或修改文件,其實都是對可寫層里的文件副本進行了操作。在容器關閉後,該可寫層也會被刪除,對容器的所有修改都會失效,因此需要解決容器內文件持久化的問題。Docker提供了兩種方案來實現: 一、Docker掛載時創建捲:把宿主機文件系統里的目錄映射到容器內的目錄。如此一來,容器內在該目錄 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...