Я использовал vim в течение многих лет и чувствую себя достаточно опытным с этим. Однако недавно я работал на сервере с временем пинга 520 мс (из Сиднея в Южную Африку). Это значительно увеличивает мою потребность более эффективно использовать vim. Что я могу сделать, чтобы помочь освоить ярлыки, которых до сих пор я никогда не изучал?
5 ответов
Ну, Vi был написан для медленных модемных соединений, поэтому Vi/Vim, возможно, лучшие инструменты для использования в этой ситуации.
Я бы посоветовал рассмотреть все, что вы повторяете, и написать макросы, чтобы избежать повторения.
Используйте: карту произвольно, и (потому что это Vim), функцию записи макросов 'q' (:help recording
).
Используйте количество повторов (как вы определили) и используйте движения для навигации (например, поиск и переход к номерам строк), а не стучите по h/j/k/l.
Таким образом, например, 5d
для перехода на 5 строк вниз, }
для перехода к следующей пустой строке, Ctrl-I и Ctrl-O для перехода назад / вперед по недавно использованным позициям в тексте (:help jumps
).
Также подумайте о загрузке файлов и их локальном редактировании, а затем загрузите обратно на сервер.
Чтобы использовать vim более эффективно, я бы сконцентрировался на изучении большего количества специализированных команд перемещения (паренсы для перемещения по предложению, скобки для перемещения по абзацам). Их можно объединить с командами редактирования (удалить, изменить и т.д.), Как только вы ознакомитесь с ними. Кроме того, изучите комбинации «a» и «i» для выбора (и применения команд) к объектам вокруг курсора (например, das
для удаления предложения, в котором находится курсор: сравните с (d)
, который имеет три переключателя Shift). Научитесь применять счет для больших движений (например, c2w
чтобы изменить следующие два слова, d2as
чтобы удалить предложение, в котором находится курсор, и следующее). Используйте метки, чтобы перейти к часто используемым точкам.
Я забыл одну из моих любимых команд перемещения: f
/t
/F
/T
двигаться вперед или назад (строчные или прописные соответственно) до следующего или непосредственно перед следующим (f или t соответственно) вводимым символом: f*
перемещается в к следующему *
справа, T(
перемещается вправо от следующей открытой круглой скобки влево (поменяйте местами влево и вправо для конфигураций справа налево).
Для повторного редактирования используйте функцию записи макросов q
для записи и @
для воспроизведения последовательностей одних и тех же команд.
Используйте регистры вместо копирования и вставки, это сохранит круговую передачу (поскольку макросы хранятся в регистрах, вы можете использовать команды сохранения / извлечения регистров для исправления ошибок в макросе без перезаписи).
Используйте команду :%s/…/…/g
для глобальных замен / удалений.
И если вы все еще не можете заставить его чувствовать себя комфортно, вы можете внести изменения через плагин netrw: vim scp://target/somefile
.
Как отмечает Акира ниже, это позволяет вам запускать Vim на локальном компьютере, где задержка не является проблемой. Когда вы редактируете удаленный файл, Vim копирует его на ваш локальный компьютер. При сохранении Vim копирует его обратно на удаленный компьютер. Он поддерживает множество протоколов (WebDAV, HTTP (только для чтения), FTP, SSH (scp, sftp), rsync).
Как уже писали другие, vim был разработан специально для медленных соединений, поэтому вам просто нужно научиться использовать его более эффективно. Вы должны узнать (и знать разницу между) a/A, f/t F/T, i/I, ^, $, o/O, p/P, d/D и т. д., все они важны и могут сохранить у тебя довольно много движений.
Но самая большая проблема из моего опыта - психологическая. Вы знаете, что в конечном итоге это будет быстрее, но сейчас это быстрее (и, что более важно, проще для мозга :) просто использовать клавиши курсора :).
То, что я сделал, чтобы изучить эффективный vim, - это "наказывать себя" каждый раз, когда я ловлю себя на том, что делаю что-то неэффективно, возвращаясь и все равно делая это правильно.
так, например, если вы просто "поймали" себя, перемещая 10 строк вниз с помощью клавиш курсора, вернитесь назад и затем используйте что-то вроде "10". или, что более важно, почти никогда не используя горизонтальные клавиши со стрелками, используйте T, t, F, f,/,? вместо. и "наказать" себя, переделав это снова. Вы начнете делать правильные вещи в кратчайшие сроки.
о, и еще одна вещь, чтобы смотреть это режим визуального выбора. 99% его не нужно, так как то же самое можно сделать по-другому.
Вы прошли вводный урок vim? После этого я настоятельно рекомендую захватить шпаргалку vim и убедиться, что вы хотя бы знаете, о чем говорит каждый элемент шпаргалки. Узнайте об использовании регулярных выражений в поиске и замене. Узнайте о записи и выполнении макросов. Узнайте о визуальном режиме и о том, как вы можете "выделить" ваш выбор во внешние команды и прочитать данные из внешней команды.
Существует также опция под названием «scrolljump», которая контролирует, сколько строк прокручивать, когда курсор перемещается за пределы экрана. Это может помочь уменьшить объем экрана, который необходимо перерисовать.
Но плагин netrw, упомянутый Крисом Джонсеном, является отличным решением, я много раз использовал его для разработки через невероятно медленные и ненадежные соединения.