Каковы наиболее используемые команды vim/keypes?

Я программирование Ruby, пытающееся переключиться с Textmate на MacVim, и у меня возникают проблемы с прохождением через гигантские списки вещей, которые вы можете сделать в VIM, и все нажатия клавиш для них. Я устал слышать "Вы можете использовать" я "для вставки текста или" a "для добавления текста после символа или" A "для добавления текста в конце строки или..." Я не могу себе представить каждый использует все 20 различных нажатий клавиш для навигации по тексту, 10 или около того для начала добавления текста и 18 способов визуального выбора внутреннего блока. Или вы!?

Мой идеальный чит-лист будет 30-40 наиболее часто используемых клавиш или команд, которые каждый использует для написания кода на ежедневной основе, а также абсолютные необходимые плагины, которые рубисты используют ежедневно, и 10 наиболее используемых команд для них. Теоретически, как только я это получаю и начинаю становиться таким же опытным в VIM, как и в Textmate, тогда я могу начать изучать тысячи других команд VIM, которые сделают меня больше эффективным.

Или я вообще изучаю VIM?

Ответ 1

Вот совет, который я написал однажды, с помощью команд, которые я фактически использую регулярно:

Ссылки

Общие

  • Почти всем командам может предшествовать число для повторного подсчета. например. 5dd удалить 5 строк
  • <Esc> выводит вас из любого режима и обратно в режим командной строки
  • Команды, которым предшествует :, выполняются в командной строке в нижней части экрана.
  • : help помощь с любой командой

Навигация

  • Движение курсора: ← h j k l →
  • Слова:
    • w следующее слово (по пунктуации); W следующее слово (пробелами)
    • b назад (по пунктуации); B назад (по пробелам)
    • e конец слова (по пунктуации); E конец слова (пробелами)
  • По строке:
    • 0 начало строки; ^ первое непробелое
    • $ конец строки
  • По абзацу:
    • { предыдущая пустая строка; } следующая пустая строка
  • По файлу:
    • gg начало файла; G конец файла
    • 123G перейти к определенному номеру строки
  • По маркеру:
    • mx установить метку x; 'x перейти к отметке x
    • . перейти к положению последнего редактирования
    • '' вернуться к последней точке перед прыжком
  • Прокрутка:
    • ^ F полноэкранный режим; ^ B назад во весь экран
    • ^ D вниз на половину экрана; ^ U до половины экрана
    • ^ E прокрутите одну строку вверх; ^ Y прокрутите одну строку вниз
    • zz линия центра курсора

Редактирование

  • u отменить; ^ R повторить
  • . повторить последнюю команду редактирования

Вставка

Все команды вставки завершаются с помощью <Esc>, чтобы вернуться в режим команд.

  • i вставить текст в курсор; I вставить текст в начале строки
  • a добавить текст после курсора; A добавить текст после окончания строки
  • o открыть новую строку ниже; O открыть новую строку выше

Изменение

