mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-11-23 14:17:02 +03:00
238 lines
12 KiB
Markdown
238 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](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_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9))
|