Каковы наиболее используемые команды 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
Ответ 2
http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
Это самая большая вещь для изучения VIM.
Ответ 3
Вот отличный чит-лист для vim:
![enter image description here]()
Ответ 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" ), но для достижения эффективности потребовалось всего одну неделю. Я все еще нахожу его самым быстрым редактором, в котором нужно сделать что-то.