Как лучше всего заставить себя освоить vi?[закрыто]

StackOverflow https://stackoverflow.com/questions/74625

  •  09-06-2019
  •  | 
  •  

Вопрос

Некоторое время назад я прочитал статья создателя viemu, проясняя многие неправильные представления о vi, а также объясняя, почему это хорошая идея (и почему она была очень популярна последние 30+ лет).У этого же парня тоже есть отличный набор графических шпаргалок которые обучают основам по несколько кусочков за раз.

Я убежден.

На самом деле я был убежден в этом последние 2 года.Но мне до сих пор не удалось заставить себя изучить vi в качестве основного редактора, кривая обучения слишком высока.Когда я приступаю к работе, приемлемая, но немедленная производительность (с использованием моего текущего редактора) до сих пор побеждала огромную производительность в дальнейшем (с использованием vi).

Есть ли у кого-нибудь хорошие советы, которые помогут преодолеть кривую обучения?Это могут быть прямые советы, какое-то другое руководство или статья, что угодно.

Редактировать:Обратите внимание, что я знаю о вим/гвим, Крем и МакВим (и т. д.) варианты vi.Я сохранил свой вопрос о vi для обозначения семейства vi в целом.Спасибо за все отличные ответы.

Обновление (апрель 2009 г.)

Я использую Vim (точнее, MacVim) в своей повседневной профессиональной жизни с декабря прошлого года.Я не вернусь :-)

Удачи всем в освоении Vim.

Это было полезно?

Решение

Прежде всего, вы можете захотеть приобрести Vim;он обладает значительно более совершенным набором функций наряду со всем, что есть в vi.

Тем не менее, чтобы учиться, нужна дисциплина.Если у вас есть работа и вы не можете позволить себе снижение производительности (без увольнения), я бы посоветовал заняться проектом на выходных с единственной целью — изучить редактор.Держите документацию открытой во время работы и будьте достаточно дисциплинированы, чтобы не струсить.Когда вы научитесь больше, станете более эффективными и начнете полагаться на мышечную память, придерживаться этого будет не так сложно.

Я так долго пользуюсь Vim, что даже не задумываюсь о том, какие клавиши нажимать для поиска, навигации или сохранения.И мои руки никогда не отрываются от клавиатуры.Использование Vim — один из лучших решений, которые я сделал в своей карьере программиста.

Другие советы

Первое, что я бы сделал, это положил лист бумаги или книгу на клавиши со стрелками и клавиши ins/home/end/pgup/down.В Vi они не нужны.

Затем я привык нажимать Ctrl + [ всякий раз, когда вам говорят нажать Escape.Это намного быстрее, и вам не придется отрывать руки от клавиатуры.

Потом я смотрел свои скринкасты:

http://www.youtube.com/watch?v=FcpQ7koECgk

http://www.youtube.com/watch?v=c6WCm6z5msk

http://www.youtube.com/watch?v=BPDoI7gflxM

http://www.youtube.com/watch?v=J1_CfIb-3X4

Тогда просто практикуйтесь, практикуйтесь.

редактироватьПричина, по которой следует избегать клавиш со стрелками, заключается в том, что они замедляют вас.Одним из самых больших преимуществ Vim является скорость, которую он обеспечивает.Клавиши со стрелками также мешают вам по-настоящему осознать модальную природу, которая очень эффективна, если ею овладеть.

Шаг 0: научитесь печатать вслепую.Серьезно, если ваши пальцы не знают, где находятся клавиши, то vim будет затруднительным.И даже если вы откажетесь от vim, слепая печать будет улучшить свое программирование (просить Стив Йегге ), позволяя контролировать связь без трения.Eсть много из программное обеспечение это поможет вам улучшить набор текста.

Шаг 1: использовать вимтутор чтобы вы начали.Это в GVIM (в меню справки, я думаю), или вы можете просто ввести «Vimtutor» в командной строке.Это займет 30-45 минут вашего времени, и тогда ваши пальцы узнают основы VI/VIM, и вы сможете редактировать файлы, не желая выгнать свою клавиатуру из окна.

Шаг 2: используйте vim везде.Видеть этот вопросДля советов и ссылок для использования привязки Vim и Vi в командной строке, из вашего веб -браузера, для составления электронных писем, в вашем IDE ...Вам нужно использовать VIM, чтобы внедрить ключевые привязки в мышечную память.

Шаг 3: узнать больше о vim.Вы будете поцарапать поверхность только с вимтутором.Ты можешь посмотри это видео или читать Эта статья (оба о «семи привычках эффективного редактирования текста».Ты можешьчитатьосоветыитрюки наПереполнение стека.Вы можете просмотреть вимтипс.Узнайте, что ликат часто был бы моим советом - есть так много, что придерживаться кусков размером с укус будет лучшим способом сделать знания.

Шаг 4: Выгода :)

На протяжении многих лет я то и дело пользовался vim (время от времени выполняя работу системного администратора).Совсем недавно я начал проводить больше времени за программированием в нем.Я бы тоже посоветовал начать с gvim.Он хорошо интегрируется с большинством ОС, и (что еще лучше) при необходимости вы можете вернуться к использованию мыши :).

