Pull to refresh

Comments 67

Изначально консольная программа не подразумевает картинок
По картинке можно определить много вещей: консольная ли программа(ога), стандартная подсветка синтаксиса(фон), «многооконность»(Window splitting) и т. д.
И хочу заметить что у это" изначально консольной программы" есть GUI.
А как же ASCII art? Чем не картинки? :)
вы не видели видимо вим никогда, он такой бывает «консольный», что иногда и новомодные, популярные иде меркнут с своими рюшечками.
А я так и не понял, как они это сделали. Т.е. как блок выделили — с этим все просто, а вот дальше…
UFO just landed and posted this here
Че дальше-то? Все просто: жми c, вводи свой текст, потом, выйдя в командный режим по Esc, Vim заменит object1 на твое творчество.
Короче, читай туториал. Для запуска его в *nix просто выполни команду vimtutor. В Windows перейди в Пуск->Программы->Vim->Vim tutor.

2 часа муштры – и ты начинающий vim-джедай!
Точно, спасибо. Забывал выйти в командный режим, теперь работает :)
Помоему это делается вот так: w<C-S-v>6jIfoo
а в посте наверху описанно, моя ошибка не заметил там ещё вместо I с
У меня были мысли, что неплохо бы вставить несколько картинок, но, насколько я знаю, тут для них надо использовать специальный хаброхостинг, а я пока еще не нашел, где он находится.
Спасибо. Обязательно воспользуюсь — если не в этот раз, так в следующий.
Спасибо, добавил в избранное.
По поводу табов. Сам использую их, но при больших проектах это не совсем удобно. Смотрю в сторону какого-нибудь project-manager плагина
Согласен, когда число открытых файлов доходит, скажем, до 50-ти, табы уже не справляются. Они работают до тех пор, пока все открытые вкладки видны на экране, а это 7-10 файлов (кошелек Миллера). Дальше нужно что-то другое. Я пока использую плагин Buffer Explorer, но мне там сильно не хватает прогрессивного фильтра (когда вводишь сочетание букв, и по мере ввода в списке остаются только строки, содержащие это сочетание). Все никак не соберусь его написать, хотя и хочется.
FuzzyFinder? В принципе, более-менее хватает и :b foo, но оно «слепое».
Огромное спасибо! Кажется, это именно то, что нужно.
У меня сразу не заработала подсветка результатов поиска, оказывается в .vimrc было:
set nohlsearch " Don't highlight search results

Заменил на:
set hlsearch " Enable highlight search results


Еще советую использовать следующие бинды, очень помогают для настроек:
map ,vv :vsp $MYVIMRC " открыть файл конфигурации .vimrc
map ,V :call ReloadRc() " перезапустить файлы конфигурации

(в нормально режиме набираем ,vv для редактирования или ,V для перезапуска конфигурации)
> Разбивать окна (окна в терминологии Vim) удобно по сокращенным командам Ctrl-W s и Ctrl-W v, закрывать по Ctrl-W c (это быстрее, чем набирать команды :split и :vsplit)

Я пишу сокращенно :sp и :vs соответственно. ИМХО, это быстрее, чем жмакать Ctrl+W s и Ctrl+W v. Тут кому как удобнее.
Не понял зачем вы поиздевались над звездочкой, она в принципе и нужна для быстрого перехода к следующему вхождению слова и то что меняется контекст это логично, а подсветить вхождения слова под курсором можно через /<ctrl-r-w> в крайнем случае повесить бинд на данную комбинацию.

Не знаю может читали, как по мне одна из луших заметок о эффективном кодинге в виме.
А как вы языки переключаете?

От себя добавлю )
set keymap=russian-jcukenwin «переключение на русский через ctrl-^
set iskeyword=@,48-57,_,192-255 „учим вим правильно “понимать» русские слова
Языки переключаю системным переключателем (Punto Switcher позволяет повесить переключение раскладки на Caps Lock, чем я и пользуюсь).

Эти две строчки у меня в _vimrc тоже есть, и переключение по Ctrl-^ вполне работает, но через некоторое время я понял, что использовать системный переключатель удобнее. Прочитав книгу Джефа Раскина, я даже понял, почему — так увеличивается «монотонность» (в его терминах) интерфейса. Он называет «монотонным» интерфейс, в котором одно действие можно выполнить только одним способом, и считает эту «монотонность» положительной характеристикой. Мне кажется, он прав — если везде переключать раскладку одним способом (по Caps), а в Vim'е — другим (по Ctrl-^), это будет создавать некоторую путаницу.
> " выключить подсветку: повесить на горячую клавишу Ctrl-F8
> nnoremap <C-F8> :nohlsearch<CR>


