Большую часть работы я выполняю в vim. Я предпочитаю редактировать файлы с помощью vim локально, а не подключаться к серверу и запускать vim на нем по многим причинам, одной из наиболее важных является отзывчивость пользовательского интерфейса при медленном соединении.
Я знаю, что могу редактировать удаленные файлы с помощью vim и scp, и у меня также есть настройка с sshfs, которая позволяет мне довольно просто cd к точке монтирования и vim вверх для некоторых файлов.
Однако меня очень беспокоит, что каждый раз, когда я сохраняю файл, он пишет все файл на удаленный сервер. Это действительно замедляет мой рабочий процесс.
Что я действительно хотел бы сделать, так это иметь такую настройку:
Это было бы намного быстрее, с большей пропускной способностью и той же функциональностью.
Обычно я использую git или svn для достижения аналогичного результата, но мне действительно нужна такая минимальная функциональность для ситуаций, когда у меня нет возможности использовать такие системы SCM.
Мои вопросы:
1. Кто-нибудь знает какие-либо существующие скрипты или программы, которые сделают часть или все это за меня?
2. Кто-нибудь хочет придумать какие-нибудь лайнеры bash one, которые сделают свое дело? Я знаю, что это можно сделать с некоторыми из них ...
Когда вы удаленно подключаетесь к vim
, действительно ли он записывает весь файл?
vim ftp://myserver//path/file.txt
xdelta
мог бы сделать исправление и проверку хэша.
Вот пример, если у вас есть файл, смонтированный с помощью sshfs. Я сохранил расширение файла на случай, если вы хотите насладиться подсветкой синтаксиса:
#!/bin/bash
if [ ! -f "$1" -o ! -w "$1" ]
then
echo "ERROR: cannot open $1 for editing"
exit 1
fi
TMP="/tmp/$(date +%s)-$$-$(basename $1)"
TMP2="$TMP.2"
PAT="$TMP.patch"
/bin/cp $1 $TMP
/bin/cp $TMP $TMP2
/usr/bin/vim $TMP2
/usr/bin/xdelta delta $TMP $TMP2 $PAT
/bin/cp $1 $1.orig
if /usr/bin/xdelta patch $PAT $1.orig $1
then
/bin/rm $TMP $TMP2 $PAT
else
echo "ERROR: xdelta patch failed, keeping temporary files $TMP $TMP2 $PAT"
exit 1
fi
Допустим, вы называете это дельтавим или как-то так, вы просто
deltavim /path/to/remotefile.conf
Для создания дельты потребуется две копии локально, но в случае успеха все это удалит. Он оставляет исходный удаленный файл с .orig, но вы можете добавить строку, чтобы удалить его после патча, если хотите.
Если удаленный файл изменится во время редактирования, xdelta заметит это и откажется исправлять.
В любом случае, может быть, это отправная точка для вас.
Удачи! (... и никогда не указывайте загруженный, непроверенный сценарий, который вы получаете из Интернета, на файл, который вам нравится ...)