Vim技巧-在Linux上使用Vim编辑远程文件
Vim是最好的,高度可配置的文本编辑器之一,具有许多其他文本编辑器中找不到的独特功能。
今天,我们将讨论从本地系统编辑远程系统文件的有用功能之一。
这意味着我们可以编辑存储在远程Linux系统中的文件,而无需实际通过SSH或者任何其他方法登录到该文件。
在我知道这个技巧之前,我通常会通过SSH进入远程系统,然后编辑文件。
但是,还有一种方法可以使用Vim从本地系统编辑远程文件。
从Vim 7.x版本开始,将netrw.vim插件作为标准插件安装。
该插件可让我们通过ftp,rcp,scp或者http编辑文件。
什么是Netrw插件?
对于那些想知道的人,Netrw(面向网络的读取,写入和浏览)插件支持跨网络的本地和远程编辑,读取和写入文件。
它还支持浏览本地和远程目录。
有关更多详细信息,请在vim会话中键入:help netrw。
让我们继续,看看如何使用Vim从本地系统编辑存储在远程Linux系统中的文件。
在Linux上使用Vim编辑远程文件
使用Vim编辑远程文件非常简单:
vim scp://Hyman@theitroad//path_to_file
例子:
我的远程系统中有一个名为info.txt的文本文件,其内容如下。
Welcome to theitroad
现在,我将编辑该文件,并对其进行一些更改,然后保存并关闭该文件。
全部来自我的本地系统!
为此,我只需运行以下命令:
$vim scp://Hyman@theitroad/info.txt
这是上述任务的直观演示:
其中我们应注意以下三件事。
- Hyman @ theitroad(例如
Hyman @ theitroad)此处sk是远程系统的用户名。
192.168.225.22是远程系统的IP地址。
2.单斜杠(/)如果要编辑存储在远程系统$HOME目录中的文件,则必须使用斜杠将远程系统的IP地址或者主机名与文件路径分开。
在上述情况下,我已将info.txt文件存储在$HOME目录中,因此我使用了单斜杠。
- //(双斜杠)要指定文件的完整路径,必须使用双斜杠。
一个斜杠(/)用于将远程系统的IP地址或者主机名与实际文件路径分开。
另一个斜杠用于表示远程文件的绝对(完整)路径。
例如,假设我们正在编辑一个名为info.txt的文件,该文件位于远程系统的/home/sk/Documents /目录中。
在这种情况下,命令将是:
$vim scp://Hyman@theitroad//home/sk/Documents/info.txt
注意远程系统的IP地址和文件路径之间的双斜杠。
仅当提及远程文件的绝对路径时,才需要双斜杠。
验证本地系统中远程文件的内容:
$ssh Hyman@theitroad cat info.txt Hyman@theitroad's password: Welcome to theitroad blog
看到了吗?
我在info.txt文件中添加了一个另外的单词“ blog”。
有时,出于安全考虑,我们可能已更改了默认的SSH端口。
在这种情况下,请像下面一样提及SSH端口。
$vim scp://Hyman@theitroad:2200/info.txt
将2200替换为SSH端口号。
如果没有ssh/scp访问权限,则可以使用其他协议,例如ftp,如下所示。
$vim ftp://Hyman@theitroad/path/to/file
那么后台会发生什么呢?
使用以下命令从本地系统编辑远程文件时;
$vim scp://Hyman@theitroad/info.txt
我们可能已经在Vim编辑器的底部注意到以下输出:
:!scp -q 'Hyman@theitroad:info.txt' '/tmp/vsoDT6K/0.txt' "/tmp/vsOLzGf/0.txt" 1L, 21C
含义scp命令从远程系统复制请求的文件,并将其保存在本地系统的/tmp目录中,然后将其打开以进行编辑。
完成编辑后,使用scp命令将文件上传回远程系统。
在Vim会话中编辑远程文件
如果我们已经在Vim会话中,则可以从本地系统编辑远程文件,如下所示。
通过运行以下命令从Vim的新缓冲区中打开文件:
:e scp://Hyman@theitroad/info.txt
在文件中进行更改,然后按ESC键,然后键入:wq以保存并关闭文件。
看看下面的视觉演示。
如我们在上面的输出中看到的;
- 我从本地系统打开了Vim编辑器,
- 然后,我在新缓冲区中的Vim会话中打开了名为info.txt的远程文件,
- 然后在文件中进行一些更改,
- 最后,保存更改并关闭文件(ESC和:wq)。
我们还可以通过运行以下命令在新选项卡中打开文件:
:tabe scp://Hyman@theitroad/info.txt