Как говорится «На вкус и цвет...», но мне всё же нравится/кажется_более_логичным не отключать подсветку полностью, а переключать режим подсвечивать/неподсвечивать.

:nnoremap <C-H> :set hls!
Сорри. Сам nohlsearch не пользуюсь и неправильно понял её назначение, хотя чуть дальше в тексте про это было. Конечно же сброс подсветки нужен.
Пользуясь моментом, хочу пропиарить плагин друга, для автодополнения как в IDE (пускай и только для C используя llvm но все же): ccode на GitHub
А я с вкладками работаю
Alt+j — переключится на вкладку слева
Alt+k — переключится на вкладку справа
Alt+h — переключится на первую вкладку
Alt+l — переключится на последнюю вкладку
С зажатым при этом Shift вкладки двигаются

nbsp; nbsp;fu! TabMoveLeft()
nbsp; nbsp; nbsp; nbsp;let current_tab = tabpagenr()
nbsp; nbsp; nbsp; nbsp;if current_tab > 1
nbsp; nbsp; nbsp; nbsp; let current_tab = current_tab - 2
nbsp; nbsp; nbsp; nbsp; execute 'tabmove' current_tab
nbsp; nbsp; nbsp; nbsp;endif
nbsp; nbsp;endf

nbsp; nbsp;fu! TabMoveRight()
nbsp; nbsp; nbsp; nbsp;let current_tab = tabpagenr()
nbsp; nbsp; nbsp; nbsp;execute 'tabmove' current_tab
nbsp; nbsp;endf

" предыдущая вкладка
nmap <A-j> :tabpreviousimap <A-j> <C-O>:tabpreviousvmap <A-j> :tabprevious" следующая вкладка
nmap <A-k> :tabnextimap <A-k> <C-O>:tabnextvmap <A-k> :tabnext" первая вкладка
nmap <A-h> :tabfirstimap <A-h> <C-O>:tabfirstvmap <A-h> :tabfirst" последняя вкладка
nmap <A-l> :tablastimap <A-l> <C-O>:tablastvmap <A-l> :tablast" переместить вкладку в начало
nmap <A-S-h> :tabmove 0imap <A-S-h> <C-O>:tabmove 0vmap <A-S-h> :tabmove 0" переместить вкладку в конец
nmap <A-S-l> :tabmoveimap <A-S-l> <C-O>:tabmovevmap <A-S-l> :tabmove" переместить вкладку назад
nmap <A-S-j> :call TabMoveLeft()imap <A-S-j> <C-O>:call TabMoveLeft()vmap <A-S-j> :call TabMoveLeft()" переместить вкладку вперёд
nmap <A-S-k> :call TabMoveRight()imap <A-S-k> <C-O>:call TabMoveRight()vmap <A-S-k> :call TabMoveRight()
В общем вот pastie.org/2825448
И в придачу что бы по фреймам(окнам) путешествовать сделал вот так:
map <C-h> <C-w>h
map <C-j> <C-w>j
map <C-k> <C-w>k
map <C-l> <C-w>l
Ненавижу вим.
Особенно режимы эти идиотские. Как на минном поле. Если читать того же Раскина, он пишет, что режимы — зло, и абсолютно прав. Особенно нелегко новичкам.
Смысла пользоваться этим убожеством нет. Настраивать «под себя» ЭТО бессмысленно. Это блин в конце концов текстовый редактор, а не система управления космическим кораблем! Почему чтобы тупо отредактировать файл, человек должен заучивать какие-то магические кнопки, режимы и прочую фигню?
Да, действительно, режимы — плохо.
But there are good parts.
Вы — самый простой неосилятор, который пытается доказать всем, что знания ему не нужны. Необходимо бояться незнания, а Вы ими кичитесь. И это — неверно, ибо выставляет Вас в дураках.