Все команды изменения, кроме r и R, заканчиваются клавишей <Esc>, чтобы вернуться в режим команд.

  • r заменить одиночный символ; R заменить несколько символов
  • s изменить одиночный символ
  • cw изменить слово; C изменить на конец строки; cc изменить целую строку
  • c <motion> изменяет текст в направлении движения
  • ci ( изменить в круглых скобках (см. выбор текстовых объектов для получения дополнительных примеров)

Удаление

  • x удалить char
  • dw удалить слово; D удалить до конца строки; dd удалить целую строку
  • d <motion> удаляется в направлении движения

Вырезать и вставить

  • yy копировать строку в буфер вставки; dd вырезать строку в буфер пасты
  • p вставить буфер ниже строки курсора; P вставить буфер над курсором
  • xp замените два символа ( x, чтобы удалить один символ, затем p, чтобы вернуть его после позиции курсора)

Блоки

  • v поток визуальных блоков; V визуальная строка блока; ^ V столбец визуальных блоков
    • большинство команд движения расширяют блок до новой позиции курсора.
    • o перемещает курсор на другой конец блока.
  • d или xвырезать блок в буфер пасты
  • y блок копирования в буфер вставки
  • блок отступа; < неблокируемый блок
  • gv повторно выбрать последний визуальный блок

Global

  • :% s/foo/bar/g заменить все вхождения "foo" в "bar"
    • % - это диапазон, который указывает каждую строку в файле
    • /g - это флаг, который изменяет все вхождения в строке вместо первой

Поиск

  • / поиск вперед; ? поиск назад
  • * поиск вперед для слова под курсором; # поиск назад для слова под курсором
  • n следующее совпадение в том же направлении; N следующее совпадение в противоположном направлении
  • fx вперед к следующему символу x; Fx назад к предыдущему символу x
  • ; перемещается снова к одному и тому же символу в том же направлении; , снова перемещаются к тому же символу в противоположном направлении.

Файлы

  • : w записать файл на диск
  • : w name записать файл на диск как name
  • ZZ записать файл на диск и выйти
  • : n отредактируйте новый файл; : n! отредактируйте новый файл без сохранения текущих изменений.
  • : q завершить редактирование файла; : q! прекратить редактирование без сохранения изменений
  • : e снова отредактируйте тот же файл (если он изменен вне vim)
  • : e. каталог explorer

Окна

  • ^ Wn новое окно
  • ^ Wj до следующего окна; ^ Wk до предыдущего окна
  • ^ W _ максимизировать текущее окно; ^ W = сделать все окна равными по размеру.
  • ^ W + увеличить размер окна; ^ W - уменьшить размер окна

Навигация источника

  • % перейти к соответствующей скобке/скобке/скобке или языковому блоку, если загружен языковой модуль
  • gd перейти к определению локального символа под курсором; ^ O вернуться в предыдущую позицию
  • ^] перейти к определению глобального символа (требуется tags файл); ^ T вернуться в предыдущую позицию (сохраняется произвольный стек позиций)
  • ^ N (в режиме вставки) автоматическое завершение слова

Показать локальные изменения

У Vim есть некоторые функции, которые облегчают выделение строк, которые были изменены из базовой версии в исходном элементе управления. Я создал небольшой vim script, который делает это легко: http://github.com/ghewgill/vim-scmdiff

Ответ 4

Пропустили ли вы встроенный учебник Vim? Если нет, перейдите в командную строку и введите vimtutor. Это отличный способ изучить начальные команды.

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

В интернете есть несколько хороших часто задаваемых вопросов и читсов для vim. Я бы рекомендовал искать vim + faq и vim + cheatsheet. Cheat-Sheets.org # vim - хороший источник, а Vim Tips вики.

Ответ 5

То, что большинство людей делает, начинается с простых основ, например, i, yw, yy и p. Вы можете продолжать использовать клавиши со стрелками для перемещения, выбора текста с помощью мыши, с помощью меню и т.д. Затем, когда что-то замедляет вас, вы смотрите на более быстрый способ сделать это и постепенно добавляете все больше и больше команд. Вы можете узнать одну новую команду в день на некоторое время, затем она будет стекать до одного раза в неделю. Через месяц вы будете чувствовать себя достаточно продуктивно. Через год у вас будет довольно солидный репертуар, и через 2-3 года вы даже не будете сознательно думать о том, что печатают ваши пальцы, и это будет выглядеть странно, если вы должны это сделать для кого-то. Я изучил vi в 1993 году и все еще собираю 2 или 3 новых команды в год.

Ответ 6

@Greg Hewgill cheatsheet очень хорош. Несколько месяцев назад я начал свой переход с TextMate. Теперь я так же продуктивен, как и с TM, и постоянно удивляюсь силе Vim.

Вот как я переключился. Может быть, это может быть полезно для вас.

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

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

