Vim

Содержание
Введение
Копировать строку
Вставить строку
Удалить строку
Вырезать и вставить строку
Перемещение курсора
Редактирование файлов
Пример
Поиск по файлу
sed в vim
Закомментировать несколько строк сразу
vim завис
Проверить версию
:set number: Нумерация строк
vimrc
Похожие статьи

Введение

Редактор vi или vim много где стоит по умолчанию. Например, в OpenBSD

Многие не любят его, но часто нет выхода. Если Вы занимаетесь тестированием какого-то сервера и нужно залезть в логи - вряд ли Вам разрешать установить что-то своё. А по дефолту может стоять как раз vi.

Так что лучше разобраться с помощью этого руководства и сэкономить своё время.

Полную версию мануала можно изучить здесь

Установка Vi

В Debian , Ubuntu и других deb

sudo apt install vim

В CentOS , Rocky , RHEL и других rpm

sudo yum install vim

Советую обновлять vim сразу после установки новой системы. Редактор по умолчанию может быть довольно глючным.

Основные приёмы

vi интуитивно непонятен, поэтому пока Вы не освоили хотя бы несколько команд, работать в нём будет просто невозможно

Я не шучу. Первое, что нужно запомнить: существует несколько режимов работы:

1) Командный режим (Command mode) включается по умолчанию и в нём НЕЛЬЗЯ редактировать текст в привычном понимании. Можно удалять или копировать строки, но написать что-то или удалять по одному символу нельзя.

2) Режим вставки (Insert mode) в нём можно редактировать текст, но сперва туда нужно попасть. Чтобы в него перейти нужно нажать i. Чтобы выйти из него обратно в Command Mode нужно нажать ESC.

3)

Допустим Вы хотите изменить какой-то файл.

Откройте его, нажмите i, внесите изменения, нажмите i ещё раз. Нажмите Esc. Нажмите :. Нажмите w. Нажмите q. Нажмите Enter.

Копировать строку

yy

Копировать десять строк

y10

ENTER

Вставить строку/строки

Вставить предварительно скопированную строку под текущей

p

Вставить предварительно скопированную строку над текущей

P

Вставить пустую строку над текущей можно с помощью заглавной O

SHIFT + o

Вставить пустую строку под текущей

o

Удалить строку/строки

Удалить строку (после комбинации клавишь может потребоваться нажатие Enter)

dd

Удалить десять строк

d10

ENTER

Удалить от курсора до конца файла

d G

ENTER

Перейти в режим редактирования

i

Выйти из режима вставки

Esc

Сохранить изменения

:wq

Выйти без сохранения

:q!

Отменить изменения

:e!

Вырезать и вставить строку

Коротко:

CTRL SHIFT + v d p

Подробно:

Предположим в /etc/hosts нужно перенести строку, которая выбивается из общего порядка.

Для этого нужно переместить курсор на эту строку

10.1.102.141 eth1.ru 10.1.102.159 topbicycle.ru 10.1.102.162 test.com 10.1.102.150 heihei.ru 10.1.102.164 eth1.ru

Нажать

CTRL

Затем нажать заглавную V

SHIFT + v

10.1.102.141 eth1.ru 10.1.102.159 topbicycle.ru 10.1.102.162 test.com 10.1.102.150 heihei.ru 10.1.102.164 eth1.ru

Затем нажать

d

10.1.102.141 eth1.ru 10.1.102.159 topbicycle.ru 10.1.102.162 test.com 10.1.102.164 eth1.ru

10.1.102.141 eth1.ru 10.1.102.159 topbicycle.ru 10.1.102.162 test.com 10.1.102.164 eth1.ru

Переместить курсор на строку после которой нужно вставить вырезанную

10.1.102.141 eth1.ru 10.1.102.159 topbicycle.ru 10.1.102.162 test.com 10.1.102.164 eth1.ru

Нажать

p