Чтобы начать работу с vim, запустить через вимтутор (в комплекте с gVim) один или два раза (занимает около часа).Не могу переоценить, насколько это было для меня полезно!Особенно первые части о различных способах перемещения по документу, о том, как действия редактирования записываются с помощью команд движения и т. д. и т. п.После этого все станет НАМНОГО яснее.

Затем начните делать с его помощью быстрые незначительные правки (замена блокнота), пока не почувствуете себя достаточно комфортно, чтобы выполнять полезное редактирование в быстром клипе.Затем попробуйте выполнять на нем свою повседневную работу.Вы сразу же почувствуете, что тоскуете по команде «повторить последнее действие» в других редакторах!

Вы просили дать хорошие советы, которые помогут преодолеть период обучения текстовому редактору vi.Многие из предыдущих ответов советуют вам не использовать другие редакторы.Я думаю, это хороший совет.Переход на vi с более графического редактора требует изменения образа мышления.Это требует мышления с точки зрения команд, а не визуальных изменений.

Я много лет не использовал ничего, кроме vi, и считаю, что единственный способ продуктивно работать — это запоминать команды, которые вы регулярно используете.Я сделал это, чтобы составить краткий список наиболее распространенных клавиатурных команд.Я сгруппировал и обозначил цветом эти команды по функциям, т.е. Перемещение курсора, редактирование, поиск, и т. д.Я постарался включить только наиболее часто используемые команды, о которых я не знал.Идея состоит в том, чтобы создать краткий справочник, который также будет способствовать запоминанию, а не заменять доступные экраны справки.Затем я распечатал этот список и прикрепил его к стене за монитором, чтобы его можно было легко видеть.(Упомянутые вами графические шпаргалки, возможно, подойдут некоторым лучше, но, вероятно, являются лучшим справочным источником, чем инструментом для запоминания.)

Вот ключ. Освоившись с одной из команд, я провел через нее линию карандашом.Я все еще мог видеть это, если бы мне это было нужно, но для меня было символом, что я овладел этой командой.Это придало мне уверенности и мотивации, поскольку я мог видеть регулярный прогресс.Вычеркнув большинство из них, я удалил их и добавил некоторые из наиболее редко используемых команд.Я продолжал этот процесс, пока не был удовлетворен своим командованием vi.Я понял, что достиг этой точки, когда понял, что уже давно не вычеркивал ни одной команды и даже не просматривал список.

Пару лет назад мне пришлось работать на платформе UNIX, где единственным доступным редактором был vi.Купил небольшой карманный справочник по vi, но почти им не пользовался.В итоге я составил списки и разместил их на стене, как сделал это в первый раз, когда использовал vi.К концу первой недели мне было очень комфортно, хотя прошло пять лет с тех пор, как я пользовался vi.

Для меня VI — хороший аварийный редактор, но я не хочу использовать его, если есть другая доступная альтернатива.Я понимаю, что это не для всех, я не говорю, что это ужасно или что-то в этом роде, просто я лично предпочитаю видимый пользовательский интерфейс.

Но вам действительно необходимо знать VI, если вы делаете что-то важное в Linux!

Итак, просто изучите основы:I = вставьте режим ESC = оставьте режим вставки: wq = Сохранить и бросить: Q! = Не сохраняйте и не выходите x = Когда не в режиме вставки, удалите символ./=поиск

Это поможет вам справиться с любой чрезвычайной ситуацией при редактировании.Нет ничего, что вы не могли бы сделать с помощью этих нескольких команд (и, конечно же, навигации).Остальное вы можете «прикрепить» по мере необходимости.

