vim

vim

По коням!

отменить все изменения                 e!
отмена предыдущего действия (undo)     u, :u[ndo]
выйти сохраняя                         wq либо ZZ
выйти не сохраняя                      q! либо ZQ

Набираем CTRL-g, чтобы увидеть свое месторасположение в файле и информацию о файле.

Перейти в начало файла                 1G либо gg
Перейти к номеру строки                224 (224 как пример номера строки)
Перейти в конец файла                  G
Перемещение по файлу                   hjkl либо стрелками
Перейтив начало слова                  b
Перейтив конец слова                   e
Начало предложения                     (
Конец предложения                      )
Начало абзаца                          {
Конец абзацы                           }
Начало строки                          ^ (суфикс)
Конец строки                           $
Перейти к номеру строки                47 Shift+G # Где 47 номер строки
Открыть встроенный файл-менеджер       :e . 	
Разбить окно и открыть встроенный файл менеджер :Sex 	
Графический файл-менеджер              :browse e 	
Список буферов                         :ls 	
Перейти в родительскую директорию      :cd .. 	
Список открытых файлов                 :args 	
Открыть все файлы с расширением *.php  :args *.php 	
Показать список файлов с расширением php, содержащих в имени expression  :grep expression *.php 	
Открыть файл с именем, равным слову, находящемуся под курсором  gf 	

Набираем r и символ, заменяющий символ под курсором

Замена символа под курсором            r
Заменить слово                         cw
Заменить символ                        cl
Заменить строку                        cd
Заменить до конца строки               c$
Заменить до начала строки              c^

Групповое коментирование               Ctrl+v } I # Esc
# вместо } можно несколько раз нажать j, или 10j, или использовать любую другую команду перемещения.
Вставить новую строку                  o
скопировать строку                     yy
скопировать слово                      yw
скопировать символ                    yl
перейти в режим копирования            V
выделить все                           ggVG
скопировать выделенное                 y
вставить после курсора                 p
:%s/old/new/g 	                       Заменить все вхождения "old" на "new"
:%s/old/new/gw 	                       Заменить все вхождения "old" на "new" с запросом подтверждения
:2,35s/old/new/g 	               Заменить все вхождения "old" на "new" между 2 и 35 строками
:5,$s/old/new/g 	               Заменить все вхождения "old" на "new" начиная с 5 строки и до конца файла
:%s/^/hello/g 	                       Добавить "hello" в начало каждой строки
:%s/$/Harry/g 	                       Добавить "Harry" в конец каждой строки
:%s/onward/forward/gi 	               Заменить "onward" на "forward" с учетом регистра
:%s/ *$//g 	                       Убрать все пробелы
:g/string/d 	                       Удалить все строки, содержащие "string"
:v/string/d 	                       Удалить все строки, не содержащие "string"
:s/Bill/Steve/ 	                       Заменить первое вхождение "Bill" на "Steve" в текущей строке
:s/Bill/Steve/g 	               Заменить все вхождения "Bill" на "Steve" в текущей строке
:%s/\r//g 	                       Убрать символ возврата каретки (Такие тексты обычно приходят от windows-пользователей)
:%s#>[^<]\+>##g 	               Очистить текст от HTML-тегов
:%s/^\(.*\)\n\1$/\1/ 	               Удалить строки, повторяющиеся дважды
Ctrl+a 	                               Увеличить число под курсором на единицу
Ctrl+x 	                               Уменьшить число под курсором на единицу
ggVGg? 	                               Преобразовать текст в Rot13
Удалить символ                         x
Вырезать строку                        dd
Вырезать две строки                    2dd
Вырзать слово                          dw
Вырезать символ                        dl
Вырезать параграф                      dip
Вырезать из текущего места до -
 до конца строки                       d$
Вырезать из текущего места до -
 до начала строки                      d^

Копирование блоками Первый способ. Пошаговая инструкция!

1. Переходим в visual mode             v
2. выделяем текст от текущего
положения курсора                      hjkl либо стрелками
3. копируем                            y

Второй способ. Построчное копирование. Пошаговая инструкция!

1. Нумеруем строки в файле
относительно текущей позиции курсора   :set relativenumber
2. Определяем количество строк
которые нужно скопировать
(например - 5)                   
3. копируем                            y5y

копируем от текущей позиции 
до конца строки                        y$
скопировать слово                      yw
Пометить текущую позиция как k         mk 	
Перейти к метке k                      'k 	
Удалить все до метки k                 d'k 	
Искать слово word сверху вниз (регистро-зависимо)         /word
Искать слово word  (регистро-независимо)                  /\cword
Искать слово word снизу вверх         ?word
Продолжение поиска                    n
Искать "the"                          /\< the\> 	
Искать слова, начинающееся на the     /\< the
Искать слова, заканчивающиеся на the  /the\>
Искать "john" или "joan"              /jo[ha]n>
Искать слова из четырех символов      /\< .... \> 	
Искать "fred" или "joe"               /fred\|joe 	
Искать 4 цифры подряд                 /\<\d\d\d\d\> 	
Искать 3 пустые строки                /^\n\{3} 	
Искать во всех открытых файлах        :bufdo /searchstr/ 	 		
:!pwd 	                              Выполнить команду pwd и вернуться
!!pwd 	                              Выполнить команду pwd и вставить результат в редактор
:sh 	                              Открыть шелл
$exit либо Ctrl + D	              Вернуться в редактор из шелла
:. w !sh                              Выполнить текущую строку как команду оболочки (#n строку, если '.' заменить на n)
:r!command                            Выполнить команду и вставить результат после текущей строки

Автоматическая подстановка пути к файлу

Ctrl+x Ctrl+f
 
# перемещение по выавшему списку путей
Ctrl+n Ctrl+p

Создание файла происходит также, как его редактирование

создаем файл                       :edit filename либо :vsplit filename
записать новый файл                :write
:1,10 w outfile 	           Записать в outfile с первой по десятую строки
:1,10 w >> outfile 	           Добавить в outfile с первой по десятую строки
:r infile 	                   Вставить содержимое файла infile
:23r infile 	                   Вставить содержимое файла infile после 23 строки

Перемещение по файловой системе

Перемещение по файловой системе    :edit .
Вернутся в файловую иерархю из
редактируемого файла               :edit . либо Ctrl + o

команды для работы в файловой иерархии

отображение даты и размера         i
переименовать файл                 R
удалить файл                       D
переход на уровень вверх           -
обратная сортировка                r

Открываем несколько файлов в редакторе

vim first.txt second.txt

Для удобства можно отрыть файлы с вкладками

vim -p first.txt second.txt

переключение между файлами

перейти к следующему файлу         :n
вернуться к предыдущему файлу      :prev

Открыть ещё один файл в открытом редакторе

Открыть ещё один файл              :e
Переключится меду файлами          :e #
Создать новую вкладку              :tabnew 	
Перейти на следующую вкладку       gt 	
Перейти на первую вкладку          :tabfirst 	
Перейти на последнюю вкладку       :tablast 	
Изменить порядок вкладок           :tabm n(position) 	
Выполнить команду во всех вкладках :tabdo %s/foo/bar/g 	
Поместить все открытые файлы во вкладки :tab ball 	

Определение аббревиатуры

Для создания аббревиатуру в Vim, используем команду :abbreviate (которая сама может быть сокращена как :ab) за которой следует аббревиатура и текст, которым вы хотите ее заменить.

:ab os operating system         
:ab mail user@domain.org 	Определить mail как сокращение от user@domain.org

По умолчанию, команда :abbreviate создает аббревиатуру, которая работает в режимах вставки и команд. Но, также, мы можем использовать такие варианты, как :iab – создание аббревиатуры, которая работает только в режиме вставки, либо только в командном режиме – :cab.

Чтобы активировать аббревиатуру, вводим слово аббревиатуры, например, os (как в примере выше), за которым следует символ, не являющийся ключевым словом; например, мы можем использовать пробел или Enter.

Удаление аббревиатуры
Набираем :abб без каких-либо параметров, чтобы увидеть список всех сокращений, определенных для текущего буфера. Чтобы удалить аббревиатуру, используем :unab, за которой следует аббревиатура, либо :abc чтобы очистите все аббревиатуры.

q1 - начать запись макроса, который будет помещён в 1; q - закончить запись макроса; @1 - выполнить макрос из 1.	
Выровнять все строки                         :%!fmt 	
Выровнять все строки в текущей позиции       !}fmt 	
Выровнять следующие 5 строк                  5!!fmt 		

создать сплит окно

Открыть пустое сплит окно          Ctrl + w n
горизонтальное разбиение           :split  
вертикальное разбиение             :vsplit  
Открыть новый файл                 :split filename

открыть несколько файлов в сплит окне

vim -o first.txt second.txt
переключаться между окнами         Ctrl + ww

расположение сплит окон

горизонтальное положение           :windo wincmd K
вертикальное положение             :windo wincmd H
# либо
горизонтальное положение           :ball
вертикальное положение             :vertical ball

Шифрование файла

vim -x secret.file

Отображение символов

табуляции, пробелов, конец строки и т.д.

:set list             #  включаем
:set nolist           #  отключаем

Синхронизация директорий

Синхронизация директорий с помощью rsync. Добавим в .vimrc

map <C-r> :!rsync -avz /path/to/your/folder/or/file user@192.168.29.XX:~/path/to/destination/folder/

Теперь всякий раз, при нажатии Ctrl+r, нам потребуется ввести пароль для ssh для синхронизации указанных каталогов.

  1. v – переходим в режим выделения;
  2. j N-раз – выделяем необходимое кол-во строк;
  3. > – что бы сместить вправо (< – влево).

Иногда при использовании vim мы можем обнаружить, что после открытия файла и внесения некоторых правок, мы не можем их записать, поскольку файл требует привилегий sudo. Тогда, мы вынуждены выходим из vim, открываем его снова с правами sudo и заново редактировать файл. Но, в этом кейсе нам поможет команда tee. Мы можем выполнить следующую команду в vim для записи в файл, требующий привилегий sudo:

:w !sudo tee %

Либо, для постоянной основы добавляем в .wimrc и пользуемся комбинацией w!!

cmap w!! w !sudo tee % > /dev/null

Настройка редактора, установка плагинов, etc
Поиск текста в less и vim
vim использование макросов для решения рутинных задач

  • vim.txt
  • Последнее изменение: 2022/12/21 10:45
  • admin