10.1.102.141 eth1.ru 10.1.102.150 heihei.ru 10.1.102.159 topbicycle.ru 10.1.102.162 test.com 10.1.102.164 eth1.ru

Перемещение курсора

Пока Вы НЕ зашли в Insert Mode Вы можете двигать курсор клавишами H - влево, J - вниз, K - вверх, L - вправо.

Таким образом в Command Mode мы можем двигать курсор как стрелками таки клавишами как на фото внизу.

Перемещение курсора с помощью клавиш h j k l в редакторе vi
        изображение с сайта www.eth1.ru
Клавиатура ноутбука Lenovo Thinkpad T470 .
Фото: AndreyOlegovich.ru

Чтобы переместить курсор в начало строки нажмите

^

Чтобы переместить курсор в конец строки нажмите

$

Чтобы переместить курсор в конец файла нажмите

G

Чтобы переместить курсор в начало файла нажмите

gg

Чтобы переместить курсор на строку номер 10 нажмите

10G

Чтобы переместить курсор в начало строки с табуляцией нажмите

CTRL + d

CTRL d подвинет курсор вместе с текстом. В примере курсор сейчас в конце 3-й строки

1 #!/bin/bash 2 mmm 3 mmm 4 mmm 5 mmm

После нажатия CTRL d

1 #!/bin/bash 2 mmm 3 mmm 4 mmm 5 mmm

Редактирование файла

Отменить последние изменения можно нажав u

Дописать

i - добавляет перед
a - добавляет после
I - добавляет в начало строки
A - добавляет в конец строки

Рассмотрим файл в котором одна строка 12345 и курсор стоит на 3.

12345

Будем нажимать Esc и ставить курсор на 3 затем одну из клавиш i, a, I, A, затем 0. Потом 0 удаляем.

ESC i 0

120345

ESC a 0

123045

ESC I 0

012345

ESC A 0

123450

d - Удалить

Рассмотрим файл со строкой

one two three four five

Поставим курсор на t в слове three

Удалить одно слово

dw

one two four five

Удалить до конца строки

d$

one two

Удалить всю строку

dd

Изменить регистр

Изменить регистр одного символа можно с помощью ~

Изменить регистр всей строки на противоположный:

Поставить курсор в начало строки и нажать g~~:

^

g~~

Всю строку в верхний регистр:

^

gUU

Скопировать часть файла в другой файл.

Рассмотрим файл greeting

1 Thank you for visiting 2 www.eth1.ru 3 or one of it's forks such as: 4 5 eth1.ru - lightweight no JS site 6 devhops.ru - full fork of IT content 7 answerit.ru - API for QA lessons 8 aredel.com - English translation

Скопируем строки 5, 6 и 7 в файл sites

:5,7w sites

cat sites

eth1.ru - lightweight no JS site devhops.ru - full fork of IT content answerit.ru - API for QA lessons

Скопировать текст из файла можно с помощью r

touch newsites
vi newsites
:r sites

Пример редактирования файла

Допустим, мы хотим добавить русский язык в Debian Linux .

Мы открываем файл /etc/default/keyboard командой

sudo vi /etc/default/keyboard

Кнопкой j опускаемся на строку

XKBLAYOUT="us"

Кнопкой l двигаем курсор на символ s

Нажимаем кнопку a - от слова add - добавить.

Пишем

, ru

Так, чтобы получилось

XKBLAYOUT="us,ru"

Нажимаем ESC, чтобы вернуться в командный режим.

Кнопками h j k l переводим курсор на первую " в строке

XKBOPTIONS=""

Нажимаем a

Пишем

grp:ctrl_shift_toggle

Так, чтобы получилось

XKBOPTIONS="grp:ctrl_shift_toggle"

Нажимаем ESC

Нажимаем :wq

Нажимаем ENTER

vi сделал своё дело, а Вам скорее всего нужно будет перезагрузиться, чтобы язык добавился.

Поиск по файлу

