mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-11-23 22:27:35 +03:00
242 lines
12 KiB
Markdown
242 lines
12 KiB
Markdown
---
|
||
category: tool
|
||
tool: vim
|
||
contributors:
|
||
- ["RadhikaG", "https://github.com/RadhikaG"]
|
||
translators:
|
||
- ["Anton Slukovskiy", "https://github.com/slukovskiy"]
|
||
filename: LearnVim-ru.txt
|
||
lang: ru-ru
|
||
---
|
||
|
||
[Vim](http://www.vim.org)
|
||
(Vi IMproved) это клон полулярного текстового редактора для Unix. Он разработан
|
||
с целью повышения скорости и продуктивности и повсеместно используется в
|
||
большинство Юникс-подобных систем. В нем имеется множество клавиатурных
|
||
сочетаний для быстрой навигации к определенным точкам в файле и быстрого
|
||
редактирования.
|
||
|
||
## Основы навигации в vim
|
||
|
||
```
|
||
vim <filename> # Открыть <filename> в vim
|
||
:q # Выйти из vim
|
||
:w # Сохранить текущий файл
|
||
:wq # Сохранить и выйти
|
||
:q! # Выйти из vim не сохраняя файл
|
||
|
||
:x # Сохранить файл и выйти из vim, короткая версия :wq
|
||
|
||
u # Отмена последней команды
|
||
CTRL+R # Отмена отмены
|
||
|
||
h # Переместить курсор на один символ влево
|
||
j # Переместить курсор на один символ вниз
|
||
k # Переместить курсор на один символ вверх
|
||
l # Переместить курсор на один символ вправо
|
||
|
||
# Перемещение по строке
|
||
|
||
0 # Переместить курсор к началу строки
|
||
$ # Переместить курсор к концу строки
|
||
^ # Переместить курсор к первому непустому символу в строке
|
||
|
||
# Поиск в тексте
|
||
|
||
/<word> # Подсветить все вхождения <word> в тексте после курсора
|
||
?<word> # Подсветить все вхождения <word> в тексте до курсора
|
||
n # Передвигает курсор к следующему вхождения искомого слова
|
||
N # Передвигает курсор к предыдущему вхождения искомого слова
|
||
|
||
:%s/foo/bar/g # Меняет «foo» на «bar» во всем файле
|
||
:s/foo/bar/g # Меняет «foo» на «bar» на текущей строке
|
||
|
||
# Переходы к символу
|
||
|
||
f<character> # Перенести курсор к <character>
|
||
t<character> # Перенести курсор вперед и остановиться прямо
|
||
# перед <character>
|
||
|
||
# Например,
|
||
f< # Перести курсор и остановиться на <
|
||
t< # Перенсти курсор и остановиться прямо перед <
|
||
|
||
# Перемещение по словам
|
||
|
||
w # Переместиться вперед на одно слово
|
||
b # Перенеститься назад на одно слово
|
||
e # Перейти к концу текущего слова
|
||
|
||
# Другие команды для передвижения по тексту
|
||
|
||
gg # Перейти к началу файла
|
||
G # Перейти к концу файла
|
||
:NUM # Перейти к строке под номером NUM
|
||
# (NUM может быть любым числом)
|
||
H # Переместить курсор к верхнему краю экрана
|
||
M # Переместить курсор к середине экрана
|
||
L # Переместить курсор к нижнему краю экрана
|
||
```
|
||
|
||
## Режимы:
|
||
|
||
Vim основывается на концепте **режимов**.
|
||
|
||
Командный режим - vim запускается в этом режиме по-умолчанию, используется для
|
||
навигации и ввода команд.
|
||
Режим ввода - используется для внесения изменений в файле.
|
||
Визуальный режим - используется для подсветки текста и выполнения операций над ним.
|
||
Режим командной строки - используется для ввода команд в нижнем углу экрана после символа «:».
|
||
|
||
```
|
||
i # Переводит vim в режим вставки перед позицией курсора
|
||
a # Переводит vim в режим вставки после позиции курсора
|
||
v # Переводит vim в визуальный режим
|
||
: # Переводит vim в режим командной строки
|
||
<esc> # Выходит из любого режима в котором вы находитесь
|
||
# в командный режим
|
||
|
||
# Копирование и вставка текста
|
||
|
||
y # Скопировать выделенное
|
||
yy # Скопировать текущую строку
|
||
d # Удалить выделенное
|
||
dd # Удалить текущую строку
|
||
p # Вставить скопированный текст после текущей позиции курсора
|
||
P # Вставить скопированный текст перед текущей позицией курсора
|
||
x # Удалить символ под текущей позицией курсора
|
||
```
|
||
|
||
## «Грамматика» vim
|
||
|
||
Vim можно рассматривать как набор команд в формате «Глагол-Модификатор-Существительное», где:
|
||
|
||
Глагол - ваше действие.
|
||
Модификатор - то как вы его выполняете.
|
||
Существительное - объект над которым вы его выполняете.
|
||
|
||
Несколько важных пример «Глаголов», «Модификаторов», и «Существительных»:
|
||
|
||
```
|
||
# «Глаголы»
|
||
|
||
d # Удалить
|
||
c # Изменить
|
||
y # Скопировать
|
||
v # Визуально выделить
|
||
|
||
# «Модификаторы»
|
||
|
||
i # Внутри
|
||
a # Снаружи
|
||
NUM # Число
|
||
f # Ищет что-то и останавливается на нем
|
||
t # Ищет что-то и останавливается перед ним
|
||
/ # Ищет строку после курсора
|
||
? # Ищет строку перед курсором
|
||
|
||
# «Существительные»
|
||
|
||
w # Слово
|
||
s # Предложение
|
||
p # Параграф
|
||
b # Блок
|
||
|
||
# Образцы «предложений» или команд
|
||
|
||
d2w # Удалить 2 слова
|
||
cis # Изменить объемлющее предложение
|
||
yip # Скопировать объемлющий параграф
|
||
ct< # Изменяет текст от курсора до следующей открывающей скобки
|
||
d$ # Удалить все от положения курсора до конца строки
|
||
```
|
||
|
||
## Некоторые сокращения и хитрости
|
||
|
||
<!--TODO: Add more!-->
|
||
```
|
||
> # Сдвинуть выделенное на один отступ вправо
|
||
< # Сдвинуть выделенное на один отступ влево
|
||
:earlier 15m # Возвращает документ к состоянию в котором он был
|
||
# 15 минут назад
|
||
:later 15m # Отменяет предыдущую команду
|
||
ddp # Меняет позиции последовательных строк, сначала dd затем p
|
||
. # Повторяет предыдущее действие
|
||
```
|
||
|
||
## Макросы
|
||
|
||
Макросы это просто записываемые действия.
|
||
Во время записи макросы запоминают **все** действия и команды до тех пор пока
|
||
запись не будет остановлена.При вызове макрос применяет ту же самую последовательность
|
||
действий и команд на выделенном тексте.
|
||
|
||
```
|
||
qa # Начать запись макроса под именем «a»
|
||
q # Закончить запись
|
||
@a # Выполнить макрос
|
||
```
|
||
|
||
### Настройка ~/.vimrc
|
||
|
||
Файл .vimrc может использоваться для настройки Vim при запуске.
|
||
|
||
Вот пример файла ~/.vimrc:
|
||
|
||
```
|
||
" Пример ~/.vimrc
|
||
" 2015.10
|
||
|
||
" Отключает совместимость со старым vi
|
||
set nocompatible
|
||
|
||
" Определяет тип файла по его имени для разрешения автоматических отступов и т. д.
|
||
filetype indent plugin on
|
||
|
||
" Включает подсветку синтаксиса
|
||
syntax on
|
||
|
||
" Улучшенное автодополнение команд
|
||
set wildmenu
|
||
|
||
" Использовать поиск не чувствительный к регистру
|
||
" за исключением использования заглавный букв
|
||
set ignorecase
|
||
set smartcase
|
||
|
||
" Копирует отступы с текущей строки при добавлении новой
|
||
set autoindent
|
||
|
||
" Показывать номера строк
|
||
set number
|
||
|
||
" Настройки отступов, изменяйте по собственному вкусу
|
||
|
||
" Количество видимых пробелов на один символ табуляции
|
||
set tabstop=4
|
||
|
||
" Количество пробелов в символе табуляции при редактировании
|
||
set softtabstop=4
|
||
|
||
" Количество пробелов в отступе при использовании операций >> и <<
|
||
set shiftwidth=4
|
||
|
||
" Конвертировать символы табуляции в пробелы
|
||
set expandtab
|
||
|
||
" Включить умную табуляцию и пробелы для отступов и выравнивания
|
||
set smarttab
|
||
```
|
||
|
||
### Ссылки
|
||
|
||
[Vim | Home (EN)](http://www.vim.org/index.php)
|
||
|
||
`$ vimtutor`
|
||
|
||
[A vim Tutorial and Primer (EN)](https://danielmiessler.com/study/vim/)
|
||
|
||
[What are the dark corners of Vim your mom never told you about? (Stack Overflow thread) (EN)](http://stackoverflow.com/questions/726894/what-are-the-dark-corners-of-vim-your-mom-never-told-you-about)
|
||
|
||
[Arch Linux Wiki](https://wiki.archlinux.org/index.php/Vim_%28%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%29)
|