Некоторые команды невероятно полезны для любых задач, связанных с программированием:

  • r и r для замены символов
  • <C-a> и <C-x> для увеличения и уменьшения чисел
  • cit, чтобы изменить содержимое HTML-тега и его варианты (cat, dit, dat, ci( и т.д.)
  • <C-x><C-o> (отображается на ,,) для omnicompletion
  • выбор визуального блока с помощью <C-v>
  • и т.д.

Как только вы привыкли к способу Vim, становится очень трудно не ударять o или x все время редактирования текста в каком-либо другом редакторе или текстовом поле.

Ответ 7

Я не могу себе представить, что каждый использует все 20 различных нажатий клавиш для навигации по тексту, 10 или около того для начала добавления текста и 18 способов визуального выбора внутреннего блока. Или вы!?

Я делаю.

В теории, когда я это получаю и начинаю становиться таким же опытным в VIM, как и в Textmate, тогда я могу начать изучать тысячи других VIM-команд, которые сделают меня более эффективным.

Это правильный способ сделать это. Начните с основных команд, а затем выберите те, которые повысят производительность. Мне нравится этот блог, чтобы узнать, как повысить производительность с помощью vim.

Ответ 8

tuxfiles.org содержит довольно хороший чит-лист. Я думаю, что есть несколько моментов для изучения команд:

  • Прочитайте чит-лист регулярно. Не беспокойтесь о том, чтобы использовать их все или помнить все ключи, просто знайте, что команда существует. Посмотрите на команду и используйте ее, когда вы обнаружите, что делаете что-то повторяющееся.
  • Если вы что-то делаете регулярно (например, удаляете целую строку после определенного символа d$), зайдите в быстрый поиск Google, чтобы узнать, можете ли вы найти для нее команду.
  • Запишите команды, которые, по вашему мнению, вы найдете полезными, и сохраните этот список, где вы можете его увидеть, пока вы пишете свой код. Я хотел бы возразить против печати чего-то и вместо этого рекомендовать вам использовать пост, который он отмечает, всего за несколько команд за раз.
  • Если возможно, наблюдайте, как другие программисты используют vim и спрашивают, какие команды они используют, поскольку вы видите, что они делают что-то интересное.

Помимо этих советов, есть несколько основных понятий, которые вы должны понимать.

  • vim будет использовать один и тот же символ для представления одной и той же функции. Например, для удаления строки после символа используйте d$. Чтобы выделить строку после определенного символа, используйте v$. Поэтому обратите внимание, что $ указывает, что вы будете делать что-то до конца строки, от которой теперь находится ваш курсор.
  • u отменяется, а ctrl+r выполняется повторно.
  • ввод числа перед командой будет выполнять его повторно. 3dd удалит строку, в которой находится ваш курсор, и две следующие строки, аналогично 3yy скопирует строку, в которой находится ваш курсор, и две следующие строки.
  • понять, как перемещаться по буферам, используйте :ls для перечисления буферов и :bn, :bp для их циклического перехода.
  • прочитайте учебник, найденный в :help. Это, вероятно, лучший способ "изучить веревки", а остальные команды вы узнаете с помощью использования.

Ответ 9

Поместите это в свой .bashrc, чтобы открыть vim с последним отредактированным файлом на последней отредактированной строке

alias vil="vim  +\"'\"0"

Ответ 10

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

Оттуда, используйте vim для всего. "hjkl", "y" и "p" доставят вам долгий путь, даже если это не самый эффективный способ. Когда вы сталкиваетесь с задачей, для которой вы не знаете волшебный ключ, чтобы сделать это эффективно (или вообще), и вы обнаружите, что делаете это более нескольких раз, ищите его. Постепенно это станет второй природой.

Я нашел vim пугающим много лун назад (назад, когда в конце не было "m" ), но для достижения эффективности потребовалось всего одну неделю. Я все еще нахожу его самым быстрым редактором, в котором нужно сделать что-то.