У вас получилось О(n), с клавиатуры получается O(1) =) :%s@\<old_name\>@new_name@g
Добавьте в начало tabdo, eсли нужно провести замену в нескольких открытых файлах.
Похоже, перед добавлением статьи в этот блог надо ставить галочку "Я прошёл vimtutor" (привет, ZyXI =)
Но для того, чтобы сместиться на два-три слова вправо, — переходить в какие-то режимы и обратно, да еще и считать это киллер-фичей вима, — увольте.
Для этого не надо выходить из режима вставки. Ctrl-O, 3w, печатаем дальше.
У вима из коробки есть несколько уникальных возможностей редактирования, которых нет в IDE
Перейти к следующему/предыдущему абзацу — Да, это было бы полезно иметь в IDE. Но в основном при редактировании статей для хабра, а не для кода.
Перейти до пробела. — Ну, можно считать полезной штукой, но не слишком крутой. Несколько раз нажать ctrl-стрелочка будет иметь тот же эффект.
Можно и номер телефона вводить вот так, будет тот же эффект, что обычная форма.
Серьёзно, это очень круто — редактор делает ровно то, чего я от него хочу. Круче только нейроинтерфейс, наверное.
У Раскина я прочёл "режимы — плохо, квазирежимы — туда-сюда". Допустим. Предложите текстовый редактор без режимов. ЕМНИП, при жизни и участии Раскина, а так же в течении нескольких лет после его смерти, у команды программистов Raskin Center for Humane Interfaces эту задачу решить не получилось — проект заглох на стадии альфы. Получившимся недо-Emacs'ом с квазирежимами оказалось неудобно пользоваться. https://en.wikipedia.org/wiki/Archy
Есть ещё ссылки?
Шутка в том, что IDE (и большинство редакторов) вы открываете и 95% времени проводите в режиме ввода текста (если вы нажмёте на клавишу, то в текст добавится новый символ). Vim сразу открывается в режиме навигации, и он в нём силён.
Даже пользователи обычной Visual Studio немного обиделись, которая штук семь языков поддерживает «из коробки» и ещё немало с помощью сторонних плагинов.
В vim из коробки 500+ файлов синтаксиса =) Мне их столько не надо, но на какой язык\синтаксис бы меня не забросила работа — всё или уже есть, или легко скачать и доставить — C, C++, Bash, Python, Perl, PHP, Javascript, HTML, XML, Yaml, ini-файлы, error-файлы — это я пробовал сам.
Чем Esc + e + i лучше, чем Ctrl+RightArrow?
Ради единственного перемещения нет смысла выходить из режима ввода. Ctrl-o + e(или любая другая команда из нормального режима) и пишем дальше.
Справедливости ради — в режиме ввода все редакторы более-менее одинаковы — нажал на кнопку, появился символ. Прелесть vim в его нормальном режиме.
Сможете переместиться на десять слов вправо, набрав 10Ctrl-RightArrow? (10e)
Сможете быстро удалить весь текст до вхождения следующего символа + в длинной строке? (dt+)
Сможете выделить текст до следующего вхождения слова в файле, не перематывая туда-сюда и не боясь пропустить слово\потерять исходную позицию? Например, выделить с текущей позиции курсора, до слова function, расположенного на N экранов ниже. (v/function)
Сможете повторить предыдущее действие редактирования любой сложности(удаление строки, замена содержимого кавычек) нажатием одной кнопки? (.)
<disclamer>
Vim не IDE, я знаю, но на наших linux-машинах нет ни IDE, ни X-ов, а из mcedit мало что выжмешь, в лучшем случае вызов внешних скриптов из пользовательского меню (я проходил). </disclamer>
Сможете перейти из файла с ошибками компиляции в нужный файл в строчку, на которой произошла эта ошибка? (gF)
Сможете выполнить любую команду оболочки, не выходя из среды? (:!make)
можно повесить любое действие на любое сочетание клавиш в любом режиме. Например, эту задачу можно решить так: если в режиме ввода нажать два раза \, то вставить пару скобок, перейти в командный режим, вместиться на символ влево, вернуться в режим ввода. Комментарий я писал дольше, чем команду.
Как-то странно перемешаны базовые и продвинутые механизмы регулярок. Я бы отправил "утверждения", "подстановки" и "модификаторы" в конец страницы, они не так часто нужны как всё остальное.
Когда-нибудь работали с огромной кодовой базой в течение 20 лет? Когда-нибудь пробовали впоследствии вернуться назад и разбить её на маленькие репозитории? Можете догадаться, к какому ответу мы пришли. Этот код очень сложно разобрать на части. Цена будет слишком велика. Риски от такого уровня смешения станут чудовищными.
У вас получилось О(n), с клавиатуры получается O(1) =)
:%s@\<old_name\>@new_name@g
Добавьте в начало tabdo, eсли нужно провести замену в нескольких открытых файлах.
Похоже, перед добавлением статьи в этот блог надо ставить галочку "Я прошёл vimtutor" (привет, ZyXI =)
Для этого не надо выходить из режима вставки. Ctrl-O, 3w, печатаем дальше.
Можно и номер телефона вводить вот так, будет тот же эффект, что обычная форма.