Vim — редактор для действительно грамотных и умных людей, которым надо просто выполнять свою работу. А вам я советую выключить крякнутую Visual Studio и почитать книги умных людей, которые жили до нас с Вами.
Иногда я просто вынужден пользоваться этим редактором, поэтому я более менее его изучил, по крайней мере могу не задумываясь отредактировать то, что мне надо и сохранить и т.д… Но рвотный рефлекс как был так и остался.
Это точно НЕ редактор для действительно грамотных и умных людей. Это редактор-инвалид, к которому вы пытаетесь приделать костыли, чтобы он хоть как-то позволял в нем работать. А смысл?
Да вы почитайте статью внимательно.… Список команд, которые вообще не запомнить, запишите на шпаргалку…
Круто! Давайте выучим 100500 команд наизусть и еще будем под рукой иметь минисправочник — вот эффективная работа!
Я предпочитаю это время тратить на решение бизнес-задач.
Vim, как и любая другая программа должна использоваться по назначению. Т.е. если Вы опытный пользователь, Вам необходимо следить за работой компьютера, читать логи, править конфиги или под рукой только консоль, а нужно срочно править много кода в файле, то лучше vima ничего не найти и Вы его просто обязаны знать и все команды становятся понятны особенно тем, кто хоть каким-то образом сталкивался с регулярными выражениями.
Если ваша работа с редактором сводится к работе с небольшим файлом не требующим никаких серьезных исправлений, то конечно можно воспользоваться чем-то попроще, например nano — но для администратора он совсем не удобен, т.к. половину действий сделать невозможно, а вторую половину действий просто неудобно.

P.S. Всему свое предназначение!
P.P.S. Оставляя компьютер, делаю так: 1) CTRL+ALT+F2 2) Ввожу логин и пароль 3) vim pricol 4) Прихожу и смотрю, как любопытные варвары из виндовса пытались закрыть окошко и полазить у меня по компьютеру)))
Почему вынужден? Вас как-будто по дулом пистолета заставляют его использовать, всегда есть альтернатива, не используйте его и будет вам счастье.

А команды не нужно запоминать их нужно чувствовать, понятное дело что не сразу приходит, но потом кайф.
Обожаю VIM.
Особенно эти прекрасные режимы. Как в идеальной вселенной. Если читать а не писать — один режим, писать а не читать — другой; Ъ

Смысла не пользоваться этим — нет. Настраивать «под себя» ЭТО осмысленно. Это в конце концов редактор, а не система управления проектами!
Почему чтобы тупо отредактировать файл, человек должен заучивать какие-то магические кнопки, режимы и прочую фигню? Можно же включать мозг и понимать что каждая комбинация принадлежит с слову.
P.S. n — normal, v — visual, i = inpit, r — replace, H — high, M — medium, L — low,
Режимы не позволяют делать дело, не задумываясь. Ой, я забыл нажать i и успел при этом набрать слово, и теперь вместо того, чтобы набралось слово, у меня что-то удалилось или отменилось или еще выполнилось несколько команд о которых я даже не в курсе.

P.S.А двоеточие какому слову принадлежит?
я более менее его изучил, по крайней мере могу не задумываясь отредактировать то, что мне надо и сохранить и т.д…

Режимы не позволяют делать дело, не задумываясь.

Я что-то запутался, вы можете не задумываясь редактировать в Vim или нет?
могу, после многолетних тренировок
А если клавиша недожалась? Или там надо жать энтер для подтверждения команды?
Не очень понял вопрос, если честно.
Т.е., например, я в неком командном режиме. Где обычно человеческое слово может быть, например, целой пачкой однобуквенных команд. И вот мне надо в документ это слово вписать. Ткнул я в кнопку перевода другой режим (i или что там, чтобы перейти в режим ввода, но не дожал до конца ее, клава старая больная или еще какая беда), но режим не сменился и я, вместо желаемого слова, вбил пачку команд, не глядя, по инерции, с пулеметной скоростью слепой печати, которые мне что то в тексте похерили, что то заменил, а потом до кучи все это сохранили. И что делать после этого?

З.Ы. Я вим в глаза не видел, просто часто он последнее время темы на него встречаю…
После этого надо нажать несколько раз u в командном режиме чтобы сделать undo до корректного состояния и повторить заклинание.
Сохранить документ в Vim можно по команде :w. Поэтому если Вы наберете что-то вроде :foo bar gorokhovy sup и нажмете Enter, Vim разразится приступом детского гнева.
Да-да, а вместо :wq используется :x (это не смайлы xD)

Я все время :wq использовал, только недавно на более короткий начал переучиваться.
Автор молодец, но немного замечаний:
1. Упомянуты плагины, но автор не упомянул про эффективное управление ими. Например pathogen.
2. Автор говорит, что нет автодополнения как у IDE. Если плагины, реализующие это, с описанием автодополняемых методов и атрибутов и прочими плюшками (по крайней мере для Python я себе это сделал, как в других языках, не ведаю).
3. Автор предлагает запомнить команды типа :'<,'>s/$/\r/g. Я бы предложил просто почитать документацию по этой теме и понять принцип их построения (эти команды наследие ex редактора).
4. Не вижу в этом особого смысла: nnoremap <M-1> ciw, nnoremap <M-5> cw. Комбо и так коротко, зачем его на шорткат вешать? :)
2. Автодополнние по ^P/^N есть и без плагинов. Для перла специальное автодополнение тоже есть — показывает варианты не только из текущего файла, но и из модулей, включая системные.
Стоит упомянуть, что особенно удобен vim и навигация в его стиле при наличии навыка «слепой» печати. Пальцы все время на стандартной позиции — не надо «бегать» за стрелками курсора.
Ага, зато надо «бегать» до кнопки Escape. По моему опыту, чаще оказывается проще стрелками перемещаться, не выходя из режима вставки, чем исполнять Esc, h/j/k/l, a/i.
Мне (возможно субъективно) проще добраться до Esc и вернуться, чем до стрелок курсора.

