Як я повинен редагувати файли в мережі з Vim?


13

В даний час я роблю це SSHing на сервері та виконую Vim на сервері. Це має перевагу в тому, що не потрібно мати справу з громіздким синтаксисом відкриття файлів з віддаленого сервера через SCP, і, що ще важливіше, можливість реально швидко орієнтуватися у файловій системі сервера. З іншого боку, він має відставання, що робить редагування видом важким.

Який канонічний спосіб редагування безлічі віддалених файлів?


6
Як саме ви це робите.
Ігнасіо Васкес-Абрамс

Якщо vimспостерігається відставання, це, ймовірно, вказує на проблему з вашою мережею, а не на робочий процес.
Джозеф Р.

ssh root@myvps.com; vim / etc / somefile - я входжу, а потім запустіть Vim
jcora

Насправді це з мережею. Коли я натискаю клавішу, він повинен надіслати пакет з Європи до США, де фактично працює екземпляр Vim, який я використовую.
jcora

Ви також можете це зробити ssh root@myvps.com vim /etc/somefile(зауважте, відсутність ;).
terdon

Відповіді:


26

SSHFS можна використовувати для монтажу віддаленого будинку в локальній папці. Має перевагу у використанні поточної інфраструктури та низькій затримці локальної версії.


1
найкращий спосіб imo. не тільки низька затримка, але лише необхідність підтримувати один vimrc
exussum

20

Ви можете віддалено редагувати локальний vim або gvim.

:e scp://me@someplace.else/~/myfiles/whatever.file

scpє захищеним протоколом копіювання . Він автентифікується так само, як sshі ваш ключ ssh повинен бути доступний і т. Д. Існують різні інші протоколи, які підтримуються (див. :help netrw-externapp), Але scp, мабуть, найпростіший, якщо ви вже використовуєте ssh в тому ж місці.

Ви можете переглядати каталоги таким чином, просто переконайтеся, що шлях закінчується символом a /. Інакше vim перетворює його в новий файл.

:wавтоматично записує файл через scp. Якщо запис не вдається з якихось причин, вам слід помітити, оскільки вони будуть в рядку стану типом "повернута оболонка 1". Однак будьте уважні: якщо ви не помітили, vim не знає, і це може мати наслідки - наприклад, якщо ви зараз кинете, він не попередить вас. Особливо легко пропустити це, якщо ти :waбагато використовуєш ; | Це єдиний застереження у мене.

Про офіційні документи див :help netrw.


+1 Я збирався це написати. Netrw плагін (який, як правило , встановлюється за умовчанням) має широкий спектр способів для читання віддалених файлів.
Грег Х'югілл

Я мав на увазі цей варіант, коли сказав: "Це має перевагу в тому, що не потрібно мати справу з громіздким синтаксисом відкриття файлів з віддаленого сервера через SCP, і, що ще важливіше, можливість реально швидко орієнтуватися у файловій системі сервера" Таким чином здається мені дуже обмеженим.
jcora

1
Справедливості, спочатку у вашому запитанні не згадувалося про "віддалений сервер через SCP", який було відредаговано пізніше.
Грег Хьюгілл

@GregHewgill: Дякую за цю замітку, оскільки я трохи збита з пантелику - це найпростіший і найпростіший метод для загальних цілей (без образи на SSHFS!). Якщо додавання URL-адреси на шлях файлу є досить громіздким, мені цікаво, як реально виконується завдання вимагає, щоб хтось сів із редактором це зробити ... оскільки ви можете просто стрілку вгору командою. Але кожному своє.
goldilocks

@GregHewgill Так, я знаю, я писав питання на своєму телефоні під час руху, тому я ненавмисно залишив деякі речі. золотинки, я постійно відкриваю і закриваю файли. Перейдіть до файлової системи і відкрийте звідти. Додавання URL + шляху було більш громіздким, ніж просто "перебування там".
jcora

2

Я б використовував rsync. Він передає лише те, що змінилося. Так:

rsync -e ssh -va remoteuser@remotehost:remotedir .

потім відредагуйте файли локально у власний дозвілля. Нульове відставання. Ви маєте ознайомитись з усіма файлами перед тим, як зробити їх:

rsync -e ssh -va . remoteuser@remotehost:remotedir

Я припускаю, що ви спершу створите свій місцевий директор і cdв цьому. Ви також можете змусити його обробляти видалення файлів, але будьте дуже обережні з цим, оскільки виконання цього в неправильному каталозі може запустити ціле дерево каталогів.

rsync -e ssh -va --delete . remoteuser@remotehost:remotedir

Що я роблю, це спершу запускати його в «сухому режимі», використовуючи прапор 'n', як-от так:

rsync -e ssh -van --delete . remoteuser@remotehost:remotedir

Він повідомить про те, що робив би, якби це було реально. Якщо я задоволений повідомленим списком, запускаю його ще раз і видаляю прапор 'n'.

rsync дуже ефективний. Існують і різні інші прапори. Це досить витончено.


0

Можливо, ви назвали найбільш підходящий спосіб - SSH-спосіб, але все-таки залежно від самої природи редагуваних файлів ви можете виділити невеликий розділ, зробивши його спільним і розмістивши туди файли, звичайно, якщо політика безпеки дозволяє цю дію. Для цієї пропозиції ви можете використовувати NFS або Samba найпростіше, але все-таки редагування тестового файлу є загальною концепцією в UNIX, і, можливо, вам доведеться зберігати його таким, яким ви це робите в даний час.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.