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

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

37 ответов

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

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

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

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

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

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

qq

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

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

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

@q

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

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

: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

Я думаю, это те, с которых нужно начинать

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

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

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

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

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

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

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

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

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

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

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

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

" ~/.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>
:set ignorecase smartcase

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

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

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

set number
set relativenumber

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

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

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

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

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

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

:%!xxd

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

:%!xxd -r 

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

Я использую vi очень легко, и я использую только следующие команды:

a   - switch to insert mode (after the cursor)
esc - return to command mode
:wq - save and quit
:q  - quit (no save, only without modification)
:q! - force quit (no save, also with modification)
x   - delete one character (in command mode)
dd  - delete the whole line (in command mode)

Я знаю, что есть еще много, но этого достаточно, чтобы помочь вам.

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

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

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

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

Пожалуйста, посетите этот сайт для интересного способа узнать основные команды движения: http://kikuchiyo.org/. Я думаю, что наиболее важные команды описаны в теме, но мне всегда нравится предлагать это новичкам в vim. щелкните по первой ссылке на поезд, в которой есть легенда для основных команд движения и команды вставки i для сбора рубинов. Хорошая практика для быстрого передвижения.

Настоящая сила в поиске. Вот основные команды:

/ Стив найдет первый экземпляр слова "Стив" в тексте. n найдет следующего "Стива" в тексте.:%s//Stephen/g заменит все те экземпляры "Steve", которые вы только что искали, на "Stephen".

Не для продвижения, но я написал пост в блоге на эту тему. Он ориентирован на критические части Vim для начинающих.

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

Textmate для VIM

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

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

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

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