Причина видимо в том, что чтобы попасть по Esc не нужно перемещать кисть руки, а для стрелок надо.
В консольном виме есть C-[, в gvim его тоже можно включить. Ну и esc вимеры часто ремапят куда-то в район капслока, таба или тильды.
С вами многие согласны, поэтому ремаппинг Esc на CapsLock один из самых популярных для vim.
самая простая и самая удобная фича — постоянное наличие «под рукой» 2-буферов обмена

1) y(ank) / p(aste)
2) C-c / C-v

т.е. тривиальное действие — копирование строки (у), вставка этой строки на новое место(р) и замена в новой копии некого фрагмента (ранее скопированного в С-с) происходит на 1-2

отличный справочник (почти все главные фичи):
www.rayninfo.co.uk/vimtips.html
К VIMу было «подходов» 5, наверное. Сначала живой интерес к этому редактору, так как он очень популярный. Терпел, старался… не осилил. И так пару раз. Последний «подход» длился почти 2 недели, старался использовать его на работе, дома. Заставлял себя, так как понимал, что со временем и с определенными усилиями пальцы сами запомнят нужные комбинации, нужные режимы и т.п. Редактировать код действительно стало удобно, быстро и интересно, даже. Появился некий fun.
Но, увы, в больших проектах, где ты не знаешь всего кода, где нужно часто использовать поиск, где нужно прыгать по методам, классам и т.п. для меня все же ближе оказалась IDE (PyCharm для Python). Хотя больше половины функциональности не использую: работа с mercurial, git, debugger — все делаю в консоли.
VIM сейчас использую для создания и редактирования мелких файлов, но для больших проектов мне больше времени и сил экономит PyCharm.
Полностью согласен с предыдущим комментатором.

Я сейчас работаю примерно на половину в Vim и на половину в PyCharm. Не люблю PyCharm за то что он тяжеловат, но куда деваться. А не люблю Vim за то что… хотя коротко не скажешь.

В моих глазах, идеальный процесс разработки должен быть примерно такой: у меня есть идея, она мне нравится и я ее реализую за 2 часа. Причем, я трачу 10 минут на кодинг и 110 минут на доработку идеи «на ходу». Я могу использовать самые крутые технологии и инструменты, это не имеет значения. Мне не важно как я это делаю, главное что через 2 часа проект готов и запущен. Ну, это в идеале, как происходит на самом деле мы знаем.

Возвращаясь к Vim, если мне вдруг потребовалось что-то сделать, то софт которым я пользуюсь, в идеале, должен это уметь. А я должен это найти, причем быстро. Я понимаю что Vim можно настроить под себя, есть куча плагинов, но заниматься этим — совершенно некогда. Например, мне надо посмотреть все неиспользуемые переменные в большом куске кода. Моя текущая среда на это не настроена, я это сделал два года назад и забыл. Мне намного проще и быстрее открыть PyCharm, который это умеет по дефолту, чем вспоминать как это сделать в Vim.

Знания это конечно хорошо, но, все-таки лишние знания тоже бывают, особенно после окончания школ/универов и прихода в реальную жизнь. Вот, например, кто из тех, кому за 25, может назвать теорему Гаусса? Мой поклон тому кто помнит, о чем она вообще. Я — нет. А ведь школьный курс физики, ведь знали же.

Вывод: Vim хорош для небольшого домена задач. Статья полезна для общего развития, но новичков скорее отпугнет (привет nano). Использовать Vim как IDE — это, пожалуй слишком. Если у вас получается — это ваш выбор, не мне судить.
ух ты
большое спасибо за nohlsearch

заменил свой дурацкий вариант:
«map /I don't know other waymap :nohlsearchуж извините, но привык по виндузятницки отменять подсветку эскейпом :)
съели символы :(
заменил свой дурацкий вариант:
"map <Esc><Esc> /I don't know other way<CR>
map <Esc><Esc> :nohlsearch<CR>
Sign up to leave a comment.

Articles