Каковы преимущества изучения Vim?
Как программист я провожу много часов за клавиатурой и занимаюсь этим последние 12 лет, более или менее. Если есть что-то, к чему я никогда не привык за все это время, это то раздражающее и почти бессознательное постоянное микропрерывание, которое я испытываю во время кодирования из-за некоторых наиболее распространенных задач редактирования кода. Такие вещи, как простое копирование и вставка из другой строки (или даже из одной и той же строки) или перемещение на 1 или 2 строки вверх или вниз от текущей позиции, требуют слишком большого набора текста или использования клавиш со стрелками... и это приводит к хуже, когда я хочу двигаться дальше - в итоге я использую мышь. Теперь представьте этот сценарий, но на ноутбуке.
Я всегда думал об изучении VIM, но время, необходимое для его освоения, всегда заставляло меня отступать.
Я хотел бы услышать от людей, которые узнали это, и если это окажется одной из тех вещей, без которых вы не можете жить.
На работе я использую VS2008, C# и R#, которые вместе делают редактирование кода намного быстрее и проще, чем когда-либо, но даже в этом случае я думаю, что я мог бы наслаждаться отсутствием использования мыши вообще.
И даже не клавиши со стрелками.
34 ответа
Я использую vi и vim также около 20 лет, и я все еще изучаю новые вещи.
Сайт Дэвида Рэйнера " Лучшие из Vim Tips" - отличный список, хотя, вероятно, он будет полезен, когда вы немного познакомитесь с vim.
Я также хочу упомянуть сайт ViEmu, на котором есть отличная информация о советах по vi / vim, и особенно статья. Почему, о ПОЧЕМУ, эти психы используют vi? ( архивная версия)
Могу ли я жить без этого? Без труда.
Это полезно? Да.
Причины обучения
vi гарантированно существует во всех системах Unix и также существует в большинстве систем Linux. Такой широкий охват делает изучение того стоит.
Гораздо быстрее использовать vi для
sudo
редактировать:$ sudo vi
Также GMail использует команды vi-ish для выбора и перемещения писем!
Вам не нужно быть мастером.
Просто учись
Основы:
- Как перейти из командного режима в режим вставки I
- Как перейти из режима вставки в командный режим Esc
- Как пройти вверх по строке в командном режиме k
- Как пройти вниз по строке в командном режиме j
- Как перемещаться по левому персонажу в командном режиме h
- Как правильно ориентировать персонажа
- Как сохранить файл
:w
Введите (напишите) - Как выйти без сохранения (в командном режиме)
:q!
Войти - Как отменить тебя
- Как повторить Ctrl + R
- Вы можете совмещать запись и выход (в командном режиме):
:wq
Войти
Оттуда все остальное сделает вас быстрее.
Пробежка по vimtutor заняла у меня всего 30 минут, чего было достаточно, чтобы познакомиться с vim. Это стоило каждой секунды этого.
Если вы программист, который редактирует много текста, важно изучить редактор текстов. Какой серьезный текстовый редактор вы изучите, не очень важен и во многом зависит от типов сред, в которых вы ожидаете редактировать.
Причина в том, что эти редакторы высоко оптимизированы для выполнения задач, которые вы будете делать много. Например, рассмотрите возможность добавления одного и того же фрагмента текста в конец каждой строки. Это тривиально в серьезном текстовом редакторе, но в остальном нелепо громоздко.
Обычно считаются убийственными функциями vim: A) что он доступен практически на каждом Unix, с которым вы когда-либо сталкивались, и B) ваши пальцы очень редко должны покинуть домашний ряд, что означает, что вы сможете редактировать текст очень и очень быстро, Это также обычно очень быстро и легко даже при редактировании огромных файлов.
Однако существует множество альтернатив. Конечно, Emacs - это самый распространенный пример, и это гораздо больше, чем просто расширенный текстовый редактор, если вы действительно в него вникаете. Лично я очень счастливый пользователь TextMate после многих лет использования vim / gvim.
Хитрость в том, чтобы переключиться на любой из них, - заставить себя использовать их так, как они были предназначены. Например, в vim, если вы вручную выполняете каждый шаг в многошаговом процессе или используете клавиши со стрелками или мышь, возможно, есть лучший способ сделать это. Останови то, что ты делаешь, и найди это.
Если вы ничего не делаете, изучите основные элементы управления навигацией для vim и Emacs, так как они появляются повсюду. Например, вы можете использовать элементы управления в стиле Emacs в любом поле ввода текста в Mac OS, в большинстве оболочек Unix, в Eclipse и т. Д. Элементы управления в стиле vim можно использовать в команде less(1), в Slashdot, в gmail, и т.п.
Повеселись!
Это определенно стоит усилий.
Есть одна очевидная причина, по которой любой, кто использует Vi(m)
скажу вам и еще двум, о которых люди никогда не упоминают.
Вот очевидный:
vi
Он одновременно вездесущий и невероятно мощный, и, изучив его один раз, вы получаете возможность использовать эту мощь практически на любом компьютере с клавиатурой.
И это менее известные причины, чтобы учиться Vim
:
Это не вдвое меньше усилий, чем вы думаете. Пробежаться через репетитора Vim один раз (
vimtutor
в оболочке или в Windows запустите ее из папки Vim в меню "Пуск"), и вы уже будете на пути к компетенции, и оттуда все будет под гору. Я был до уровня, где я мог использоватьVim
на работе без заметного снижения производительности в течение обеденного перерыва менее чем за неделю.Это весело! Редактирование текста теперь для меня как игра. Я активно наслаждаюсь этим - что довольно смешно, когда вы об этом думаете.
Есть также две веские причины не учиться Vim
:
Это вызывает привыкание, и вы захотите использовать
Vim
команды во всех ваших вычислениях и проклятия, когда вы не можете. К счастью, по крайней мере для некоторых ситуаций, есть способы обойти это.Опять же, это затягивает, и хотя вы не потеряете производительность от фактического использования
Vim
, вы будете тратить часы в поисках хороших советов, чтобы сделать вашVim
опыт еще лучше, и читая тег Vim на переполнение стека.
Это определенно стоит изучить vim или emacs. Также стоит научиться печатать на клавиатуре. В обоих случаях причины одинаковы: ваше мышление больше не прерывается механическим процессом вывода вашего кода на экран.
Что касается того, как начать, просто погрузитесь и начните использовать vim для всего.
PS Дебаты о emacs-vs-vi бесконечны. Я использую Emacs в течение 26 лет. Если бы я начал сегодня снова, я бы изучил vim, потому что (a) он стал лучше и (b) гораздо меньше клавиш-модификаторов (Ctl-Alt-V, любой), и пользователи vim, кажется, получают гораздо меньше травм при печати.
Вы можете получить хорошую функциональность из vim, изучив значения только 16 клавиш: ijkdbw9:q!%s/nN
Esc. Вы можете сделать голые кости просто i:wq
Esc.
Первые две клавиши, которые вам нужно знать: Esc переводит вас в командный режим (режим, в котором вы запускаете), и i
берет вас, чтобы вставить режим (обычная печать).
Чтобы сохранить вам нужно
- выйти из режима ввода (Esc)
- введите двоеточие
:
- введите строчные
w
затем введите
Чтобы сохранить и выйти, вам нужно
- выйти из режима ввода (Esc)
- введите двоеточие
:
- введите строчные
wq
затем введите
Чтобы не сохранять и принудительно выходить, нужно
- выйти из режима ввода (Esc)
- введите двоеточие
:
- введите строчные
q!
затем введите
Чтобы узнать больше, вы можете запустить vimtutor
в командной строке. Это урок средней длины, хорошо структурированный.
за i
и Esc: вы можете повторить или превзойти некоторые функциональные возможности MS Word только с jkwbd3:%s/nN
,
b
возвращает вам слово (Ctrl+←)w
переводит вас вперед на слово (Ctrl+→)9w
переносит вас вперед на девять словdb
удаляет предыдущее слово (Ctrl+Backspace)d3b
удаляет три предыдущих слова9j
движется вниз на 9 строк- /
ornithopter
Ввод приведет вас к следующему экземпляру слова "ornithopter", затемn
а такжеN
до следующего и предыдущего появления "ornithopter" соответственно. - :
%s/confounded/dangfangled/
Введите заменяет каждый "путать" с "dangfangled" (какfind and replace all
в MS Word)
Любой из них должен быть запущен в "командном" режиме (Esc), а не в режиме вставки (i
).
Я недавно перешел на VIM, и думаю, это того стоит. Если вам нужно "просто что-то сделать", вы всегда можете оставаться в режиме вставки, где vim (в основном) похож на обычный текстовый редактор.
Я заметил, что вещи, которые раньше меня не беспокоили, например, тянулись к клавишам со стрелками, теперь чувствуют себя не так и слишком много усилий. Это определенно уменьшило моё движение рук и использование мыши, что хорошо как для эргономики, так и для производительности.
Это зависит от того, что вы хотите сделать с VIM. Не имеет смысла изучать это только потому, что многие люди не могут жить без него.
Когда я много работал в среде UNIX, я не мог жить без нее. Даже когда VIM не был установлен на машине UNIX, я мог по крайней мере использовать vi. Вы всегда можете рассчитывать на это - даже если машина не ваша (это от клиента).
Сейчас я программирую на C# и в основном работаю в среде Windows. Я установил VIM на свой компьютер... и он мне не нужен.
Оцените, действительно ли вам нужен VIM и поддерживает ли он вас в процессе работы. Попробуйте это. Играть с этим. Если вы думаете, что вам это нужно, придерживайтесь этого... кривая обучения очень крутая.
Я изучил ви, потому что должен был.
Мой безумный учитель заставил нас учиться программировать на C, используя терминал для системы AIX.
Это была настоящая боль, но оно того стоило.
Сегодня я использую только vi для быстрого редактирования или небольших программ.
Когда мне нужно пойти на проект, я скорее использую и IDE. В моем случае идея IntelliJ очень хороша в этой задаче, потому что я могу часами кодировать, не хватая мыши.
Я не знаю, сколько у VS2008 ярлыков, но если они так же открыты, как Eclipse, я думаю, что у вас проблемы - иди на vi.
Если вы НЕ редактируете код за пределами IDE, и у вашей IDE есть хорошие ярлыки, вам лучше их изучить, а затем, в любом случае, пойти и изучать vi.
:)
Я использую vi/vim более 25 лет. Если вы уже знакомы с каким-либо редактором командной строки, возможно, вам не нужно изучать vi/vim. Но если вы не очень хорошо знакомы с другими редакторами командной строки, стоит изучить их. В vi/vim довольно легко быть продуктивным без особых усилий.
Я использую VIM в значительной степени исключительно сейчас.
Я использовал Vim для редактирования и VS Editor для отладки. Это, вероятно, кажется немного сумасшедшим, но я нашел парадигму Vi (макросы, редактирование на основе домашних ключей и т. Д.) Таким повышением моей производительности, что редактирование в VS было болезненным.
Благодаря Viemu, мне даже не нужно больше переключаться. Это еще не идеальное решение (завершение кода иногда не так элегантно, как в native vim, и запись макросов не идеальна), но это намного лучше, чем постоянное переключение назад и вперед.
Кривая обучения для Vim, вероятно, преувеличена. Я думаю, что как только вы в нее попадете, это довольно интуитивно понятно
Моя работа заставила меня заняться vim, и она быстро стала второй натурой. Теперь мои жалобы касаются IDE, в которых нет эмуляции vim или плагинов. Я заметил, что клавиша esc стала моим врагом за пределами vim.
Я нашел несколько эмуляторов для vi в Visual Studio:
Я поддерживаю очень большой проект Linux на удаленном компьютере. Нет никакого выбора использовать Eclipse или аналогичную IDE на основе GTK. Я работаю там 3 года. И я установил свой VIM только для этого проекта. И все еще настраиваю.
Теперь я могу делать что угодно из Vim: контроль исходного кода, sql, отладка, компиляция, просмотр - действительно быстрый просмотр по исходному коду 1 Гб.
Visual Studio или Eclipse не могут справиться со всем этим. И если бы у меня был выбор, я бы не сменил Vim на другой редактор или IDE.
Два преимущества vi/vim:
это очень легкий
он установлен почти на каждой системе *NIX
Я выучил Vim. Это было не слишком много усилий. Теперь я абсолютно люблю ci" ci( cw V:s/from/to/g
Во-первых, хорошее знание vi (m) сэкономит вам время, необходимое для срочного редактирования файлов конфигурации на сервере под управлением seige. Он может поддерживать медленное соединение SSH.
Помимо прочего, метод ввода vim будет вашей лучшей защитой от запястного канала, если вы будете эффективно использовать его с эргономичной клавиатурой.
Лучший способ увидеть смысл vim - это начать случайный проект дома, отключив мышь и ленту над клавишами со стрелками.
И прочитайте помощь
Я нахожусь в той же ситуации, что и вы, и как новичок в Vim, я изначально находил это немного пугающим - кривая обучения кажется крутой. Из того, что я узнал всего за несколько часов, я уже чувствую, что не смогу жить без этого.
Вот несколько ссылок, которые я нашел на полезные скринкасты Vim, чтобы показать вам, на что он способен.
Хороший совет, который Брэм Муленаар (доброжелательный диктатор Vim) дал в этой последней ссылке, заключается в том, что было бы неэффективно пытаться изучать каждую отдельную команду и функцию, просто выясните, что вы делаете, а что нет. работая очень хорошо, ищите способ сделать его более эффективным, а затем сделайте это привычкой.
Да, определенно найдите время, чтобы выучить хотя бы немного "vi" и "vim". Он путешествует очень хорошо.
Вы никогда не застрянете, когда столкнетесь с пользовательской системой Unix/Linux/Mac, для которой у вас нет возможностей установки. Даже в Windows (если у вас есть возможности установки) Vim бесплатен и прост в установке. (В отличие от того, чтобы инвестировать свою кривую обучения исключительно в нечто вроде UltraEdit, которое, хотя отличный редактор может быть недоступен для вас все время...).
Изучение vi может помочь вам освоить другие инструменты, такие как "sed" и регулярные выражения в целом: вещи, которые обычно переносимы.
Плюс, если вы хотите быть настоящим фанатом, вам просто нужно знать 'vi/m', иначе вы будете выглядеть как обманщик;-)
Я бы сказал, что vim определенно стоит изучить. Я взял его прошлым летом, и теперь он является моим любимым редактором практически для всего (java - это сложный процесс, но выполнимый, когда мне не нужна обширная поддержка анализа). Как все уже подтвердили, это удивительно эффективный инструмент.
Что бы это ни стоило, я только изучил довольно небольшое подмножество функций vim (которое заняло день или два) из графического учебника, и несколько шансов и отсюда (долгое чтение), а также функциональность поиска и замены, и я был подключен. С тех пор я чему-то научился, но на досуге. Я бы сказал, что кривая обучения сглаживается на этом этапе, но потом я использовал ее довольно интенсивно и был окружен другими, которые тоже.
Vim определенно стоит научиться частично резюмировать то, что было сказано ранее, вот основные причины:
- Vi / Vim можно найти в большинстве систем Unix.
- Vim позволяет легко кодировать, не отрывая рук от клавиатуры.
- Если вы планируете что-то настраивать в системе на основе Unix, скорее всего, вы собираетесь редактировать несколько конфигурационных файлов, поэтому вам захочется изучить редактор на основе терминала, из которых vim - один из лучших (извините, emacs).
- Vim компилирует / имеет предварительно скомпилированные двоичные файлы практически для каждой операционной системы. Не нужно публиковать сообщение "Мне нужна альтернатива textmate для [insert OS]", вместо этого у вас будет Vim!
- Есть много хороших плагинов для добавления большого количества функциональных возможностей, таких как cvs diff в редакторе, хотя некоторые из них требуют изрядного количества переделок.
Кроме того, если вы считаете, что вам нравятся привязки клавиш Vim, есть также IDE, которые включают привязки vim в своих редакторах для простых команд, например, Komodo Edit.
Чтобы получить помощь в изучении Vim, попробуйте ввести "vimtutor" в свой терминал и следуйте инструкциям. Есть также книга, которая особенно хороша для взлома Vim
Удивительного повсеместного распространения Vim и еще более удивительного повсеместного распространения Vi-клонов в целом на одних Unix-системах достаточно, чтобы сделать его достойным изучения.
Кроме того, я думаю, что все мышление в стиле Vi сделало меня немного более продуктивным. Для человека, не привыкшего к таким режимам, как командный режим и режим вставки, кажется немного излишним входить в режим только для вставки текста. Но когда кто-то использует Vim в течение нескольких месяцев и выучил немало советов и хитростей, Vim, кажется, является активом, который, кажется, того стоит.
Конечно, толпа Emacs говорит то же самое о мышлении в стиле Emacs, но я перестал изучать Emacs, потому что Vim был проще и выполнил работу за меня.
Я думаю, что определенно стоит потраченных времени и усилий на изучение vim. Для меня это делает набор текста и навигацию по тексту настолько эффективным, что трудно представить себе возвращение к комбинациям клавиш emacs или ctrl / shift / alt / meta.
Не пугайтесь всех причудливых особенностей vim. Как только вы это использовали, вы выясните, какие команды вы используете чаще всего, и выясните, о каких вещах вы можете забыть.
Не пугайтесь количества команд, я не встречал никого, кто использовал бы больше пары дюжин максимум. Я нахожу это необходимым, потому что когда я думаю о коде, я думаю о тексте, переход к мышлению просто портит меня. Я думаю, что большие хитрости заключаются в том, чтобы учить его постепенно, и не стесняйтесь поиграть - функции отмены отлично подходят для изучения его поведения.
Кроме того, если вы углубляетесь в это, vim поддерживает сценарии. Возможности буквально бесконечны.
(Да, все это относится и к Emacs...)
Я был счастлив в своем текстовом блоке и затмении мира, пока я не начал работать с серверами, работающими под Linux. Необходим удаленный сценарий и настройка файлов конфигурации!
Сначала было сложно, но теперь я могу легко настроить и настроить свои серверы.
Чтобы быстро освоить vi(m), нужно сначала понять весь дизайн. Vim имеет большой набор команд перемещения курсора, отметьте несколько (X - символ, # цифра):
jk ввод стрелок 0 $ w W b B УПРАВЛЕНИЕ КРЕДОЛОМ УПРАВЛЕНИЕ H M L FX FX TX TX,; % gg G n N mX 'X ''
и многое другое было бы скучно перечислять. Многие из них поддерживают счет до команды, например 4j, чтобы переместить 4 строки вверх.
Теперь, вернемся к дизайну, вы набираете команду типа d для удаления, за которой следует перемещение курсора, и эта команда применяется к фрагменту текста от позиции курсора до конца движения. Например, H перемещается в верхнюю часть экрана, dH удаляет в верхнюю часть экрана, а cH изменяет (заменяет) верхнюю часть экрана.
Этот дизайн довольно мощный. Это также уменьшает или организует то, что вам нужно выучить. Определенно первым шагом является изучение нескольких команд перемещения курсора. Скажем, сначала 8 или 10. Тогда вы почти закончили.
Я тоже откладывал изучение vi или vim на многие годы. Фактически, я использую, чтобы высмеивать "ребят ви", которые, казалось, всегда занимались аэробикой пальцев. Затем, когда я перешел с Windows и перешел на Linux в качестве основной ОС, мне пришлось лучше познакомиться с vim. Это была кривая обучения, и это все еще есть. После 9 лет ежедневного использования vim я все еще изучаю новые и более быстрые способы ведения дел. То, что я называю "аэробикой пальцев", на самом деле оказалось чрезвычайно эффективным способом продуктивной работы. Теперь я могу сделать гораздо больше разработки кода за гораздо меньшее время и усилия, чем когда-либо до vim. И, как я уверен, вы знаете, что vim работает на всех платформах, так что у вас всегда есть, когда вам это нужно. Также, если вам нравятся GUI, у них есть версии GUI для большинства платформ. Лично, как и мышь, я не хочу видеть строку меню, полосы прокрутки и т. Д., Которые загромождают мои окна редактирования.
Если вы решите дать vim водоворот, я очень рекомендую книгу O'Reilly "Vi Editor Pocket Reference". Это дешево, и это здорово, если вы только изучаете vi (vim). Полноценные книги vim также хороши, но карманный справочник дает вам все основы для быстрой продуктивности.
Я научился любить vi, наблюдая за тем, кто с этим очень хорошо разбирается, перемещаясь, чтобы редактировать безумно быстрый клип. Вы действительно можете быстро кодировать с ним. Еще одна причина, по которой мне это нравится, заключается в том, что иногда я нахожу, что копирование в IDE действительно причиняет мне боль через какое-то время, и vi обеспечивает приятное изменение. Как уже упоминали другие, он также почти всегда доступен в Unix-системах и хорошо работает даже на паршивых соединениях.
Одна вещь, о которой я не упомянул, - это то, что знание vi имеет дополнительное преимущество "geek cred" в некоторых кругах. Я могу вспомнить хотя бы нескольких людей, которые смеются, когда видят, что новый программист запускает nedit, чтобы внести некоторые изменения в файл.
Изучение чего-то нового всегда стоит усилий, ИМХО. Я предлагаю вам распечатать шпаргалку и заставлять себя использовать ее изо дня в день.