чем крут vi
Apr. 19th, 2012 07:46 pmЗашла тут в http://wizzard0.livejournal.com/239893.html?thread=1726997#t1726997 речь о редакторах. Хочу оттуда вынести мой ответ о том, почему vi - самый лучший редактор кода, с большим отрывом.
Я тут стал думать, и причин нашлось много. Без определеного порядка:
* Удобно двигать блоки влево-вправо (хотя может и IDE до этого нынче доросли).
* Не портит табуляции.
* Метки с быстрым переходом назад на них. Я всегда использую как минимум 3 метки. Очень, очень важная вещь, ее отсутствие меня страшно убивает.
* Поиск-замена с регулярными выражениями. В vim еще лучше, история поисков-замен и прочих команд.
* Поиск-замена в блоках строк.
* Фильтрование блоков строк через внешние программы.
* Быстрый переход к другой стороне скобок по %.
* Быстрое переключение между двумя последними файлами по ^^. Никаких уродских табов, никаких уродских мышей. Очень удобно для копирования многих кусков между двумя файлами.
* (Не часть vi но часть юниксной консоли и Гнома, если его правильно настроить): переключение экранов по ALT-Fn, позволяющее открыть много редакторов с разными файлами и легко переключаться между ними (никаких уродских табов, никаких уродских мышей).
* Командная философия означает, что все редактирование происходит в виде постоянного написания и исполнения микро-макросов, с повтором по точке. Например, d$ удаляет все до конца строки. Поэтому когда надо поудалять всякое странное в концах строк, делаем один раз d$, а потом просто движемся по строкам и нажимаем точку. Или вот если два соседних символа оказались перепутаны, как поменять их местами? В vi нажимаем xp. В IDE нажимаем Shitf-стрелку, ^X, стрелку, ^V. Пока такое пронажимаешь, проще обе буквы удалить и напечатать заново.
Вот этот командная философия - это то, что тяжело прочухать, впервые увидев vi. А когда она прочухана, то оказывается, что она - единственно правильная.
Я тут стал думать, и причин нашлось много. Без определеного порядка:
* Удобно двигать блоки влево-вправо (хотя может и IDE до этого нынче доросли).
* Не портит табуляции.
* Метки с быстрым переходом назад на них. Я всегда использую как минимум 3 метки. Очень, очень важная вещь, ее отсутствие меня страшно убивает.
* Поиск-замена с регулярными выражениями. В vim еще лучше, история поисков-замен и прочих команд.
* Поиск-замена в блоках строк.
* Фильтрование блоков строк через внешние программы.
* Быстрый переход к другой стороне скобок по %.
* Быстрое переключение между двумя последними файлами по ^^. Никаких уродских табов, никаких уродских мышей. Очень удобно для копирования многих кусков между двумя файлами.
* (Не часть vi но часть юниксной консоли и Гнома, если его правильно настроить): переключение экранов по ALT-Fn, позволяющее открыть много редакторов с разными файлами и легко переключаться между ними (никаких уродских табов, никаких уродских мышей).
* Командная философия означает, что все редактирование происходит в виде постоянного написания и исполнения микро-макросов, с повтором по точке. Например, d$ удаляет все до конца строки. Поэтому когда надо поудалять всякое странное в концах строк, делаем один раз d$, а потом просто движемся по строкам и нажимаем точку. Или вот если два соседних символа оказались перепутаны, как поменять их местами? В vi нажимаем xp. В IDE нажимаем Shitf-стрелку, ^X, стрелку, ^V. Пока такое пронажимаешь, проще обе буквы удалить и напечатать заново.
Вот этот командная философия - это то, что тяжело прочухать, впервые увидев vi. А когда она прочухана, то оказывается, что она - единственно правильная.
no subject
Date: 2012-04-20 01:37 pm (UTC)no subject
Date: 2012-04-20 05:02 pm (UTC)ну может переход к следующей фигурной скобке по-разному везде
только переключение между файлами по F6, вместо вимовского Ctrl + 6 (из-за чего я их постоянно путаю :)
вместо переключения иксовых экранов "православнее" (линэксвейнее всмысле) юзать screen
no subject
Date: 2012-04-20 07:04 pm (UTC)no subject
Date: 2012-04-20 09:36 pm (UTC)no subject
Date: 2012-04-20 09:40 pm (UTC)no subject
Date: 2012-04-20 09:49 pm (UTC)и пожалста - история :) скроллить еще удобнее чем обычный терминал
на самом деле незаменимая вещь
я насколько понял, ты в основном редакторам пользуешься на локальной машине, я наоборот - чаще на удаленных тачках. screen сессия тем хороша что не завершается при обрыве ssh подключения, потом логинишься, вводишь screen -drU и все, тот же набор скринов. в них можно даже оставлять работать что-нибудь )
переключения во-первых настраиваются, во-вторых по сути все то же самое
Ctrl + a, " - список скринов
Ctrl + a, Ctrl + c - новый скрин
Ctrl + a, Ctrl + a - переключиться на предыдущий
Ctrl + a, N - переключиться на энный скрин
их можно именовать и т.п.
no subject
Date: 2012-04-20 09:59 pm (UTC)no subject
Date: 2012-04-20 10:04 pm (UTC)мало ли откуда что делать приходится
гораздо хуже, если в процессе выполнения какой-нибудь важной системной настройки связь навернется - можно вообще тачку "потерять"
no subject
Date: 2012-04-23 03:04 pm (UTC)no subject
Date: 2012-04-20 01:24 pm (UTC)это чтоб куда-нить подвинуться нужно выйти из режима редактирования (хотя я эскейп для этого на правый альт повесил) перейти, войти в режим
я вим постоянно использую для правок кода на удаленных тачках, но когда что-то большое написано надо - юзаю в основном IDE
no subject
Date: 2012-04-20 01:44 pm (UTC)no subject
Date: 2012-04-20 01:50 pm (UTC)я ей лет шесть уже пользуюсь
не знаю уж сколько к ней привыкать надо
вумные книжки (типа byte of vim) конечно же читал
no subject
Date: 2012-04-20 02:47 pm (UTC)no subject
Date: 2012-04-20 02:59 pm (UTC)но говорю, что-то большое писать - неудобно
много переключений между файлами, которые каждый раз в новом номере буфера оказываются (да, потом я научился сохранять "сессии", но обычно мне лень заморачиваться)
а существенных плюсов не вижу
кроме удаленного редактирования, конечно
еще меня раздражает что в cygwin под виндой он насильно в конец каждого файла crlf вставляет зачем-то
no subject
Date: 2012-04-20 04:03 pm (UTC)А crlf в конце последней строки - вещь правильная и обязательная.
no subject
Date: 2012-04-20 05:00 pm (UTC):bN
же
или ты заводишь десять ssh или screen'ов и между ними переключаешься?
а CRLF нахрен нигде в конце не нужен
на линуксе и нет его, это в виндовой версии глюк какой-то
no subject
Date: 2012-04-20 07:07 pm (UTC)В Линуксе в конце нормальных файлов всегда есть LF. И только в противоестественных нету :-) В ДОСе-Виндовсе, я помню, была странная традиция ставить ^Z.
no subject
Date: 2012-04-21 02:37 pm (UTC)это ж опять потом подключаться, открывать редакторы и т.п.
no subject
Date: 2012-04-20 06:10 pm (UTC)no subject
Date: 2012-04-20 07:07 pm (UTC)no subject
Date: 2012-04-20 09:50 pm (UTC)no subject
Date: 2012-04-20 09:58 pm (UTC)