Vim技巧–在Linux上使用Vim读写远程文件

时间:2020-03-21 11:48:40  来源:igfitidea点击:

前一段时间,我们讨论了如何在Linux上使用Vim编辑器编辑远程文件。

使用该方法,我们无需通过登录即可通过SSH编辑存储在远程系统上的文件。
今天,我们将讨论类似的Vim技巧,即如何使用Vim读写远程文件。
从Vim 7.x版本开始,默认情况下将netrw.vim插件安装为标准插件。
该插件允许用户通过ftp,rcp,scp或者http读取,编辑,写入和浏览远程文件。

什么是Netrw插件?

对于那些想知道的人,Netrw(面向网络的读取,写入和浏览)插件支持跨网络的本地和远程编辑,读取和写入文件。
它还支持浏览本地和远程目录。
有关更多详细信息,请在vim会话中键入:help netrw。
让我们继续来看一下如何使用Vim从本地系统读取或者写入存储在远程Linux系统中的文件。

在Linux上使用Vim读写远程文件

读取和写入远程文件与编辑远程文件几乎相同。

要从本地系统读取远程文件,我们只需使用以下命令将其打开:

$vim scp://Hyman@theitroad/info.txt

键入q退出文件。

要写入远程文件,只需如上图所示打开它,然后按“ i”进入插入模式,最后开始写入即可。
完成后,按ESC键并输入:wq保存并退出。

在后台实际发生的是使用scp命令将远程文件复制到本地系统的“/tmp”目录中。
然后打开文件进行编辑。
完成后,scp命令将文件复制回远程系统。

从本地系统查看远程文件的内容,以验证是否已使用以下命令对文件进行了真正的修改:

$ssh Hyman@theitroad cat info.txt

请注意,如果要提及远程主机上目录的绝对路径,请使用双斜杠(//),如以下命令所示:

$vim scp://Hyman@theitroad//home/sk/Documents/info.txt

万一出于安全目的已经更改了默认SSH端口,则应明确提及SSH端口,如下所示。

$vim scp://Hyman@theitroad:2200/info.txt

将2200替换为SSH端口号。

如果没有ssh/scp访问权限,则可以使用其他协议,例如ftp,如下所示。

$vim ftp://Hyman@theitroad/path/to/file

在Vim会话中读写远程文件

如果我们已经在Vim会话中,则可以使用Nread(NetRead)和Nwrite(NetWrite)命令读取和写入远程文件。

使用以下命令在本地系统中打开Vim编辑器:

$vim

我们现在在Vim会话中。
要在新缓冲区中从本地Vim会话中读取远程文件,只需运行:

:e scp://Hyman@theitroad/info.txt

另外,我们可以使用“ Nread”命令,如下所示。

:Nread scp://Hyman@theitroad/info.txt

或者,

:Nread "scp://Hyman@theitroad/info.txt"

有关更多详细信息,请在Vim会话中键入以下命令:

:Nread ?

读取文件后,键入:q退出。

同样,要写入远程文件,请运行:

:e scp://Hyman@theitroad/info.txt

按“ i”进入插入模式并开始写入/修改。

我们也可以使用:w命令来创建和写入文件。
但是此命令将仅创建新的空文件。

:w scp://Hyman@theitroad/info.txt

写入后,按ESC并键入:wq保存并退出。

或者,使用“ Nwrite”命令创建文件,如下所示。

:Nwrite scp://Hyman@theitroad/info.txt

要了解有关Nwrite的更多详细信息,请在Vim会话中键入以下内容:

:Nwrite ?