Однако держите под рукой справочник или книгу — когда вам НЕОБХОДИМО использовать VI, вы, вероятно, не сможете просматривать веб-страницы — но справочная страница может оказаться в некоторой степени полезной.

не заставляйте себя.путь к мастерству – любовь.

Вам следует начать с вим (Vi IMproved) и особенно его графический интерфейс - гВим.В графическом интерфейсе есть меню, а в Windows вы можете использовать ярлыки копирования, вырезания и вставки, что позволяет немедленно заменить Блокнот.А поскольку в меню отображаются ярлыки (команды vim), вы можете многому научиться.

Еще одна вещь, которую вам следует сделать с самого начала, — это настроить vi под свои нужды.Например, вы можете преобразовать vim в Python IDE.Сделав это, у вас не будет оправдания использованию другого редактора, поскольку vi предложит вам все, что вам нужно.

удалите все другие приложения текстового редактора.

Тогда вам придется этому научиться.

Самый простой способ сила самостоятельно можно просто удалить все остальные редакторы со своего компьютера.Избавьтесь от искушения :)

Каждый раз, когда вы выполняете сложную задачу редактирования, задавайтесь вопросом, есть ли более эффективный способ сделать это.В большинстве случаев, когда это можно описать простыми словами (например, «поменять местами абзацы текста» или «удалить все после символа X в закомментированных строках»), это можно сделать всего за пару нажатий клавиш в vim.

Есть некоторые ключевые функции, которые чрезвычайно полезны, и вы перестанете ими пользоваться постоянно.Больше всего я люблю:

  • Выбор блока (Ctrl-V)
  • Запись макросов (q)
  • Виртуальное редактирование (:set ve=all)
  • Обычные выражения
  • Подключение к внешним программам Unix
  • Сопоставления клавиш
  • Автодополнение (C-p, C-x C-p, C-x C-f)
  • Комбинация операция+движение (это потрясающе мощно)

Спросите других программистов, какие функции они считают наиболее полезными, и выберите те, которые лучше подходят вашему мозгу.Воровать идеи у других людей .vimrcс (вот мой)

РЕДАКТИРОВАТЬ:я создал карточка, установленная на онлайн-сайте интервального повторения flashcarddb.com, если вам интересно...

  1. Используйте программу для карточек с интервальным повторением, например мнемозина, суперпамять, или Анки включить изучение и запоминание новых команд в свой распорядок дня.Недостаточно использовать vim в качестве ежедневного редактора.Чтобы овладеть им, вам нужно хранить эти коды в своей голове, дожидаясь того момента, когда они станут идеальным решением поставленной задачи.
  2. Поддерживать .vimrc с настройками
  3. Напишите или отредактируйте плагин vim

Я написал руководство по эффективное редактирование с помощью Vim Некоторое время назад.Вы можете найти это полезным.

Я бы сделал шаг назад на минутку и спросил себя: «Почему я хочу изучить этот редактор?Что заставляет меня думать, что он будет быстрее или лучше моего нынешнего текстового редактора?» Затем изучите те функции, которые сделают Vi(m) незаменимым для вас.

Например, интеграция Vim с CTags для меня совершенно необходима.Я работаю с очень, очень большой кодовой базой, и возможность перейти к определению функции или класса одним нажатием клавиши (независимо от того, в каком файле они находятся) — это просто потрясающая функция, без которой мне трудно работать.

Используйте файл .vimrc для создания макросов, автоматизирующих типичные задачи.

Ваш автопилот, выбирающий редактора, выберет редактор, который выполнит работу быстрее и с наименьшими умственными усилиями.Небольшая подготовительная работа позволит гарантировать, что редактором будет Vim.:-)

Две вещи, которые значительно улучшат ваши навыки работы с VI:

  1. Практика, практика, практика
  2. Нетхак

Мое предложение:начните с малого.Просто начните с запоминания небольшого набора наиболее полезных команд.Когда я начинал vi, это были мои лучшие 10:

  • (Esc), чтобы вернуться в командный режим (самое важное!)
  • a, чтобы добавить текст после курсора
  • A, чтобы добавить текст в конец текущей строки
  • x, чтобы удалить 1 символ
  • dd, чтобы удалить 1 строку
  • R, чтобы заменить текст (перезаписать)
  • ты хочешь отменить
  • :к!(Ввод), чтобы выйти без сохранения
  • :w (Ввод), чтобы сохранить
  • ZZ, чтобы сохранить и выйти

Многие базовые действия по редактированию можно выполнить, используя только эти команды.Как только вы освоитесь, остальное не покажется слишком сложным.

