11 ноября 2006 г.

Vim - отличный инструмент для работы с текстом.

Vim. Настоящий *никсоид просто не может не знать, что это такое. Для начала идем в википедию и по запросу "vi" получаем следующее:
vi is a screen-oriented text editor computer program written by Bill Joy in 1976 for an early BSD release.
Да, vi уже 30 лет. Это стандартный для всех *nix'ов редактор, обладающий огромными возможностями. Vi IMproved (aka Vim) появился несколько позже, 15 лет спустя, вместе с операционной системой Linux. Программа, успешно просуществовавшая так долго, просто не может быть неинтересной.

Что же из себя представляет Vim? Это консольный текстовый редактор. Не надо махать рукой и закрывать эту страницу. Vim не похож на те редакторы, которыми приходится пользоваться в оффтопике (блокнот и иже с ним) или графических средах (gedit, kwrite, kate, mousepad aka leafpad). Не похож он и на другие консольные текстовые редакторы (nano и редактор MC). "Как так? Чем же может один из текстовых редакторов так сильно отличаться от остальных?" - спросит человек, ни разу в жизни не видевший Vim. И я отвечу. Основная "фишка" Vim заключается в том, что он работает в двух режимах. Режим вставки (Insert), как таковой, мало отличается от любого другого редактора - тут уж трудно изобрести велосипед. Есть курсор, есть текст, текст появляется за курсором. Все как должно быть. Гораздо более интересен стандартный (Normal) режим. Несложно заметить, что здесь не видно разнообразных меню (как в иксовых редакторах) или горячих комбинаций клавиш (как в nano). Только необходимая информация. В режиме Normal пользователь управляет курсором и дает команды редактору напрямую, нажимая необходимые клавиши и комбинации клавиш. Таким образом, например, в стандартном режиме клавиша j двигает курсор вниз, клавиша k - вверх, h - влево, l - вправо. Непривычно? Согласен. Но не забываем об оптимизации рабочего времени: чем тянуться к стрелкам, гораздо удобнее управлять курсором этими клавишами - остальная часть клавиатуры остается под рукой и не нужно отвлекаться и переносить руку в случае чего. О функциях клавиш можно узнать, использовав команду:
$ vimtutor
откроется туториал, по мере ознакомления с которым вы будете узнавать функции клавиш и сразу же пробовать применять их. Рекомендую сразу же этим заняться, если редактор вас заинтересовал.

Для тех, кого редактор еще не успел заинтересовать - пара слов о его возможностях. Первое, на что стоит обратить внимание - Vim умеет повторять выполнение команды. Достаточно ввести в Normal режиме 2dd, чтобы удалить две строки подряд. Или, если быть точным, вырезать их. Клавиша p в Normal режиме вставит удаленный (то есть вырезанный) текст после курсора. Опять же, 2p вставит его два раза. Это только пара примеров - вы можете применять эту функцию так, как вам только заблагорассудится. Удобно? Не сомневаюсь.

На скриншоте вы заметили раскраску текста в конфигурационном файле. Это так же одна из возможностей этого редактора. Естественно, раскраской кода никого не удивишь. Однако, полезность этой функции никто не отменял.

Нажав в Normal режиме ":", пользователь получает возможность ввести команду редактору. Например, ":w" сохранит документ, а ":q!" позволит выйти без сохранения. При установленном модуле TeX можно компилировать TeX-документы не отходя от кассы. Командой ":r документ" можно вставить после курсора содержимое документа "документ", а если вы хотите выполнить какую-нибудь команду "не отходя от кассы", то просто введите:
:! команда_и_ее_аргументы_как_в_обычной_командной_строке
Удобно? Не то слово. Особенно, если редактируемый документ надо компилировать (LaTeX или языки программирования) или, скажем смотреть в броузере (HTML-документы, CSS-стили).

Если попользоваться им некоторое время, то привыкаешь к нему настолько, что уже не хочется видеть другие, более "дружественные" текстовые редакторы. Пользователи операционных систем Window$ могут насладиться удобством Vim, если скачают с официального сайта http://www.vim.org/ версию для win32. Пользователи же Linux могут по этому поводу даже не волноваться. В репозитарии любого дистрибутива есть Vim и различные модули к нему (если сам Vim еще не ставится вместе с дистрибутивом), а vi идет со всеми дистрибутивами изначально.

Небольшое обновление: раскраска кода в Vim. Копируем файл /usr/share/vim/vimfiles/vimrc в ~/.vimrc , после чего в полученной копии находим и раскомментируем строку:
"syntax on
если наш терминал с темным фоном, раскомментируем и это:
"set background=dark

11 комментариев:

Анонимный комментирует...

Отлично :)

virens комментирует...

Как раз то, чего хотелось услышать. Спасибо!
Есть вопрос: вот у меня уже установлен Vi, а ViM от него сильно отличаться будет? И с чего лучше начинать - с vi или vim?

vonderer@darkstar комментирует...

Лучше всего поставить Vim. Мне неизвестно, существует ли vitutor, а вот vimtutor есть точно. :) По поводу раскраски кода можно почитать здесь. Советую сразу же поставить vim-full и vim-scripts. При желании можно поставить пакет для LaTeX (vim-latexsuite), но описанная мною в письме проблема там присутствует.

Igor комментирует...

Я где-то переводил маленький мануал по vi и его клонам, лежит у меня в блоге в разделе pages. Но никогда им серьёзно не пользовался - для маленьких программ и текстовых файлов использую nano, для больших программ - Eclipse, а большие тексты я пишу в html, в Seamonkey.

vadim303 комментирует...

Безусловно интересный и мощный редактор. Пару раз пытался на него перейти, но слижком уж непривычна методика работы в нём... вот было бы ещё кроме туториала методика поломки старых привычек и перехода к новым :)

vonderer@darkstar комментирует...

А методика простая, на самом деле. Не лениться. :) Просто исключи использование всех остальных редакторов. Сделай волевое усилие, как говорится. :) Это один из самых мощных и удобных текстовых редакторов. :) И определенно стоит того, чтобы использовать именно его.

serhiy cherevko комментирует...

Полностью поддерживаю vonderer@darkstar.
Ставить советую Vim. С дополнительных пакетов не помешают русский пакет.
http://sourceforge.net/project/showfiles.php?group_id=83555
Вообще у Vim документация на уровне

Roman Lagunov комментирует...

Когда только начинал знакомиться с линукс, сразу же решил стараться делать все by linux way.

Поэтому после первой установки установки линукс сразу же занялся изучением vim. Тем более, что у меня была книга, описывающая методы работы в с текстами в линукс - там vim был подробно освещен.

Правда, я уже несколько лет пользуюсь emacs, но vim у меня устанавливается в обязательном порядке.

Не помню кто конкретно это сказал:

"Есть только два настоящих редактора - vim и emacs".

vonderer@darkstar комментирует...

Вот привычка что творит! Работаю в kile, хочу документ сохранить, жму Esc, и ввожу :wq, нажимаю Return и не понимаю, почему у меня в тексте лишние буквы появились. :-D

Анонимный комментирует...

Поддерживает ли vim utf-8 символы ?

Андрей «вон» Т. комментирует...

Да. По умолчанию он работает в той же кодировке, что и консоль.

Отправить комментарий