VIM – это сила.
Мало того, что для этого замечательного текстового редактора написали уже более 3-ёх тысяч расширений, так еще и пишутся они достаточно легко. К слову говоря, если полазить по дебрям каталога плагинов, можно найти множество интересных и полезных утилит.
Но сила VIM не только в его расширяемости. VIM сам по себе – очень мощная штука, которую можно настроить как угодно. Именно за это он мне и нравится – я как бы создаю свою рабочую среду. Многие любители «сделай сам» поймут о чем я говорю.
VIM – это новое.
Текстовому редактору VIM и его предку VI гораздо больше лет, чем мне. И не смотря на это, я нашел работу в виме необычной, и могу смело сказать – что это разрыв привычной текстовой обыденности.
Мы привыкли к IDE, привыкли клацать мышкой и выделять фрагменты текста, привыкли, что наша правая рука прыгает от букв к стрелочкам, а потом легким движением оказывается на мышке, и потом снова на стрелочках, а потом опять на буквах клавиатуры. Всё это обыденность.
С VIM вы будете делать всё совершенно иначе. Моя рука всегда в одном положении, я полностью забыл о клавишах-стрелочках и мышке. Они просто не нужны. Я так же смог забыть о клавише CTRL. Мне больше не нужно зажимать мизинцем CTRL SHIFT ALT.
Вим имеет несколько режимов. Основные режимы это Вставка и Normal-mode. В режиме вставки vim ведет себя так же, как и обычные текстовые редакторы. Normal-mode создан для того, чтобы манипулировать текстом.
Вим очень минималистичный, в нём нету красивых кнопок и рамок. Многим не нравиться это, но в действительности это позволяет вам сосредоточиться на тексте, дать тексту больше места, освободив экран от ненужных элементов, к котором вы обращаетесь раз в неделю.
VIM – это вы.
Вы вольны настроить всё так как вам нужно. Не нравиться то, что переход в normal режим происходит по клавише ESC? Это можно легко исправить! Хотите, чтобы цвет фона в режиме вставки был другого цвета? Легко! Хотите, чтобы цветовая схема отличалась в разное время суток? Пожалуйста! Хотите написать своё дополнение? Тогда пишите его на родном Vimscript, или воспользуйтесь Ruby, Python, Tcl, Perl или Lua!
VIM – это расширяемость вашей мечты!
vim на самом деле легко расширять и дополнять. Помимо простейшего встроенного языка программирования Vimscript вы можете воспользоваться своими любимыми языками, вот краткий пример на ruby:
# выведем имя текущего буфера: VIM::message VIM::Buffer.current.name # проверим, есть ли в текущем буфере TODO задачи: buffer_object = VIM::Buffer.current 1.upto(buffer_object.length) do |count| if buffer_object[count].match(/TODO/) VIM::message "TODO detected! in string number #{count}" end end
Разве это не мечта настоящего хакера? Инструмент, который так легко расширять и дополнять!
VIM – это не так сразу.
Проблема в том, что вам придётся потратить некоторое количество времени на освоение базовых возможностей. Многих отпугивает это, но в действительности, через некоторое время вы получите мощнейший инструмент в своих собственных руках.
А что дальше?
В следующей статье я хочу более подробно рассказать о расширениях, приведя пример простенького расширения на языке руби.
Надеюсь вам понравилось.

{ 13 comments… read them below or add one }
VIM – вещь отличная, но я все равно буду пользоваться gedit :)
А хотя кто знает… Может быть когда-то изменю свое мнение :)
Иегуда ведь тоже поменял мнение :)
А вообще посмотрите на совершенно свежий шедевр — http://stevelosh.com/blog/2010/09/coming-home-to-vim/
Эта статья недавно очень громко прошумела.
vim самобытный софт. Чтобы упростить вхождение в vim, некоторые рекомендуют попробовать cream, но мне кажется, что тогда не почувствовать всю мощь модального редактирования (чего стоят только эти триады — cit, dit, vit и cat, dat, vat)
А я все таки смог перейти на text-mate. Правда меня хватило на пару недель %)
Text-mate супер вещь, но руки у меня уже заточились под vim.
Gedit тоже отличный редактор. Расширяется на пайтоне и си, и это очень радует меня =) К тому же для gedit’а уже написали плагин-эмулятор vim’а.
В общем кому что нравиться.
(Не)совсем корректное сравнение в месте «давайте сравним». Вы забыли учесть то, что вим не всегда находится в командном режиме, ну и диалоги поиска далеко не во всех редакторах заполнять надо мышкой.
Спасибо, в целом – да, я немного ошибся :) настолько сильно позабыл обычные текстовые редакторы.
Для обычных текстовых редакторов выбраны странные(очень сильно неоптимальные) сочетания клавиш для сравнения
Вот скажем так «обычные» из NetBeans/Notepad++/VisualStudio:
удалить слово после курсора CTRL+DELETE
выделить всю строкуи скопировать её HOME(перейти в начало строки, чтобы выделением не захватить лишние символы) + Shift+Down-ARROW + CTRL+C
прыгнуть в начало строки HOME
прыгнуть к первому символу в строке HOME (это не ошибка – просто в зависимости от положения курсора его перебросит или к 1-му символу или в самое начало строки)
удалить всю строку Ctrl+Y
Согласитесь такой вариант сочетаний выглядит значительно удобней чем «много раз». Нельзя писать в сравнении о том, в чём Вы уже разбираетесь слабо.
Привет. Спасибо за замечание, ошибся в этом. Поторопился и забыл сочетания.
Но даже не смотря на это, в виме вообще не нужны ctrl/стрелки и тем более home/end-клавиши, что в любом случае плюс.
Пользовался TextMate больше 2-х лет, но почему то потянуло к Vim :)
Пару недель пользуюсь MacVim – только положительные впечатления.
Но TextMate по-прежнему нравится, да и привычка делает свое дело – пишу в нем пока что эффективнее/быстрее, чем в MacVim.
Сейчас пользуюсь обоими редакторами, Vim/MacVim преимущественно для сервер-сайд или редактирования конфигов, TM – для кода.
Я с недавнего времени пересел на mac-osx и тоже начал пользоваться text-mate. Пока мне очень нравиться.
Думаю важно знать вим, очень часто бывают случаи, когда приходится работать с удаленным сервером, имеющим в своем орсинале только vi :)
Хотелось бы добавить, что в целом скорость написания текста в этой профессии вообще не важна, думаем мы все равно больше.
Очень интересует вопрос, есть ли в VIM, подсказки при вводе для PHP 5.3, css, js? Легко ли обновлять их после выхода новых версий?
Есть стандартный автокомплит, работает в Insert-mode по нажатию Ctrl + N :)
+ есть полно всяких omni-complete, посмотрите на http://www.vim.org, но думаю такого умного автокомплита, как например в netbeans в виме нету. Считается, что вим это текствый редактор, а не IDE, поэтому писатели плагинов особо и не стараются реализовать что-то подобное.