Vi

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

Введение

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

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

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

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

Установка Vi

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

sudo apt install vim

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

sudo yum install vim

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

Видеоуроки

Using vi The basics

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

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

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

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

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

3)

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

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

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

yy

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

y10

ENTER

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

p

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

dd

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

d10

ENTER

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

i

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

Esc

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

:wq

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

:q!

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

Коротко:

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 urn.su

Нажать

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 urn.su

Затем нажать

d

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

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

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

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

Нажать

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 urn.su

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

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

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

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

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

^

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

$

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

G

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

gg

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

Допустим, мы хотим добавить русский язык в 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

vimrc

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

vi /etc/vim/vimrc

neovim

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ NVIM v0.7.0 ~ ~ Nvim is open source and freely distributable ~ https://neovim.io/#chat ~ ~ type :help nvim<Enter> if you are new! ~ type :checkhealth<Enter> to optimize Nvim ~ type :q<Enter> to exit ~ type :help<Enter> for help ~ ~ Sponsor Vim development! ~ type :help sponsor<Enter> for information

Nvim nvim nvim-intro Nvim is based on Vim by Bram Moolenaar. If you already use Vim see nvim-from-vim for a quickstart. If you are new to Vim, try the 30-minute tutorial: :Tutor<Enter> Nvim is emphatically a fork of Vim, not a clone: compatibility with Vim (especially editor and VimL features) is maintained where possible. See vim-differences for the complete reference of differences from Vim. Type gO to see the table of contents. ============================================================================== Transitioning from Vim nvim-from-vim 1. To start the transition, create your init.vim (user config) file: :call mkdir(stdpath('config'), 'p') :exe 'edit '.stdpath('config').'/init.vim' 2. Add these contents to the file: set runtimepath^=~/.vim runtimepath+=~/.vim/after let &packpath = &runtimepath source ~/.vimrc 3. Restart Nvim, your existing Vim config will be loaded. See provider-python and provider-clipboard for additional software you might need to use some features. Your Vim configuration might not be entirely Nvim-compatible. See vim-differences for the full list of changes. The 'ttymouse' option, for example, was removed from Nvim (mouse support should work without it). If you use the same vimrc for Vim and Nvim, consider guarding 'ttymouse' in your configuration like so: if !has('nvim') set ttymouse=xterm2 endif Conversely, if you have Nvim specific configuration items, you could do this: if has('nvim') tnoremap <Esc> <C-\><C-n> endif For a more granular approach use exists(): if exists(':tnoremap') tnoremap <Esc> <C-\><C-n> endif Now you should be able to explore Nvim more comfortably. Check nvim-features for more information. ============================================================================== vim:tw=78:ts=8:noet:ft=help:norl: nvim.txt [Help][RO] 7,15-60 12% ~ ~ ~ ~ ~ ~ ~ ~ ~ [No Name] 0,0-1 All :help nvim

Похожие статьи
Vi
Bash
Linux
man по vim