Поиск вперёд

/

Поиск назад

?

Перейти к следующему результату

n

Перейти к предыдущему результату

N

sed в vim

Можно выполнять команды sed прямо в редакторе

Нужно нажать ESC, затем : ввести % и после него команду

:%s/bad/good/g

Затем нажать ENTER и всё плохое будет заменено на всё хорошее.

Если сразу после выполнения команды нажать u её действие будет отменено.

При выполнении команд с указанием определённых строк % нужен.

Заменить bad на good только в строках 3 и 4 можно командой

:3,4s/bad/good/g

Закомментировать несколько строк сразу

С помощью sed комманд можно закомментировать и раскомментировать несколько строк сразу

На примере GNUmakfile для управления VirtualBox

vi GNUmakefile

# UBUNTU LINUX_REPO="mirror.yandex.ru/ubuntu-releases" LINUX_VERSION=20.04.3 # LINUX_ISO=ubuntu-$(LINUX_VERSION)-desktop-amd64.iso LINUX_ISO=ubuntu-$(LINUX_VERSION)-live-server-amd64.iso LINUX_URL=https://$(LINUX_REPO)/$(LINUX_VERSION)/$(LINUX_ISO) OS_TYPE=Ubuntu_64

Закомментировать строки с 20 по 25 можно нажав ESC и выполнив следующую команду

:20,25s/^/#

# UBUNTU #LINUX_REPO="mirror.yandex.ru/ubuntu-releases" #LINUX_VERSION=20.04.3 ## LINUX_ISO=ubuntu-$(LINUX_VERSION)-desktop-amd64.iso #LINUX_ISO=ubuntu-$(LINUX_VERSION)-live-server-amd64.iso #LINUX_URL=https://$(LINUX_REPO)/$(LINUX_VERSION)/$(LINUX_ISO) #OS_TYPE=Ubuntu_64

Раскомментировать эти строки (20 - 25)

:20,25s/^#//

vim завис

Если vim завис попробуйте нажать

ESC

И написать

Exit

Проверить версию

Достаточно просто выполнить команду vi или vim

vi

~ ~ ~ ~ VIM - Vi IMproved ~ ~ version 8.1.3741 ~ by Bram Moolenaar et al. ~ Modified by team+vim@tracker.debian.org ~ Vim is open source and freely distributable ~ ~ Help poor children in Uganda! ~ type :help iccf<Enter> for information ~ ~ type :q<Enter> to exit ~ type :help<Enter> or <F1> for on-line help ~ type :help version8<Enter> for version info ~ ~ ~

Нумерация строк

Включить/выключить нумерацию строк

Включить

:set number

1 Thank you for visiting 2 www.eth1.ru 3 or one of it's forks such as: 4 5 eth1.ru - lightweight no JS site 6 devhops.ru - full fork of IT content 7 answerit.ru - API for QA lessons 8 aredel.com - English translation

Выключить

:set nonumber

invnumber

:set invnumber

Чтобы сделать изменения постоянными нужно внести их в файл .vimrc

vimrc

Файл с настройками vim обычно можно открыть выполнив

vi /etc/vim/vimrc

Ещё один вариант - создать файл .vimrc в домашней директории пользователя.

cd
vi .vimrc

set showmode number nohlsearch set ai ts=4 expandtab abbr _sh #!/bin/bash nmap <C-N> :set invnumber<CR>

Пояснения:

set ai ts=4

устанавливает табуляцию равной 4 пробелам.

abbr _sh #!/bin/bash

позволяет набрав _sh + TAB получить #!/bin/bash

nmap <C-N> :set invnumber<CR>

позволяет включать и выключать нумерацию строк нажатием

CTRL + N

Cтатьи про Vim на других сайтах
Основы работы с редактором VIM
Похожие статьи
IDE
Vim
Vimtutor
Neovim
Установка vim в Windows
VSC
Sublime
Bash
Linux
man по vim

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: