Vi
Введение
Редактор 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
Удалить строку
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 мы можем двигать курсор как стрелками таки клавишами как на фото внизу.

Фото: 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 |