LXF156:Дзен и Vim
|
|
|
=Дзен и Vim как искусство=
Hardcore Linux Проверьте себя на крутом проекте для продвинутых пользователей
Освоив Vim, вы будете набирать тексты быстрее и сумеете выходить из трудных ситуаций. Джонатан Робертс вас всему научит.
[[Файл: |right |400px | thumb| Отличная шпаргалка по Vim от Теда Нэйлида [Ted Naleid] поможет легко найти нужную команду перемещения Vim.]]Вопрос: Какой текстовый редактор по умолчанию установлен почти в любой существующей Unix-подобной системе, включая большинство дистрибутивов Linux, Mac OS X и системы BSD?
Ответ: Vi. Он не только вездесущ, но также запускается с командной строки и требует минимальной ширины канала при работе через сеть. Поэтому каждый линуксоид обязан знать Vi хотя бы на уровне простейшего редактирования текста: если система выйдет из строя, единственным средством вернуть ее к жизни может оказаться Vi.
Беда в том, что интерфейс Vi не слишком интуитивен. Не то что он не прост, не логичен или не обладает достаточной функциональностью, но пока кто-то не разъяснит вам, как он работает, он может казаться чужеродным.
В данной статье мы познакомимся с основами Vi, но не на примере Vi, а на примере Vim. Vim – это Vi «на стероидах»: интерфейс у него более или менее такой же, но есть масса дополнительных возможностей, благодаря которым он более удобен в повседневном использовании.
Понадобится время
Прочтя эту статью и потратив несколько недель (да, недель!) на работу с Vim, вы, возможно, уже никогда не захотите вернуться к своему старому текстовому редактору или текстовому процессору, а также сможете выходить из трудных ситуаций с помощью Vi, убивая одним выстрелом двух зайцев.
Откройте терминал и запустите Vim на редактирование нового файла:
$ vim file.txt
Вот так все просто. Но не принимайтесь печатать! В Vim есть три различных режима – обычный [Normal], режим вставки [Insert] и визуальный [Visual]. Обычный, в котором Vim запускается по умолчанию, применяется для выдачи команд, а режим вставки – для написания текста. Начав печатать прямо сейчас, вы никакого текста на экране не увидите, а будете отправлять какие-то команды, которые Vim попытается выполнить.
Для ввода текста переключитесь в режим вставки: нажмите i и наберите следующий текст (далее мы воспользуемся им в качестве примера, поэтому наберите его дословно):
us now and share the soft;
You’ll bbe free, hackers, you’ll be free.
Join us now and share the soft;
You’ll be free, hackers, you’ll be free.
Завершив набор, нажмите Esc для возврата в обычный режим. В обычном режиме можно сохранить наш (небезупречный с точки зрения орфографии и пунктуации) шедевр, набрав :write (или сокращенный вариант, :w) и нажав Enter. Если вы хотите выйти из редактора, наберите :wq, или :q! для выхода без сохранения изменений.
Полезной привычкой будет, закончив набирать текст, жать Esc для возврата в обычный режим, и вы готовы к навигации и редактированию.
Итак, почему Vim является «модальным»? Ну, он вырос из консольного приложения, и хотя сейчас имеет опцию графического интерфейса, все равно стремится ограничиться редактированием исключительно с клавиатуры. Главное преимущество в том, что не надо отрывать руки от клавиатуры ради выбора пунктов меню; а значит, текст редактируется гораздо быстрее и эффективнее.
В ходе урока вы увидите, как богат возможностями обычный режим.
Хм... Похоже, мы допустили несколько ошибок в этом тексте. Как их исправить? Первое, что нужно знать – как переместить курсор в то место, где находится ошибка.
В командном режиме можно перемещать курсор с помощью клавиш h (влево), j (вниз), k (вверх) и l (вправо). Если вы не владеете слепой печатью, выбор клавиш может показаться случайным, но данные клавиши расположены в ряду рабочего положения пальцев правой руки, где те и находятся большую часть времени, так что эти клавиши легко доступны.
Нажав k один раз, вы увидите, как курсор переместится в предыдущую строку. Сейчас он находится там, где в тексте ошибка – вместо soft должно быть software. Теперь, когда курсор в нужном положении, перейдите в режим вставки (клавишей i) и наберите ware.
Отлично, проблема решена. Следующая ошибка – bbe строкой выше: вместо этого должно быть be. Переместите курсор на строку вверх, прежним способом. Теперь нажимайте клавишу h до тех пор, пока курсор не окажется на одной из b. Чтобы удалить лишнее b, нажмите x в командном режиме.
Как быть, если вы удалите слишком много символов? Можно вернуться в режим вставки, исправить ошибку и вернуться в обычный режим, или просто нажать клавишу u. Эта команда отменяет последнее действие. Если нажать ее дважды, будут отменены два последних действия. В Vim можно и повторить последнее действие, нажав Ctrl+r.
Сделаем паузу и оценим, что мы уже освоили: этого в общем достаточно для повседневной работы с Vim. Но если тут и остановиться, вы не поймете, зачем было огород городить: рассмотренные примитивные команды не больно-то упрощают или ускоряют редактирование. Рассмотрим более сложные приемы работы с Vim.
Еще о редактировании
Готовы освоить еще несколько команд? Следующая ошибка, которую нужно исправить – «y» в начале строки должна быть заглавной. Вместо перемещения влево с помощью клавиши h можно просто нажать 0, и Vim переместит курсор прямо в начало строки.
Там вам даже не придется удалять символ, вставлять новый и возвращаться в обычный режим. Вместо этого просто нажмите r, что означает замену [replace], наберите Y – и вы увидите, что символ сменился на заглавный, а редактор уже в обычном режиме. Это было довольно быстро – 0rY. Переместитесь на строку вверх, чтобы разобраться с отсутствующим словом в начале первой строки. Это слово Join, поэтому просто перейдите в режим вставки и добавьте его в текст.
Последняя ошибка справа в самом конце этой строки – снова «soft» вместо «software». Чтобы ее исправить, можно переместиться в конец строки точно так же, как мы перемещались в начало, нажав $ в обычном режиме. Но так как мы хотим войти в режим вставки, можно нажать A.
a в Vim означает «добавление [append]». Набрав в обычном режиме a в нижнем регистре, вы обнаружите, что перешли в режим вставки, но набираемый текст будет вставляться после курсора (в режиме вставки символы вставляются перед курсором).
Набрав большую A, вы усилите и действие. Вместо перехода в режим вставки после текущего символа, вы перейдете в режим вставки в конце строки.
То же справедливо и для i: заглавная I переведет вас в режим вставки в начале строки.
К сожалению, на этом у нас заканчивается место. Продолжайте изучать и пользоваться Vim каждый день, и вы его полюбите; но даже если вы почти не будете им пользоваться, то по крайней мере сможете выйти с его помощью из трудной ситуации.
248835.png 248836.png
LXF00.tut_int.jonathan.psd Наш эксперт
Супер-скрытный Джонатан Робертс возится с Linux с ранней юности. Хотя – давно ли это было...
LXF156.tut_adv.vim_shortcuts.jpg 247690.png Отличная шпаргалка по Vim от Теда Нэйлида [Ted Naleid] поможет легко найти нужную команду перемещения Vim.
Другие ресурсы
Нам здесь хватило места лишь на основы Vim. Но этого достаточно для выживания, и мы настоятельно рекомендуем пользоваться им каждый день. Также ознакомьтесь с рядом ресурсов, чтобы узнать Vim получше, и вскоре вы не сможете даже представить себе работу в другом редакторе.
248735.png http://tinyurl.com/6omnn99 – Стив Лош [Steve Losh] возвращается к Vim. Желая понять Vim, прочтите его раздел об «Ощущениях Vim».
248737.png Руководство к Vim выдает команда vimtutor.
248739.png Команда :help в обычном режиме предоставит вам массу информации.
248741.png Запомнить распространенные команды помогут шпаргалки (http://tinyurl.com/2b7bu7d).
207898.png Не хотите пропустить номер? Подпишитесь на www.linuxformat.ru/subscribe/!
«Линуксоиды обязаны знать Vi на уровне редактирования.»
Шпаргалка с командами
Клавиша
Функция
i, Esc
Перейти в режим вставки, в обычный режим
h, j, k, l
Переместить курсор влево, вниз, вверх, вправо
x
Удалить символ над курсором
u, Ctrl-r
Отменить действие, повторить действие
0, $
Переместить курсор в начало, в конец строки
r
Заменить текущий символ
a, A
Перейти в режим вставки после текущего символа, в конце строки
I
Перейти в режим вставки в начале строки
242670.png Скорая помощь
Если вы не уверены, в каком режиме находитесь, или нечаянно начали набирать ко