]> Sergey Matveev's repositories - stargrave-blog.git/commit
Vim ViewPort плагин
authorSergey Matveev <stargrave@stargrave.org>
Tue, 24 Jul 2018 19:29:51 +0000 (22:29 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 24 Jul 2018 19:29:51 +0000 (22:29 +0300)
commit3c50207ce99bd7075045aa82d40836b72a873669
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parent5022756b7dde7b6f00ec4eff6fce255bd9713a13
Vim ViewPort плагин

https://www.vim.org/scripts/script.php?script_id=4296
Тесты должны быть очень простой штукой, без наворотов. Это означает что
нередко приходится делать очень много copy-paste, ради простоты. Когда
редактируется огромный файл с кучей очень похожего кода, то любое лишнее
нажатие "n"/"N" (поиска) или просто перемещения может передвинуть тебя в
другой тест, визуально не сильно отличимый. Это может привести к тому,
что не понимаешь что происходит -- редактируешь не то, что запускаешь.

В Emacs, насколько мне известно (я не его пользователь) есть такая штука
как narrowing -- возможность какой-то участок файла редактировать в
отдельном окне/буфере, не видя ничего вокруг него. Это очень крутая идея
обезопасить и изолировать себя от ошибки! По хорошему эта
функциональность должна быть встроена в сам редактор и в Vim её нет. Не
уверен можно ли плагинами в принципе её полностью осуществить как в
Emacs.

Плагинов на эту тему полно, но я вот решил использовать сабжевый. Суть
работы безумно проста: он ставит две метки вокруг текста для которого
делается, так называемый, ViewPort и копирует текст в отдельный буфер.
Когда он сохраняется, то содержимое помещается между метками
оригинального файла. Сегодня был первый день когда начал его
использовать. Значительно лучше чем ничего, но, безусловно, неудобство
от двойного сохранения имеется. Плагин имеет много проверок в коде для
безопасности: предупредит если оригинальный текст изменился например,
чтобы его не потерять.

Другой use-case приходящий с ним в голову: редактировать например
вставленный SQL внутри кода Python или Go -- тогда в отдельном буфере
можно будет включить ft=sql и иметь полноценный SQL редактор в одном
месте, и полноценный Python/Go редактор в другом.