Разработчик любой мало-мальски приличной программы сталкивается с проблемой -- как донести до пользователя основные возможности программы и как сделать их использование максимально эффективным.
В деле донесения хорошо работает грамотная документация с приличным поиском, книги и разнообразные users guide40...
В деле же максимизации эффективности использования возможностей в работе также существует нескольно основных подходов.
Во первых -- поместить все функции в единое меню.
Это работает для довольно небольшого числа функций. Когда же их сотни, а часто используется достаточно большое их подмножество этого явно не достаточно.
Впрочем некоторые все же идут и таким путем (к примеру xemacs), но в качестве дополнения к основному варианту, которым в emacs, например, являются длинные составные хот-кеи.
Есть и дальнейшее развитие подобной мысли.
Почему мы ограничивается единственной отправной точкой -- режимом редактирования?
Когда любая буква отобразается на экране и соответственно не может быть первой в команде.
Да и не так уж и часто приходится набирать текст -- не чаще, чем его редактировать...
Посему в ViMреализована концепция многорежимности.
Есть режим для ввода текста, для ввода команд, для оперироания блоками и тому подобное.
Постараюсь перечислить основные режимы работы:
- основной
- -- предназначен, для просмотра и редактирования файла, а также для перехода из него в другие режимы.
Из любого режима в командный можно попасть по нажатии (иногда два раза) <ESC>.
- командный
- -- при нажатии ``:'' в основном режиме вам становится доступна командная строка ViMв которой вы можете вводить команды.
Пока запомните 3 из них - команда выхода quit (ViM понимает сокращения, так что вы можете писать q), команда сохранения write (или w), параметром которой может быть имя файла и вызов справки по, очевидно, help (или h).
- визуальный
- -- предназначен в первую очередь для выделения блоков текста.
Для запоминания предлагаются 3 варианта перехода в этот режим - v для посимвольного выбора, <Shift>+v для построчного и <Ctrl>+v для блочного.
Вы также можете перемещаться между концами выделения по команде ``o'' и ``O''.
В нормальном режиме (при переходе по ``v'') вы можете оперировать следующими сущностями: слово (``w''), предложение (``s''), параграф (``p'') и блок (``b'').
Выделение при этом начинать с позиции курсора (``a''), или же с начала блока (``i'').
Например, выделение текущего блока (участка, ограниченного парными элементами) можно произвести следующим образом -- <Esc>vib41.
Копирование в буфер выделенного текста осуществляется по ``y'', вырезание по ``d'' а вставка соответственно ``p''.
- режим редактирования
- -- переход на него осуществляется, к примеру, нажатием <Ins>.
- режим поиска
- -- становится доступен при нажатии ``/'' (или ``?'') в основном режиме.
Возможен и инкрементный поиск (то есть результат поиска отображается сразу по вводе очередной буквы) если вы установите переменную ``incsearch'' в вашем конфигурационном файле.
Footnotes
- ... guide40
- Также весьма любопытна идея пользовательских агентов, пока не получившая должного распространения, за исключение малоэффективных и откровенно примитивных поделок на манер майкроссофтовского скрепыша...
- ...<Esc>vib41
- То же отностится и к основному режиму. Так, для удаления текущего блока можете воспользоваться командой dab (``delete a block'')