Vim / VI Руководство по выживанию

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

21

37 ответов

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

27

То, что я нахожу незаменимым (потому что он работает и в 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", и вы поймете, что я имею в виду.

14

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

8
6

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

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

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

qq

потому что это быстро Нажмите q в обычном режиме еще раз, чтобы остановить запись. Тогда просто введите

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

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

@q

для примера как выше.

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

5

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

4

Этот недавний учебник Vim от IBM довольно хорош

4
: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

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

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

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

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

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

3

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

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

3

См. http://www.rayninfo.co.uk/vimtips.html где собрана большая коллекция советов по Vim, от базовых "не выжить без" до очень сложных вещей, о которых вы, возможно, даже не задумывались.

2
" ~/.vimrc
" Turn on line numbering
set nu
" Turn on syntax highlighting
syntax on    
" Set 4 space expanding tabs
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
"turn off line wrapping
set nowrap
" Map CTRL-N to create a new tab
:map <C-n> <ESC>:tabnew<RETURN>
" Map Tab and CTRL-Tab to move between tabs
:map <Tab> <ESC>:tabn<RETURN>
:map <C-Tab> <ESC>:tabp<RETURN>
2

Множество замечательных команд перечислены в Vim Tips Wiki.

2

Если вы используете vim, команда 'u' (в командном режиме) отменит последнюю введенную вами команду. Вы можете использовать эту команду несколько раз, чтобы отменить ошибки, которые вы могли сделать перед сохранением файла.

2

Мне нравится справочник Vim 5.6 от Брэма Муленаара и Олега Райского.
Вы можете напрямую распечатать его в виде буклета, легко читать, у меня всегда есть его.
Это немного стар, но каковы 8 лет в жизни Ви?

1

Также хорошо запускать vimtutor при изучении этих команд

1
:%!xxd

Просмотр содержимого буфера в шестнадцатеричном формате. Вернуться:

:%!xxd -r 
1

Мой самый большой совет: Ctrl+Q спасает день, когда вы случайно нажали Ctrl+S, чтобы сохранить файл, над которым вы работаете

1
:set ignorecase smartcase

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

1

У меня есть это в моем Vimrc

set number
set relativenumber

Это дает мне систему нумерации строк, которая делает клавиши j, k действительно продуктивными.

1

Псевдоним ви недит:)

весь юмор в сторону.. для ви, когда не используется недит..

  • i (переключиться в режим вставки)
  • a (append = перейти к концу строки и переключиться в режим вставки)
  • esc (выход из режима вставки)
  • dd удалить строку
  • x удалить персонажа
  • :wq (сохранить и выйти)
  • / начать поиск
  • n найти следующий
  • ? искать в обратном направлении..
  • yy (янки) скопировать строку в буфер
  • pp (вставить) вставить это здесь
  • r (заменить символ)
  • <N> <command> это аккуратная, но усугубляющая функция, которая позволяет вводить цифры, а затем команду
  • 5dd удалит 5 строк

но в этот момент вы могли бы также - man vi и освежить свою память

В то время как есть еще много, я перешел с Vi на nedit несколько лет назад, который, как мне кажется, имеет больше функций, которые я могу использовать на регулярной основе более легко. Редактирование с вкладками, добавочная панель поиска, выбор столбцов, копирование и вставка. сортировка выбранных строк, поиск и уничтожение в выделенном фрагменте, целых документах или во всех открытых документах... выпадающие меню с отрывом... и поддержка подсветки синтаксиса для всех языков, которые я использую... (с файлами шаблонов, которые я использовал долгое время на протяжении многих лет. VIM теперь многие из них эквивалентны, но он должен представить функцию, которой не обладает Nedit, и простой способ перенести мои файлы шаблонов, прежде чем я переключусь снова.

1

Иногда полезно переформатировать буфер (т.е. перебазировать, выровнять фигурные скобки и т. Д.). Я недавно научился экономить время на это:

gg=G

Например... было бы следующее:

if ( !flag )
{
  // Do something special
  }
else
   {
 // Do another special thing
}

в следующее:

if ( !flag ) 
{
    // Do something special 
}
else
{
    // Do another special thing
}

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

<root>
<addressBook>
    <contact first="Frank" last="Tank"/>
        <contact first="Foo" last="Man"/>
    </addressBook>
</root>

во что-то более понятное человеку, например, следующее:

<root>
    <addressBook>
        <contact first="Frank" last="Tank"/>
        <contact first="Foo" last="Man"/>
    </addressBook>
</root>
0

Несколько месяцев назад я переключился с Textmate на VIM и написал руководство о том, как выполнить 110 команд редактирования Textmate в VIM. Он организован по категориям, таким как управление файлами, автозаполнение слов и подсветка синтаксиса.

Textmate для VIM

0

:g/<pattern>/t$

будет копировать <pattern> в конец файла. Полезно, когда вы хотите извлечь строки, но не хотите делать это один за другим.

0

Никто не упомянул обильные ctags? Google и установите его; намного лучше, чем стандартные ctags, которые вы, вероятно, имеете. Чтобы использовать его, перейдите в корневой каталог вашего проекта и введите

:!ctags -R .

Создает базу данных всего в вашем проекте... java, C++, python, ruby, javascript, что угодно, в файле, называемом тегами.

: help ctags для множества команд, слишком много для суммирования, для использования сгенерированных тегов. Поместите курсор на имя функции, введите CMD ], чтобы открыть файл, который ее определяет. Еще много таких команд. Вскоре становится второй натурой... почти так же хорошо, как IDE (и VIM никогда не подводит вас, как это часто делает затмение).

0

Замените 'foo' на 'bar' везде в файле:%s/foo/bar/gc

0

Другая полезная команда - искать что-то: / например /Mon будет искать (и в случае выделения vim) любые вхождения Mon в ваш файл.

0

Одна из моих любимых команд - это%G, которая ведет непосредственно к концу файла. Особенно полезно в лог-файлах.

0

i - режим вставки (выход для выхода) dd - удаление строки shift-y - строка "Yank" (копия) p - строка (ы) "Put" (вставка) shift-v - визуальный режим, используемый для выбора текста (попытка янки) 'этот текст и' помещая 'его куда-нибудь. ctrl-w n - создать новое окно (вы можете открыть файл или начать новый файл здесь) ctrl-w v - разделить существующее окно по вертикали ctrl-n (в режиме вставки) - автозаполнение (если поддерживается):! для запуска команды оболочки, обычно со стандартным в качестве файла или выделения (shift-V)

Полезные плагины для просмотра: * Buffer Explorer - используйте \be для просмотра файлов в буфере (и выберите для повторного открытия)

0

Как переключаться между режимами (i для входа в режим вставки (один из многих способов), esc для выхода из режима вставки, двоеточие для командного режима) и как сохранить и выйти. (: WQ)

0
Другие вопросы по тегам