мета-данные страницы
  •  

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
soft:vim [2025/03/21 17:47] radi0devsoft:vim [2025/11/09 12:07] (текущий) – внешнее изменение A User Not Logged in
Строка 10: Строка 10:
  
 ===== Теория ===== ===== Теория =====
 +
 +==== vim modes ====
 +
 +{{:soft:vim_modes.jpg|}}
  
 ==== Буферы ==== ==== Буферы ====
Строка 23: Строка 27:
 ===== Использование ===== ===== Использование =====
  
-===== normal mod =====+==== normal mod ====
  
-==== Переключение режимов ====+=== Переключение режимов ===
  
   * ''c'' / ''['' / ''esc'' - выход из режима   * ''c'' / ''['' / ''esc'' - выход из режима
Строка 34: Строка 38:
   * ''ctrl+v'' - **v**isual mod (blocks)   * ''ctrl+v'' - **v**isual mod (blocks)
  
-==== Быстрые действия ====+=== Быстрые действия ===
  
   * ''y'' - скопировать   * ''y'' - скопировать
Строка 44: Строка 48:
   * ''ZQ'' - выйти   * ''ZQ'' - выйти
  
-==== Навигация ====+=== Навигация ===
  
 Внутри строки: Внутри строки:
Строка 57: Строка 61:
   * ''e'' - перейти в конец следующего слова   * ''e'' - перейти в конец следующего слова
   * ''b'' - перейти к началу предыдущего слова   * ''b'' - перейти к началу предыдущего слова
 +  * ''ctrl+y'' - сдвиг вверх, с сохранение позиции коретки
 +  * ''ctrl+e'' - сдвиг вниз, с сохранением позиции коретки
 +
  
 По строкам: По строкам:
Строка 74: Строка 81:
   * ''z Enter'' - прокрутить окно так, что строка с курсором будет вверху   * ''z Enter'' - прокрутить окно так, что строка с курсором будет вверху
  
-==== Поиск ====+=== Поиск ===
  
   * ''/слово'' - найти подстроку "слово"   * ''/слово'' - найти подстроку "слово"
Строка 80: Строка 87:
   * ''N'' - предыдущее вхождение   * ''N'' - предыдущее вхождение
  
-==== Замена ==== +==== command mod ====
- +
-Для замены будет использоваться такая конструкция:\\ +
-'':%s/искать/заменить/g'' +
- +
-===== command mod =====+
  
   * ''quit'' / ''q''  - выйти   * ''quit'' / ''q''  - выйти
Строка 98: Строка 100:
   * ''set опция'' - изменить опцию   * ''set опция'' - изменить опцию
   * ''reg'' - листинг регистров   * ''reg'' - листинг регистров
 +  * ''sp'' - разделение экрана по горизонтали
 +  * ''vsp'' - разделение экрана по вертикали
   * ''help'' - справка   * ''help'' - справка
-  +  * ''argdo'' - выполнить следующие команды для всех файлов
  
-===== insert mod =====+=== Замена === 
 + 
 +Для замены будет использоваться такая конструкция:\\ 
 +'':%s/искать/заменить/g'' 
 + 
 +++++regex syntax| 
 +  * ''.'' - соответствует любому одиночному символу, кроме символа новой строки. 
 +  * ''*'' - соответствует нулю или более вхождениям предыдущего символа или группы. 
 +  * ''+'' - соответствует одному или более вхождениям предыдущего символа или группы. 
 +  * ''?'' - соответствует нулю или одному вхождению предыдущего символа или группы. 
 +  * ''^'' - соответствует началу строки. 
 +  * ''$'' - соответствует концу строки. 
 +  * ''[]'' - определяет класс символов. Например, ''[abc]'' соответствует ''a'', ''b'' или ''c''
 +  * ''[^]'' - соответствует любому символу, не входящему в указанный класс. Например, ''[^abc]'' соответствует любому символу, кроме ''a'', ''b'' или ''c''
 +  * ''{n}'' - соответствует ровно n вхождениям предыдущего символа или группы. Например, ''a{3}'' соответствует ''aaa''
 +  * ''{n,}'' - соответствует ''n'' или более вхождениям. Например, ''a{2,}'' соответствует ''aa'', ''aaa'' и так далее. 
 +  * ''{n,m}'' - соответствует от ''n'' до ''m'' вхождений. Например, ''a{2,4}'' соответствует ''aa'', ''aaa'' и ''aaaa''
 +  * ''\\'' - экранирует специальные символы. Например, ''\\''. соответствует точке. 
 +  * ''()'' - группирует выражения. Например, ''(abc)*'' соответствует ''abc'', ''abcabc'' и так далее. 
 +  * ''|'' - логическое "или". Например, ''abc|def'' соответствует либо ''abc'', либо ''def''
 +++++ 
 +=== Bash команды === 
 + 
 +Для выполнения команд в текущем pwd прямо из vim использоваться такая конструкция:\\ 
 +'':!<команда>'' 
 + 
 +==== insert mod ====
  
   * ''ctrl+t'' - сдвинуть строку вправо   * ''ctrl+t'' - сдвинуть строку вправо
Строка 111: Строка 141:
  
 TODO: написать о опциях и vimrc TODO: написать о опциях и vimrc
 +
 +==== Плагины ====
 +
 +Проще всего ставить плагины при помощи плагина //vim-plug//. Его установка:
 +<code bash>
 +curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
 +</code>
 +
 +Далее в ''~/.vimrc'' прописываем следующее:
 +<code vim>
 +call plug#begin()
 +
 +" Тут список плагинов
 +" Примеры:
 +
 +" Сокращенная запись для GitHub; переводится как https://github.com/junegunn/seoul256.vim.git
 +Plug 'junegunn/seoul256.vim'
 +
 +" Любой допустимый git URL разрешен
 +Plug 'https://github.com/junegunn/vim-easy-align.git'
 +
 +" Используя помеченный релиз; допускается подстановочный знак (требуется git 1.9.2 или выше)
 +Plug 'fatih/vim-go', { 'tag': '*' }
 +
 +" Используя не-умолчательную ветку
 +Plug 'neoclide/coc.nvim', { 'branch': 'release' }
 +
 +" Используйте опцию 'dir', чтобы установить плагин в не-умолчательную директорию
 +Plug 'junegunn/fzf', { 'dir': '~/.fzf' }
 +
 +" Хук после обновления: выполните команду оболочки после установки или обновления плагина
 +Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
 +
 +" Хук после обновления может быть лямбда-выражением
 +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
 +
 +" Если плагин vim находится в подкаталоге, используйте опцию 'rtp', чтобы указать его путь
 +Plug 'nsf/gocode', { 'rtp': 'vim' }
 +
 +" Загрузка по требованию: загружается, когда выполняется указанная команда
 +Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' }
 +
 +" Неподдерживаемый плагин (установлен и обновлен вручную)
 +Plug '~/my-prototype-plugin'
 +
 +
 +call plug#end()
 +</code>