vim-commands
Заметки по командам vim в процессе чтения книги “Vim”.
Основные команды
Передвижение
- hjkl — передвижение
- wW bB eE — вперёд[назад][вперёд в конец] на слово, всё кроме пробелов
- 0 ^ n| $ — первый символ, начало непробельных, n-ый, конец
- () <> [[]] в начало текущего[следующего] предложения, абзаца, раздела
- :number numberG — переход на number-строку
- [count]% — переход на count процент файла
- » — место последней правки, перед передвижением
- m[a-z] ‘a — метка, вернуться к метке a
Особые
- HL — top screen, bottom screen
- J — соединить следующую строку с текущей
- K — man page
- % — перейти дальше к ближайшей скобке, либо перейти к обратной скобке
- >> << — Убрать/добавить отступ
Переход в insert:
- iI — insert режим, insert с начала строки
- aA — append — редактирование после текущего символа, с конца строки
- oO — добавить строку после, перед текущей перейти в insert
- sS — subst — удалить символ, строку перейти в insert
- cС — change — удалить что-то и перейти в insert, удалить до конца строки
Спец. в insert-режиме
- CTRL-t, CTRL-d — Убрать/добавить отступ
Остаёмся в текущем режиме:
- rR — заменить один символ, несколько символов подряд
- xX — удалить символ, предыдущий символ
- dD — удалить что-то, удалить до конца строки
Замечания:
- Все команды можно повторять, ставишь перед ней цифру. При этом если команда, переходит в insert, то повторение срабатывает после выхода из него.
- Например, можно ввести iao и получить сразу много одинаковых строк. Также с остальными.
- r — заменить все буквы на одну, но не больше длины строки, c xd — если вводишь больше символов чем встроке, меняет всю строку, что логично.
- sc — не повторяют строки, но повторяют удаление на несколько сиволов или строк
- для команд cd двойное нажатие применяет её ко всей строке
- c и d и y — эти команды работают с любыми перемещениями:
- cH cL c+ — верх, низ, следующей строки
- 2c) — второе преложение изменить
- d/pattern — до шаблона patter
- c/n — до следующего вхождения
- cG — конца файла
- d13G — 13 строки
Вставка и копирование:
- pP — вставить после, до
- yY — скопировать что-то, строку ( yy = Y )
Отмена
- uU — отмена, возврат состояния строки, если курсор не перемещался на другую
- ^R — отмена отмены
Прокрутка экрана
- ^f,^d;^b^u — вперёд;назад экран, полэкрана
- zENTER z. z- — текущая строка вверх, середина, вниз без смещения курсора
Команды из ex
- :6 — перейти на строку 6
Команды
- delete d — удалить
- move m — перемещение
- copy c t — копировение
Примеры
- :3,18d — удалить строки
- :160,224m23 — переместить строки с 160-224 после 23 строки
- :160,224t23 — скопировать строки с 160-224 после 23 строки
- := :,= :/pattern/= — номер всех, текущей, найденной строки
- :[. % $ +-][#p] — текущая, все, последняя, следующие или предыдущие строки вывести
- . +20d — удалить эту и следующие 20 строк
- :226,$m.-2 — поместить строки с 226 до конца перед 2 строками текущей
- :-,+t0 — точки необязательны (копирование трёх строк в начало файла)
- :100;+5 p — вывести строку после сотой + 5 от неё
- :1,3d | s/thier/their/ — | в качестве разделителя команд, удаляем строки с 1 по 3 и производим замену в текущей
- :[230,$]w [>>] new.file — сохранить новую версию [c 230 до конца] в [добавить] другом файле
- :r filename — считать файл в текущий буфер
Визуальный режим
все команды в v
- V — выделить строки
- CTRL-V — выделить блок
- oO — начать выделять с другой стороны
- gv — снова выделить тоже самое
- wW — вперёд на слово
- a[wsp] — всё слово, предложение, абзац
Как выделить весь текст в Vi / Vim?
использование инструмента VI для редактирования конфигурационных файлов.
Как я могу выбрать весь текст в файле (около 1000 строк), скопировать его, а затем вставить в Google Docs?
12 ответов
самый простой и быстрый способ-это использовать: : % y + , а затем перейти к Google Docs (или где) и вставить. Пояснение:
- % сослаться на следующую команду для работы со всеми строками
- y дергать эти строки
- + копировать в системный буфер обмена
другой способ — g g » + y G но вы, вероятно, признать, что выше быстрее и проще.
многие дали ответы также дергать выбор, который я не искал.
Я использую ggVG для этой цели (нужно побежаться на нормальном режиме). Это команда только выделяет весь текст в документе.
Я даже переназначен Ctrl+A для этой цели, так как мне действительно не нужно увеличивать целое число с помощью ярлыка (по умолчанию Ctrl+A карта).
как раз добавьте это в ваше .vimrc :
Это <esc> во-первых, чтобы убедиться, что пользователь находится в нормальном режиме.
можно использовать cat file , а затем выберите output, скопируйте и вставьте, если вам нужно вставить его в свой браузер.
для vi так можно выделить весь текст и записать его в новый файл:
теоретически это должно работать как на Linux, так и на Windows — я пробовал его на Mac, но он не работает.
использовать ggVG. введите «gg», чтобы перейти в верхней части теста Затем введите VG.
Записки программиста
Самое главное — побороть боязнь белого листа. Я всегда говорю это себе, когда нужно начать работу над чем-то и не знаешь, как подступиться. Так что я решил не ломать голову над тем, о чем будет первая запись в этом блоге, а просто выложить небольшую шпаргалку по текстовому редактору Vim.
Шпаргалка эта уже не первый месяц хранится у меня в
/txt/vim.txt. За это время я успел составить довольно объемный справочник по основным командам Vim. При желании вы можете начать свое обучение работе с Vim с этого поста.
/.vimrc
Можно редактировать файлы через сеть, например
:e <scp|ftp|ftps>://user@host/path/to/the/file.txt
:Ex или :e ./ — файловый менеджер== Основы ==
hjkl перемещение в разные стороны
i режим вставки
I добавление в начало строки
a режим добавления
A добавление в конец строки
o добавить строку сразу за текущей
O добавить строку перед текущей
R писать поверх имеющегося текста
u, :u[ndo] отмена предыдущего действия (undo)
CTR-R, :red[o] отмена отмены предыдущего действия (redo)
dd вырезать (удалить) строку
cc удалить и начать редактирование
yy копировать строку
p вставить из буфера обмена
<n>d удалить n+1 строку
<n>y скопировать n+1 строку
ESC перейти в режим просмотра
DEL удалить следующий символ
:<n> перейти на строку #n
% перейти к парной скобке
:e **/filename.c редактировать файл (с поиском по имени)
:w [fname] записать изменения
:wa сохранить изменения во всех файлах
:q выйти из редактора
:q! выйти из редактора, не сохраняя изменения
:color <name> выбор цветовой схемы. цветвые схемы:
/usr/local/share/vim/vim72/colors/*.vim
:pwd текущий каталог
:cd [path] перейти в другой каталог
:!команда выполнить команду — man, git, и так далее
стрелочками веерх и вниз можно автодополнять
команды и искать по истории
CTR+p или CTR+n автоматическое дополнение текста
(в режиме редактирования)
CTR+r,=,<expr> вставить выражение, например 5*2 — 3
(в режиме редактирования)
CTR+u, CTR+d Page Up / Page Down
CTR+y, CTR+e Перемотка вверх/вниз без движения курсора== Подсветка синтаксиса ==
:syntax on включить подсветку
:syntax off выключить подсветку (по умолчанию)== Перенос строк ==
:set wrap разрешить word wrap (по умолчанию)
:set nowrap запретить word wrap== Печать ==
:ha[rdcopy] распечатать документ
:set printoptions=duplex:off отключить двустороннюю печать== Сворачивание ==
zc свернуть блок
zo развернуть блок
zM закрыть все блоки
zR открыть все блоки
za инвертирование
zf см :set foldmethod=manual
:set foldenable включить свoрачивание
:set foldmethod=syntax сворачивание на основе синтаксиса
:set foldmethod=indent сворачивание на основе отступов
:set foldmethod=manual выделяем участок с помощью v и говорим zf
:set foldmethod=marker сворачивание на основе маркеров в тексте
:set foldmarker=bigin,end задаем маркеры начала и конца блока== Маркеры ==
ma установить локальный маркер a
mB установить глобальный маркер B
`c перейти к локальному маркеру c
`0 вернуться на позицию, на которой закончили
работу при закрытии vim
:marks просмотр маркеров
set viminfo=’1000,f1 маркеры пишутся в/.viminfo, восстанавливаясь
при следующем запуске vim. маркер " хранит
последнюю позицию курсора в файле
== Сессии ==
mksession file.session сохранить текущую сессию
source file.session восстановить ранее сохраненную сессию== Макросы ==
qa записать макрос с именем a
q в режиме записи макроса: закончить запись
@a выполнить макрос с именем a
@@ повторить последний макрос== Регистры ==
"ayy скопировать строку в регистр a
"bdd вырезать строку и поместить в регистр b
"С2d вырезать три строки и дописать в конец
регистра C
:reg [name1][name2][. ] просмотреть содержимое регистров== Выделение ==
v + hjkl выделение текста
SHIFT + v выделить строку
CTR + v выделение прямоугольника
p вставить
y копировать
d удалить
gu к нижнему регистру
gU к верхнему регистру== Отступы ==
[#]> сдвинуть выделенное вправо
[#]< сдвинуть выделенное влево
[#]>> сдвинуть строку вправо
[#]<< сдвинуть строку влево
set tabstop=# для табуляции используется # пробелов
set shiftwidth=# в командах отступа используется # пробелов
set [no]expandtab заменять ли табуляцию на соответствующее
число пробелов== Поиск и замена в файле ==
/Выражение поиск выражения в файле
\cВыражение поиск без учета регистра
n следующее совпадение
N предыдущее совпадение
:%s/foo/bar/gi замена строк, см http://eax.me/regular-expr/== Поиск по всему проекту ==
:vimgrep /EXPR/ **/*.c поиск по регулярному выражению
:copen показать все найденные места
:close скрыть все найденные места
:cn переход к следующему результату
:cp переход к предыдущему результату== Нумерация строк ==
:set number включить нумерацию строк
:set nonumber отключить нумерацию строк== Работа с вкладками (a.k.a табами) ==
:tabnew [fname] создать таб
:tabs вывести список табов
:tabn следующий таб
:tabp предыдущий таб
<n>gt перейти на таб #n
gt следующий таб
gT предыдущий таб
:tabm +1 переместить таб вперед на одну позицию
:tabm -1 переместить таб назад на одну позицию
:tabm 2 переместить таб на заданную позицию
(нумерация начинается с нуля)== Работа с окнами ==
:split горизонтальное разбиение
:vsplit вертикальное разбиение
Ctr+W, затем
с закрыть окно
+- изменение высоты текущего окна
<> изменение ширины текущего окна
= установить равный размер окон
hjkl или стрелочки перемещение между окнами== Проверка орфографии ==
mkdir -p/.vim/spell
wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.sug
wget http://ftp.vim.org/vim/runtime/spell/ru.koi8-r.spl
wget http://ftp.vim.org/vim/runtime/spell/en.ascii.sug
wget http://ftp.vim.org/vim/runtime/spell/en.ascii.spl:set spell spelllang=ru,en включить проверку орфографии
:set nospell выключить проверку орфографии
]s следующее слово с ошибкой
[s предыдущее слово с ошибкой
z= замена слова на альтернативу из списка
zg good word
zw wrong word
zG ignore word== Работа с кодировкой ==
e ++enc=<имя кодировки> Редактирование файла в . кодировке
w ++enc=<имя кодировки> Сохранить файл в новой кодировке
set fileencodings=utf-8,koi8-r Список автоматически определяемых
кодировок в порядке убывания
приоритета== Другое ==
:set [no]wildmenu При авто-дополнении в командной строке над
ней выводятся возможные варианты
:set list Отображать табуляцию и переводы строк
q: История команд
. Повторение последней командыБолее подробный материал об использовании текстового редактора Vim вы найдете в книге Изучаем редакторы vi и Vim, 7-е издание. Книга доступна как в бумажном, так и в электронном формате.
На этом пока все. Думаю, я буду время от времени редактировать эту шпаргалку, так что следите за PS в конце следующих постов.
Дополнение: Также вас может заинтересовать заметка Используем Vim в качестве IDE для Erlang. Несмотря на название, многое из нее будет справедливо и в отношении других языков. Например, того же C.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.
Как отсюда выйти: шпаргалка по Vim
Вы собираетесь создать файл crontab и внезапно оказываетесь в этом странном редакторе по умолчанию. В том, в котором всё никак не разберётесь.
ESC? Ничего не произошло. CTRL + C? Нет. ESC ESC ESC? Неа. Вы в тупике.
Ну вот, опять. Склонив голову от стыда, вы запускаете очередной терминал, чтобы исполнить команду killall vim и продолжить заниматься своими делами.
С вами бывало такое? Конечно, бывало. Что ж, потратив несколько минут на эту статью, вы познакомитесь с основами редактора Vim (и научитесь быстро выходить из него).
Vim по умолчанию установлен во многих операционных системах (включая большинство дистрибутивов Linux и macOS), поэтому хотя бы поверхностные знания о нём лишними не будут. Откройте терминал и введите vim .
В умелых руках Vim может стать мощнее многих IDE. И, разумеется, он не ест сотни мегабайт памяти лишь для отображения пустого файла (да, Eclipse, это о тебе).
Основы
Некоторые из нижеописанных команд начинаются с двоеточия: нажав его, появится подсказка, в которой будет указана полная команда. Команды без двоеточий — это скорее горячие клавиши, которые можно использовать в режиме по умолчанию (в нём запускается Vim). Команды, написанные ЗАГЛАВНЫМИ БУКВАМИ — это отдельные клавиши: например, ESC — это клавиша Esc на вашей клавиатуре.
Все команды чувствительны к регистру и должны выполняться вне режима insert.
Выход из Vim
Выход без сохранения изменений:
Как запомнить: quit dammit! (закройся, чёрт возьми!)
Выход с сохранением изменений:
Как запомнить: write to disk and quit
Навигация
Для перемещения по открытому файлу используйте стрелки.
Перемещение на строку 285:
Поиск слова «import»:
Изменение текста
Вставка текста там, где стоит курсор:
Вставка текста в конце текущей строки:
Выход из режима редактирования (возврат в стандартный режим):
Выделение текста
Переход в визуальный режим:
Для выделения текста используйте стрелки.
Выход из визуального режима:
Копирование, удаление, вставка
Копирование выделенного текста в буфер:
Удаление выделенного текста:
Копирование текущей строки в буфер:
Как запомнить: yank yank
Копирование трёх строк, включая текущую, в буфер:
Удаление текущей строки и помещение её в буфер:
Как запомнить: delete delete
Удаление 5 строк, включая текущую:
Вставка из буфера перед текущей строкой:
Вставка из буфера после текущей строки:
Отмена и восстановление последнего изменения
Отмена последнего изменения:
Восстановление последнего отменённого изменения:
Отмена двух последних изменений:
Многоуровневое дерево отката изменений Vim очень мощное, подробнее о нём можно почитать в документации.
Работа с файлом
Открытие файла index.html вместо текущего:
Сохранение текущего файла:
Как запомнить: write to disk
Сохранение файла с изменённым именем, например, changes.txt:
Поиск и замена
Поиск и замена всех вхождений строки в файле:
Поиск и замена с запросом подтверждения замены:
Подсветка синтаксиса и отступы
Включение подсветки синтаксиса:
Включение автоматических отступов:
Увеличение отступов нескольких строк при выделении их в визуальном режиме:
Вкладки
Открытие server.py в новой вкладке:
Переход на вкладку справа:
Переход на предыдущую вкладку слева:
Как запомнить: tab previous
Для закрытия вкладки переключитесь на неё и используйте команду :q или :wq .
Разделённый экран
Открытие templates/base.html в режиме вертикального разделения экрана:
Как запомнить: vertical split
Открытие shared.js в режиме горизонтального разделения экрана:
Как запомнить: the ’default’ horizontal split
Перемещение между «частями» экрана:
Для закрытия экрана переключитесь на него и используйте команду :q или :wq .
Настройка Vim: файл .vimrc
Многие команды, используемые для изменения вида и поведения Vim, можно сделать включёнными по умолчанию, поместив их в .vimrc — файл конфигурации Vim, который расположен в домашнем каталоге.
Например, добавление этих строк в
/.vimrc сделает подсветку синтаксиса и автоматическую корректировку отступов включёнными по умолчанию:
Идеи для кастомизации Vim можно почерпнуть в этом GitHub-репозитории.
Полезные ресурсы
Вот ещё несколько полезных материалов для изучения Vim:
А какая команда Vim — ваша любимая? Может, вы знаете удобные приёмчики? Делитесь ими в комментариях!