Кстати, я хотел бы добавить, что раньше я полагался на vi в качестве основного текстового редактора, но теперь только в случае необходимости.В моем случае производительность выше, когда я использую такие инструменты, как Emacs или Visual Studio (обратите внимание:"в моем случае").Попробуйте несколько инструментов и выберите тот, который больше всего повысит вашу продуктивность.Удачи!

Звучит глупо, но играть рогалик игры (например, Нетхак или Ангбанд) — это интересный способ освоиться с использованием h/j/k/l клавиши для навигации курсора.

Запишите все сочетания клавиш и функции, которые вы используете в текущем редакторе во время работы.Затем сядьте в субботу утром и с помощью Google и переполнения стека узнайте, как выполнить каждое из этих действий в vi.Наверное, лучше всего, если вы воспользуетесь для этого листом (или листами) бумаги.

Теперь отключите/удалите другие редакторы на работе, чтобы вам потребовалось больше времени, чтобы найти и переустановить их, чем просматривать таблицу сравнения и делать это в vi - т.е.У вас нет выбора.

Наконец, опубликуйте в своем блоге список сочетаний ярлыков из старого редактора в новый.

Удачи!

Не используйте Х11?

$ sudu rm /usr/local/bin/emacs

Измените оболочку входа в систему на ви?

Во-первых, заставьте себя использовать Эд, затем ви покажется роскошью?

Использовать ви привязки клавиш в бить?

Просто начните использовать ви все время?

Мне кажется, что изучение редактора не сильно отличается от изучения языка.Погружение работает лучше всего.

я использую ви для действительно быстрого редактирования или когда я не могу использовать Х11 почему-то, но я живу в эмакс.Действительно мощные редакторы стоят того, чтобы потратить время на их изучение.

Я рекомендую придумать несколько простых программ и написать их, от начала до конца, используя VI.

Скорее всего, поначалу вы будете слишком разочарованы кривой обучения, чтобы заставить себя использовать их на работе или в любой среде, где время ограничено.

Я делал это раньше, чтобы ознакомиться со средой/редакторами, и это работает довольно хорошо.

Если у вас возникли проблемы с тем, что написать, я рекомендую переделать проекты, которые вы делали в школе (или что-нибудь еще, что вы делали раньше).Этот метод имеет дополнительный бонус: он позволяет вам увидеть, насколько лучшим разработчиком вы стали.:)

Редактировать:забыл упомянуть, что делать это следует исключительно из консоли, чтобы избежать соблазна использовать мышь!

Я помню, когда я впервые начал изучать emacs, это было уже после того, как я уже очень хорошо освоился с Vim, и я был в той же или похожей лодке, что и вы, и знал, как многое сделать в другом редакторе, поэтому, когда я начал использование emacs всегда было мучительно медленным.

Тем не менее, я думаю, что вам нужно просто поглотить немного боли и всегда, всегда, ВСЕГДА проверять, что вы просматриваете документацию для выполнения того, что вы делаете. знать вы можете сделать это в своем предыдущем редакторе, например переместиться в конец строки или выбрать область текста.

Также полезно, если у вас есть местный эксперт по vi, которому вы можете задавать вопросы, или, если вы, как наша компания, продвигаете парное программирование.Таким образом, когда вы пытаетесь сделать что-то, что должно быть легко, вы можете просто попросить кого-нибудь, и они покажут вам, как это сделать, и если вы регулярно используете редактор в течение нескольких недель, вам не придется спрашивать больше. затем пару раз, прежде чем это станет второй натурой.

Если у вас нет местных ресурсов, в Интернете есть множество книг/руководств/справочных материалов, которые смогут ответить на большинство ваших вопросов.

В конечном счете, изучение Vi похоже на освоение других навыков: панацеи не существует, и вам придется смириться с тем, что на какое-то время вы будете менее продуктивны в нем, чем ваш нынешний редактор.Просто продолжайте говорить себе: «Другие люди смогли выучить Vi, и я, по крайней мере, такой же умный, как и они» (во всяком случае, я так себе говорю :)).

Основная причина, по которой я использую vi является ssh (или Putty в Windows):Когда вы удаленно вошли на сервер Unix, тогда vi всегда доступен.И это работает с VT100, когда не отображаются ни клавиши курсора, ни возврат/удаление.

Также есть такая книга, как Карманный справочник по редактору VI очень помогает.

