Vim / VI Руководство по выживанию - PullRequest
21 голосов
/ 16 сентября 2008

Какие основные команды vim? Что нужно знать новому пользователю, чтобы не попасть в неприятности? Одна команда на комментарий, пожалуйста.

Ответы [ 37 ]

27 голосов
/ 16 сентября 2008

Я держу при себе справочную карту Vi в течение многих лет. Это очень полезно.

14 голосов
/ 16 сентября 2008

То, что я нахожу незаменимым (потому что он работает в vi, в отличие от визуального режима vim) - это метки. Вы можете пометить различные точки с помощью m (нижний регистр) и затем буквы по вашему выбору (например, х). Затем вы идете в другое место и можете вернуться с `` x (backquote letter) to the exact spot, or with 'x` (буквой апострофа), чтобы перейти к строке.

Эти движения могут использоваться в качестве аргументов команд (yank, delete и т. Д.). Например, вы хотите удалить 10 строк; вместо того, чтобы считать, а затем перейти к самой верхней строке и ввести 10dd, вы переходите к началу или концу блока, нажимаете mm (метка m), затем переходите к другому концу блока и нажимаете d'm (удалить апостроф м). Если в этом примере вы используете обратную кавычку вместо апострофа, удаление будет работать по символам, а не по строкам. Попробуйте пометить в середине строки «mark m», переместившись в середину другой строки, затем введя «d backquote m», и вы поймете, что я имею в виду.

8 голосов
/ 16 сентября 2008

Я был очень счастлив, когда узнал об использовании * или # для поиска, соответственно, вниз или вверх, слова под курсором. Обязательно сначала наберите :set incsearch и :set hlsearch.

6 голосов
/ 16 сентября 2008
5 голосов
/ 16 сентября 2008

Когда вы выполняете какие-то повторяющиеся действия, макросы обычно выполняются быстрее, чем регулярные выражения. Просто наберите

q[0-9a-z] in normal mode

Многие люди используют

qq

потому что это быстро. Нажмите д в нормальном режиме снова, чтобы остановить запись. Затем просто наберите

@[0-9a-z] in normal mode

, чтобы повторить то, что вы только что записали.

@q

для приведенного выше примера.

Отредактировано, чтобы добавить: вы также можете повторить макрос. Допустим, вы запрограммировали макрос, чтобы перейти к началу строки, вставить вкладку, а затем перейти вниз на одну строку. Затем вы проверяете свой макрос, набирая «@q», чтобы запустить его один раз. Затем вы можете повторить действие еще девять раз, набрав «9 @ q».

4 голосов
/ 16 сентября 2008
:q -> quit
:w -> save
:q! -> quit and don't save
:x -> save and quit
:[number] -> go to line number
G -> go to end of file
dd -> delete line
p -> "put" line
yy -> "copy" line
:s/[searchfor] -> search

Я полагаю, что это основные, чтобы начать с

4 голосов
/ 16 сентября 2008
4 голосов
/ 16 сентября 2008

Используйте команду 'J' (J для соединения; заглавные буквы), чтобы удалить символ новой строки в конце строки. В противном случае вам будет сложно.

3 голосов
/ 16 сентября 2008

Прежде всего вам нужно знать, как закрыть vi: ctrl-c: q!

Отдых можно найти у vimtutor. Запустите vimtutor, набрав vimtutor в командной строке

3 голосов
/ 12 ноября 2008

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

Мне очень неудобно тянуться к клавише Esc для выхода из режима вставки, но прекрасная особенность Vim - возможность сопоставления клавиш.

В настоящее время я использую следующее отображение, используя Control + S:

inoremap <C-s> <Esc>:w<CR>

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

...