Мой друг показал мне крутой трюк на Emacs несколько дней назад, когда он мог просто открыть файл на удаленном сервере, и я сразу подумал, что «должен быть способ сделать это и в vim», и это было правдой.
Я могу просто использовать :e scp://user@server//filepath
для этого, нет проблем;). Тем не менее, он мог просто ввести имя сервера и затем заполнить пути и имена файлов (с вкладкой), чего я не смог сделать. Кто-нибудь знает, можно ли это сделать в vim?
autocompletion
filesystem
m.ajallooeian
источник
источник
Ответы:
Да , но в настоящее время (2015) не из коробки, потому что встроенный файловый менеджер vim изначально не поддерживает удаленный просмотр. ,
Обновление Q3 @ 2016:
Есть несколько обходных путей, с различной степенью комфорта / совместимости / усилий. Все вместе они составляют хорошее решение, но все они также могут быть использованы индивидуально:
Установите пользовательский уровень
afuse
/sshfs
daemon в ваших файлах инициализации оболочкиС помощью нескольких строк сценария, например
.profile
, вы можете настроить автоматический монтирование по требованию в каталоге, например~/scp/
. Подробности этой интеграции в посте на Unix & Linux SE . Это наиболее удобный вариант, удаленные файлы «появляются» локально, но требуютafuse
иsshfs
будут доступны для вас.Настройка завершения командной строки оболочки для путей к удаленным файлам
Пакет функций завершения для bash имеет несколько функций, предназначенных для выполнения
ssh
иscp
завершения. С помощью функции-оберткиvim()
, направляющей удаленные пути вvim
ожидаемую форму, они могут использоваться для предоставления удаленных файлов, заполненных TABvim
. Незначительные недостатки этого подхода также подробно описаны там. Для ситуаций без фьюса. Требуетсяbash-completion
установка или аналог и адаптация для других оболочек.Если вы не можете изменить свою среду или только
.vimrc
: в файловом менеджере vim вы можете использовать клавиши // ?для поиска вперед / назад, и вы можете сопоставить TABс одним из них. Это мощнее, чем кажется, для быстрой навигации по файловой системе. Описание ниже.Основной обходной путь (для стандартного vim с NetRW):
$HOME
:vim scp://files/
или/
:vim scp://files///
/
или$HOME
).Для редактирования удаленного
/etc/network/interfaces
с NetRW на/
:/etENTERENTER/netwENTERENTER/intENTERt
Вы всегда можете использовать
?
для поиска обратно вверх, без переноса сверху.Еще лучше , для почти имитации - TAB Завершение добавить в
.vimrc
:autocmd filetype netrw noremap <buffer> <TAB> /
let g:netrw_liststyle=3
<C-E>
, если хотите (я его использую).incsearch
,ignorecase
иsmartcase
для NetRW, или все буферы.По сравнению с «обычным» завершением табуляции, вышесказанное отличается, но очень удобно.
Примечание. Все вышеперечисленное предполагает, что соединения
~/.ssh/config
с паролем на основе сертификатов ssh для пользователя, порта, сжатия, JumpHost (ProxyCommand настроены так, что требуются только имя хоста / псевдонимы).Это также ранее обсуждалось вне офиса здесь и здесь
источник