Работа в Vim

Работа в Vim

Работа в Vim

Решил сохранить шпаргалку по командам Vim

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 <fname>                редактировать файл
:w [fname]                записать изменения
:wa                       сохранить изменения во всех файлах
:q                        выйти из редактора
:q!                       выйти из редактора, не сохраняя изменения
:color <name>             выбор цветовой схемы. цветвые схемы:
/usr/local/share/vim/vim72/colors/*.vim
:pwd                      текущий каталог
:cd [path]                перейти в другой каталог
:!<cmd>                   выполнить команду
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                    просмотр маркеров

Регистры
«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         заменять ли табуляцию на соответствующее
число пробелов

Поиск и замена в файле
/<выражение>             поиск выражения в файле
n                        следующее совпадение
N                        предыдущее совпадение
:%s/foo/bar/gi           замена строк, см http://eax.me/regular-expr/

Нумерация строк
:set number              включить нумерацию строк
:set nonumber            отключить нумерацию строк

Работа с Tab’ами
:tabnew [fname]          создать tab
:tabs                    вывести список табов
:tabn                    следующий таб
:tabp                    предыдущий таб
<n>gt                    перейти на таб #n
gt                       следующий таб
gT                       предыдущий таб

Работа с окнами
:split                   горизонтальное разбиение
:vsplit                  вертикальное разбиение
Ctr+W, затем
с                      закрыть окно
=                      установить равный размер окон
hjkl или стрелочки     перемещение между окнами

Проверка орфографии
mkdir -p ~/.vim/spell
cd ~/.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

setlocal spell spelllang=ru,en   включить проверку орфографии
set spell!                       вкл/выкл проверку во время работы
]s                               следующее слово с ошибкой
[s                               предыдущее слово с ошибкой
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:                         История команд
.                          Повторение последней команды

Дополнения

vip — выделить параграф

viw — выделить слово

Shift+v или 0v$ — выделить строку

^v$ — выделить строку, начиная с первого непробельного символа

vi( — выделить всё между ближайшими круглыми скобками (аналогично ‘vi[‘ и ‘vi{‘ для квадратных и фигурных скобок)

va( — выделить всё между ближайшими круглыми скобками, включая сами скобки

v2j — выделить на две строки вниз

dip — вырезать параграф

di( — вырезать содержимое круглых скобок

da( — вырезать содержимое круглых скобок и сами скобки

y2y — скопировать две строки

yy — скопировать строку

yiw — скопировать слово

p — вставить после курсора

[p — вставить перед курсором

xp — поменять две буквы местами

vt, — выделить всё до ближайшей запятой

 

Можно редактировать файлы через сеть, например
:e <scp|ftp|ftps>://user@host/path/to/the/file.txt
:Ex или :e ./ — файловый менеджер

rkarimov

Обсуждение закрыто.