Vim – это один из лучших, легко настраиваемых текстовых редакторов, который обладает множеством уникальных функций, которых нет в других текстовых редакторах.
Сегодня мы обсудим одну из полезных функций – редактирование файлов удаленной системы из локальной.
Смысл трюка: мы можем редактировать файл, хранящийся в удаленной системе Linux, без необходимости входить в него через SSH или любым другим способом.
Прежде чем я знал этот трюк, я обычно заходил по SSH на удаленную систему, а затем редактировал файлы.
Однако есть также способ редактировать удаленные файлы с помощью Vim из вашей локальной системы.
Начиная с версии Vim 7.x, плагин netrw.vim устанавливается как стандартный.
Этот плагин позволяет редактировать файлы через ftp, rcp, scp или http.
Что такое плагин Netrw?
Для тех, кто интересуется, плагин Netrw поддерживает локальное и удаленное редактирование, чтение и запись файлов по сети.
Он также поддерживает просмотр как локальных, так и удаленных каталогов.
Для получения более подробной информации введите: help netrw в вашей сессии vim.
Давайте посмотрим, как редактировать файлы, хранящиеся в удаленной системе Linux, из нашей локальной системы с помощью Vim.
Как редактировать удаленные файлы с Vim на Linux
Редактировать удаленный файл с помощью Vim очень просто:
vim scp://user@remotesystem//path_to_file
Пример:
У меня есть текстовый файл с именем info.txt в моей удаленной системе со следующей строкой.
Welcome to Itsecforu
Теперь я собираюсь отредактировать этот файл, внести в него некоторые изменения, а затем сохранить и закрыть файл.
Все из моей локальной системы!
Для этого я просто запускаю следующую команду:
$ vim scp://itsecforu@192.168.225.22/info.txt
Здесь следует обратить внимание на следующие три вещи.
1. user@remotesystem (например, itsecforu@192.168.225.22) – Здесь itsecforu – имя пользователя удаленной системы. 192.168.225.22 – это IP-адрес удаленной системы.
2. Одиночная косая черта (/) – если вы хотите редактировать файл, который хранится в каталоге $HOME удаленной системы, вы должны использовать завершающую косую черту, чтобы отделить IP-адрес или имя хоста удаленной системы от пути к файлу.
В приведенном выше случае я сохранил файл info.txt в каталоге $ HOME, поэтому использовал одну косую черту.
3. // (Двойная косая черта) – чтобы указать полный путь к файлу, вы должны использовать двойную косую черту.
Одна косая черта (/) используется для отделения IP-адреса или имени хоста удаленной системы от фактического пути к файлу.
И еще одна косая черта используется для указания абсолютного (полного) пути к удаленному файлу.
Например, допустим, вы редактируете файл с именем info.txt, который находится в каталоге /home/itsecforu/Documents/ вашей удаленной системы.
В этом случае команда будет такой:
$ vim scp://itsecforu@192.168.225.22//home/itsecforu/Documents/info.txt
Обратите внимание на двойную косую черту между IP-адресом удаленной системы и путем к файлу.
Двойная косая черта требуется только при упоминании абсолютного пути к удаленному файлу.
Проверьте содержимое удаленного файла из вашей локальной системы:
$ ssh itsecforu@192.168.225.22 cat info.txt itsecforu@192.168.225.22's password: Welcome to itsecforu
$ vim scp://itsecforu@192.168.225.22:2200/info.txt
Замените 2200 на ваш номер порта SSH.
Если у вас нет доступа по ssh/scp, вы можете использовать другие протоколы, например, ftp, как показано ниже.
$ vim ftp://user@remotesystem/path/to/file
Как редактировать удаленные файлы в сеансе Vim
Если вы уже находитесь в сеансе Vim, вы можете редактировать удаленные файлы из вашей локальной системы, как показано ниже.
Откройте файл из Vim в новом буфере, выполнив следующую команду:
:e scp://itsecforu@192.168.225.22/info.txt
:tabe scp://itsecforu@192.168.225.22/info.txt