Серьёзно, это очень круто — редактор делает ровно то, чего я от него хочу. Круче только нейроинтерфейс, наверное.
У Раскина я прочёл "режимы — плохо, квазирежимы — туда-сюда". Допустим. Предложите текстовый редактор без режимов. ЕМНИП, при жизни и участии Раскина, а так же в течении нескольких лет после его смерти, у команды программистов Raskin Center for Humane Interfaces эту задачу решить не получилось — проект заглох на стадии альфы. Получившимся недо-Emacs'ом с квазирежимами оказалось неудобно пользоваться. https://en.wikipedia.org/wiki/Archy
Есть ещё ссылки?
Нет с вимом таких проблем. Текущий режим считывается одним взглядом в левый нижний угол.
Шутка в том, что IDE (и большинство редакторов) вы открываете и 95% времени проводите в режиме ввода текста (если вы нажмёте на клавишу, то в текст добавится новый символ). Vim сразу открывается в режиме навигации, и он в нём силён.
В vim из коробки 500+ файлов синтаксиса =) Мне их столько не надо, но на какой язык\синтаксис бы меня не забросила работа — всё или уже есть, или легко скачать и доставить — C, C++, Bash, Python, Perl, PHP, Javascript, HTML, XML, Yaml, ini-файлы, error-файлы — это я пробовал сам.
Да, дополнение лучше велосипедов. Команда только для демонстрации лёгкой расширяемости vim, это ни в коем случае не эталонное решение.
Спасибо.
Errata: "большинство сочетаний клавиш в различных режимах" =)
Нет, из дополнений у меня только slime.
А ещё можно так
На месте XXX любой набор символов, который вам удобно набирать и который не встречается в набираемом вами тексте. Традиционные варианты — jj или ;;
Например, числовыми модификаторами =)
Сможете переместиться на десять слов вправо, набрав 10Ctrl-RightArrow? (10e)
Сможете быстро удалить весь текст до вхождения следующего символа + в длинной строке? (dt+)
Сможете выделить текст до следующего вхождения слова в файле, не перематывая туда-сюда и не боясь пропустить слово\потерять исходную позицию? Например, выделить с текущей позиции курсора, до слова function, расположенного на N экранов ниже. (v/function)
Сможете повторить предыдущее действие редактирования любой сложности(удаление строки, замена содержимого кавычек) нажатием одной кнопки? (.)
<disclamer>
Vim не IDE, я знаю, но на наших linux-машинах нет ни IDE, ни X-ов, а из mcedit мало что выжмешь, в лучшем случае вызов внешних скриптов из пользовательского меню (я проходил).
</disclamer>
Сможете перейти из файла с ошибками компиляции в нужный файл в строчку, на которой произошла эта ошибка? (gF)
Сможете выполнить любую команду оболочки, не выходя из среды? (:!make)
\
, то вставить пару скобок, перейти в командный режим, вместиться на символ влево, вернуться в режим ввода. Комментарий я писал дольше, чем команду.:inoremap \\ ()^[i
f3 — выделить кусок — f3 — ctrl-f — Enter — перейти в нужное место — shift-f5 — Enter
Даже после
:set wrap
?На старых mc у vim та же проблема — ctrl-o перехватывается.
Статьям про vim не хватает опросника с вариантами типа
* - 0 или больше
[:space:] - пробельные символы
Как-то странно перемешаны базовые и продвинутые механизмы регулярок. Я бы отправил "утверждения", "подстановки" и "модификаторы" в конец страницы, они не так часто нужны как всё остальное.
Может у него в .inputrc
TAB: menu-complete
и Tab он нажал пару раз.Масштабирование Git (и кое-какая предыстория)
:exit (оно же :x ). Опционально !
Если вдруг залип капслок — ZZ или ZQ