У gVIM есть действительно хорошее руководство (ссылка в группе меню «Пуск»).

Я обнаружил, что работа над этим помогла преодолеть первоначальный барьер обучения;а затем переключение моей Visual Studio на ViEMU помогло мне отточить свои навыки VI.

Также скринкасты на http://vimcasts.org/ отлично!

Вы можете взять в руки одну из оригинальных клавиатур Happy Hacker (без клавиш со стрелками) и ставить (беспроводную) мышь вне досягаемости каждый раз, когда начинаете редактирование.

Легко написать большой список команд/ярлыков, но сложно запомнить их все без практики.

Сосредоточьтесь на одной новой команде за раз.Когда это станет автоматическим, скажем, после использования в течение недели или двух, добавьте в свой репертуар еще одно.

Вам придется пройти долгий путь, чтобы достичь определенных целей в краткосрочной перспективе — это очевидные возможности для изучения новых кратчайших путей.

По моему опыту, было легче, когда я старался не брать на себя слишком много сразу.

Мое предложение номер один:научитесь быстро печатать, не глядя на клавиатуру.

Если вы не можете печатать сенсорным вводом и постоянно ищете двоеточие, hjkl или :%s/foo/bar, забудьте об этом.Ввод текста может будет быстрее, чем использование мыши, но если это не так, vi не будет работать.

Но объедините хорошие навыки набора текста, SSH и экран и vi будет естественным.

Примите тот факт, что это немедленно приведет к снижению производительности.При изучении нового инструмента вам нужно уметь делать то, что вы умеете делать с другими инструментами, чтобы проблема не была вашей проблемой.Через некоторое время после использования нового инструмента он исчезнет, ​​и вы сосредоточитесь только на основной проблеме.

Что касается чего-то вроде vim (как говорили другие, vim значительно превосходит vi), важно периодически перечитывать и просматривать документацию.Без него интерфейс совершенно необнаружим.При каждом новом чтении вы увидите особенность и скажете: «Ага, это решило бы проблему, которую я пытался решить на прошлой неделе», и сохраните ее в своем мозгу.Решения, связанные с реальными проблемами, с которыми вы сталкивались, вам гораздо легче запомнить, чем случайные ярлыки.

В конце концов, вы можете использовать vim с довольно небольшим набором функций, так что не перегружайтесь всеми наворотами.Подумайте обо всех функциях Word: используют ли их 99% людей?

ESC gg=G изменить отступы кода и :retab Преобразование табуляции в пробелы или пробелов в табуляцию — вот что меня зацепило в vim.Так что на самом деле вас не нужно заставлять использовать его, вам просто нужно узнать, когда это может помочь вам увеличить скорость.

Проходить через vimtutor.

Начните использовать vim для простого редактирования, например файлов конфигурации или HTML.Изучите команды по мере необходимости.

Найдите в Google хороший .vimrc, используемый кем-то, кто использует набор инструментов, похожий на ваш.Включите подсветку синтаксиса.Найдите красивую цветовую гамму.

Изучите макросы, потому что Vim лучше всего подходит для автоматизированных задач и вставки фрагментов, таких как форматирование нескольких слов в сложный тег XML или преобразование CSV в таблицу HTML.

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

Таким образом, вы можете начать использовать Cream в качестве обычного текстового редактора, а затем экспериментировать с «экспертным режимом», пока не почувствуете себя достаточно комфортно, чтобы полностью переключиться на vim.

Установить gVim на всех платформах, которые вы используете.

Потом запускаем через вимтутор(:help vimtutor или vimtutor в командной строке).

Посмотрите следующую лекцию и следуйте ее советам: 7 привычек эффективного редактирования текста 2.0

Я говорю, что вы определенно хотите начать использовать его для редактирования.Если вы опасаетесь потери производительности, потратьте выходные, чтобы попрактиковаться в этом (однажды я сделал это, чтобы переключиться на дворак с qwerty, и к понедельнику моя производительность была достаточно высокой, и мне удалось придерживаться ее и после).

Это стоит усилий, и вы не оглянетесь назад!

Лично мне нужно было убедиться, что я могу использовать сочетания клавиш Vim (или, по крайней мере, достаточно близко) в нескольких приложениях.Из-за необходимости полностью переключать способ редактирования текста всякий раз, когда я менял редактор, было слишком сложно закрепить стиль редактирования Vim за мышечной памятью.

В моем случае Viemu+vimperator справился с задачей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top