Text
This commit is contained in:
21
wiki/Vim/Vimdiff.md
Normal file
21
wiki/Vim/Vimdiff.md
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
title: Vimdiff
|
||||
category: Vim
|
||||
tags: Vim, команды Vim
|
||||
summary:
|
||||
CSS: table-100.css
|
||||
...
|
||||
|
||||
Команды режима `diff` для сравнения и слияния файлов:
|
||||
|
||||
Команда | Назначение
|
||||
-------------|------------
|
||||
`do` | Получить изменения из второго окна в текущее окно
|
||||
`dp` | Вставить изменения из текущего окна во второе окно
|
||||
`]c` | Перейти к следующему отличию
|
||||
`[c` | Перейти к предыдущему отличию
|
||||
`C-W` `C-W` | Переход между окнами
|
||||
|
||||
[Видеоурок](http://vimcasts.org/episodes/fugitive-vim-resolving-merge-conflicts-with-vimdiff/)
|
||||
по трехпутевому слиянию.
|
||||
|
24
wiki/Vim/Замена выделенного блока.md
Normal file
24
wiki/Vim/Замена выделенного блока.md
Normal file
@ -0,0 +1,24 @@
|
||||
---
|
||||
title: "Vim: замена выделенного блока"
|
||||
category: Vim
|
||||
tags: Vim, команды Vim
|
||||
summary:
|
||||
CSS: table-100.css
|
||||
...
|
||||
|
||||
Замену блока, выделенного в режиме VISUAL, можно выполнить
|
||||
последовательностью команд `y:%s/<ctrl-r>"/заменитель/g`.
|
||||
|
||||
Команда | Назначение
|
||||
---------------|-------------
|
||||
`y` | Копирование в регистр "
|
||||
`:` | Перейти в командный режим
|
||||
`%` | Применить ко всему буферу
|
||||
`s` | Замена
|
||||
`Сtrl-r` | Вставка из регистра
|
||||
`"` | Имя регистра (будет предложено по умолчанию)
|
||||
`/` | Разделитель
|
||||
`заменитель` | Новый текст
|
||||
`/` | Разделитель
|
||||
`g` | Для всех вхождений в строке
|
||||
|
48
wiki/Vim/Клавиши Leader и LocalLeader.md
Normal file
48
wiki/Vim/Клавиши Leader и LocalLeader.md
Normal file
@ -0,0 +1,48 @@
|
||||
---
|
||||
title: "Vim: клавиши Leader и LocalLeader"
|
||||
category: Vim
|
||||
tags: Vim, команды Vim
|
||||
summary:
|
||||
...
|
||||
|
||||
Клавиши `Leader` и `LocalLeader` представляют собой префиксы для команд.
|
||||
Их текущие значения можно посмотреть командами
|
||||
|
||||
```vim
|
||||
:echo mapleader
|
||||
:echo maplocalleader
|
||||
```
|
||||
|
||||
Часто их значения переназначают в файле `$HOME/.vimrc`, например так
|
||||
|
||||
```vim
|
||||
let mapleader = "\<Space>"
|
||||
let maplocalleader = ","
|
||||
```
|
||||
|
||||
Новое значение команды генерируется с помощью текущих значений этих
|
||||
переменных, таким образом последовательность команд
|
||||
|
||||
```vim
|
||||
let mapleader = ","
|
||||
nnoremap <Leader>a :echo "Hey there ,"<CR>
|
||||
|
||||
let mapleader = "\<Space>"
|
||||
nnoremap <Leader>a :echo "Hey there space"<CR>
|
||||
```
|
||||
|
||||
приведёт к тому, что будут созданы две команды `,a` и `<Space>a`,
|
||||
следовательно для получения единообразных команд следует помещать
|
||||
переназначения в начало файла `$HOME/.vimrc`.
|
||||
|
||||
`LocalLeader` отличается от `Leader` тем, что действует только для
|
||||
текущего буфера, поэтому обычно используется в плагинах, загружаемых
|
||||
для определённых типов файлов.
|
||||
|
||||
Таймауты для ввода команд, использующих клавиши `Leader` и
|
||||
`LocalLeader`, настраиваются командой
|
||||
|
||||
```vim
|
||||
set timeout timeoutlen=5000 ttimeoutlen=100
|
||||
```
|
||||
|
22
wiki/Vim/Клавиши PageUp и PageDown.md
Normal file
22
wiki/Vim/Клавиши PageUp и PageDown.md
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
title: "Vim: клавиши PageUp и PageDown"
|
||||
category: Vim
|
||||
tags: Vim, команды Vim
|
||||
summary:
|
||||
...
|
||||
|
||||
Чтобы поведение клавиш `PageUp` и `PageDown` совпадало с более
|
||||
привычным, можно добавить в `$HOME/.vimrc` следующий код:
|
||||
|
||||
```vim
|
||||
" Более привычные PgUp / PgDown, когда курсор остаётся в той же строке, "
|
||||
" а не переносится вверх / вниз экрана, как при стандартном PgUp / PgDown. "
|
||||
" Поскольку по умолчанию прокрутка по C-U / C-D, при которой курсор остаётся
|
||||
" на месте, происходит на полэкрана, привязка делается к двойному нажатию
|
||||
" этих комбинаций. "
|
||||
nmap <PageUp> <C-U><C-U>
|
||||
nmap <PageDown> <C-D><C-D>
|
||||
imap <PageUp> <C-O><C-U><C-O><C-U>
|
||||
imap <PageDown> <C-O><C-D><C-O><C-D>
|
||||
```
|
||||
|
33
wiki/Vim/Кодировка файла.md
Normal file
33
wiki/Vim/Кодировка файла.md
Normal file
@ -0,0 +1,33 @@
|
||||
---
|
||||
title: "Vim: кодировка файла"
|
||||
category: Vim
|
||||
tags: Vim
|
||||
summary:
|
||||
...
|
||||
|
||||
Для управления кодировкой файлов можно создать дополнительное меню,
|
||||
позволяющее открыть файл в выбранной кодировке, проверить её
|
||||
корректность и сохранить в нужном виде. Пример кода:
|
||||
|
||||
```vim
|
||||
" кодировка для чтения файла
|
||||
set encoding=utf-8
|
||||
" кодировка терминала
|
||||
set termencoding=utf-8
|
||||
" кодировка для записи файла
|
||||
set fileencoding=utf-8
|
||||
" список предполагаемых кодировок в порядке предпочтения
|
||||
set fileencodings=utf8,koi8r,cp1251,cp866,latin1,ucs-2le
|
||||
|
||||
set wildmenu
|
||||
set wcm=<Tab>
|
||||
menu Encoding.Open\ as\ KOI8-R :e ++enc=koi8-r<CR>
|
||||
menu Encoding.Open\ as\ CP1251 :e ++enc=cp1251<CR>
|
||||
menu Encoding.Open\ as\ CP866 :e ++enc=cp866<CR>
|
||||
menu Encoding.Open\ as\ LATIN1 :e ++enc=latin1<CR>
|
||||
menu Encoding.Open\ as\ UCS-2LE :e ++enc=ucs-2le<CR>
|
||||
menu Encoding.Open\ as\ UTF-8 :e ++enc=utf-8<CR>
|
||||
menu Encoding.Convert\ to\ UTF-8 :set fenc=utf-8<CR>
|
||||
map <F12> :emenu Encoding.<Tab>
|
||||
```
|
||||
|
27
wiki/Vim/Комментирование кода.md
Normal file
27
wiki/Vim/Комментирование кода.md
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
title: "Vim: комментирование кода"
|
||||
category: Vim
|
||||
tags: Vim, команды Vim
|
||||
summary:
|
||||
CSS: table-100.css
|
||||
...
|
||||
|
||||
Отмена автоматического комментирования кода при вставке из буфера:
|
||||
|
||||
```Vim
|
||||
autocmd FileType * setlocal formatoptions-=cro
|
||||
```
|
||||
|
||||
Для управления комментированием можно использовать плагин
|
||||
[NerdCommenter](https://github.com/scrooloose/nerdcommenter).
|
||||
Основные команды:
|
||||
|
||||
Команда | Назначение
|
||||
----------------------|----------------------------
|
||||
`[n]<leader\>cc` | комментировать блок
|
||||
`[n]<leader\>cn` | комментировать с учётом вложенности
|
||||
`[n]<leader\>cl` | символ комментария помещать в начало строки
|
||||
`[n]<leader\>ci` | инвертирование комментариев
|
||||
`<leader\>cA` | добавить комментарий в конец строки
|
||||
`[n]<leader\>cu` | раскомментировать блок
|
||||
|
44
wiki/Vim/Менеджер плагинов Plug.md
Normal file
44
wiki/Vim/Менеджер плагинов Plug.md
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
Title: "Vim: менеджер плагинов Plug"
|
||||
Category: Vim
|
||||
Tags: Vim, плагины Vim
|
||||
Summary:
|
||||
...
|
||||
|
||||
Автоматическое управление плагинами в Vim можно организовать
|
||||
с помощью менеджера [Plug](https://github.com/junegunn/vim-plug),
|
||||
установить который можно командой
|
||||
|
||||
```sh
|
||||
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
|
||||
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
||||
```
|
||||
|
||||
Чтобы использовать Plug, нужно добавить в `$HOME/.vimrc`:
|
||||
|
||||
1. Строку `call plug#begin('~/.vim/plugged')`
|
||||
2. Список строк, начинающихся с команды `Plug`, для загрузки плагинов
|
||||
3. Закончить список командой `call plug#end()`
|
||||
|
||||
Пример:
|
||||
|
||||
```vim
|
||||
" Обязательно использовать одиночные кавычки
|
||||
call plug#begin('~/.vim/plugged')
|
||||
|
||||
" Краткая запись для работы с github: https://github.com/junegunn/vim-easy-align
|
||||
Plug 'junegunn/vim-easy-align'
|
||||
|
||||
" Вариант с полным адресом
|
||||
Plug 'https://github.com/junegunn/vim-github-dashboard.git'
|
||||
|
||||
" Загрузка при выполнении команды
|
||||
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
|
||||
|
||||
" Загрузка для определённого типа файлов
|
||||
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
|
||||
|
||||
" Окончание списка плагинов
|
||||
call plug#end()
|
||||
```
|
||||
|
53
wiki/Vim/Навигация easymotion.md
Normal file
53
wiki/Vim/Навигация easymotion.md
Normal file
@ -0,0 +1,53 @@
|
||||
---
|
||||
title: "Vim: навигация по тексту с помощью easymotion"
|
||||
category: Vim
|
||||
tags: Vim, команды Vim
|
||||
summary:
|
||||
...
|
||||
|
||||
Плагин [easymotion](https://github.com/easymotion/vim-easymotion)
|
||||
предоставляет функции для удобного перемещения по тексту.
|
||||
Пример настройки:
|
||||
|
||||
```vim
|
||||
" Не включать команды по умолчанию
|
||||
let g:EasyMotion_do_mapping = 0
|
||||
|
||||
" Умный регистр
|
||||
let g:EasyMotion_smartcase = 1
|
||||
|
||||
" <Leader>ec{char} для перехода к {char}
|
||||
map <Leader>ec <Plug>(easymotion-bd-f)
|
||||
nmap <Leader>ec <Plug>(easymotion-overwin-f)
|
||||
|
||||
" s{char}{char} для перехода к {char}{char}
|
||||
nmap s <Plug>(easymotion-overwin-f2)
|
||||
|
||||
" Переход к строке
|
||||
map <Leader>eg <Plug>(easymotion-bd-jk)
|
||||
nmap <Leader>eg <Plug>(easymotion-overwin-line)
|
||||
|
||||
" Переход к слову
|
||||
map <Leader>ew <Plug>(easymotion-bd-w)
|
||||
nmap <Leader>ew <Plug>(easymotion-overwin-w)
|
||||
|
||||
" Навигация по строкам
|
||||
map <Leader>el <Plug>(easymotion-lineforward)
|
||||
map <Leader>ej <Plug>(easymotion-j)
|
||||
map <Leader>ek <Plug>(easymotion-k)
|
||||
map <Leader>eh <Plug>(easymotion-linebackward)
|
||||
|
||||
" Повторить последний переход
|
||||
map <Leader>er <Plug>(easymotion-repeat)
|
||||
|
||||
" Замена стандартного поиска по тексту
|
||||
map / <Plug>(easymotion-sn)
|
||||
omap / <Plug>(easymotion-tn)
|
||||
|
||||
" These `n` & `N` mappings are options. You do not have to map `n` & `N` to EasyMotion.
|
||||
" Without these mappings, `n` & `N` works fine. (These mappings just provide
|
||||
" different highlight method and have some other features )
|
||||
map n <Plug>(easymotion-next)
|
||||
map N <Plug>(easymotion-prev)
|
||||
```
|
||||
|
17
wiki/Vim/Навигация по буферам.md
Normal file
17
wiki/Vim/Навигация по буферам.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
title: "Vim: навигация по буферам"
|
||||
category: Vim
|
||||
tags: Vim, команды Vim
|
||||
summary:
|
||||
CSS: table-100.css
|
||||
...
|
||||
|
||||
Команда | Назначение
|
||||
------------------|-----------------
|
||||
`:bn` | следующий буфер
|
||||
`:bp` | предыдущий буфер
|
||||
`:ls` | список открытых буферов
|
||||
`:bd` | закрыть текущий буфер
|
||||
`:b имя_буфера` | переключиться на буфер
|
||||
`:bdа имя_буфера` | удалить буфер по имени
|
||||
|
35
wiki/Vim/Нумерация строк.md
Normal file
35
wiki/Vim/Нумерация строк.md
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
title: "Vim: нумерация строк"
|
||||
category: Vim
|
||||
tags: Vim, команды Vim
|
||||
summary:
|
||||
...
|
||||
|
||||
Для переключения режимов отображения слева столбца нумерации
|
||||
строк можно добавить в `$HOME/.vimrc` следующий код:
|
||||
|
||||
```vim
|
||||
" Нумерация строк включена
|
||||
set number
|
||||
" Нумерация строк абсолютная
|
||||
set nornu
|
||||
|
||||
function! ChangeNumbering()
|
||||
if &number
|
||||
if &rnu
|
||||
set nornu
|
||||
else
|
||||
set nonumber
|
||||
endif
|
||||
else
|
||||
set number
|
||||
set rnu
|
||||
endif
|
||||
endfunc
|
||||
|
||||
map <LocalLeader># <Esc>:call ChangeNumbering()<CR>
|
||||
```
|
||||
|
||||
В результате по команде `<LocalLeader>#` будет осуществляться
|
||||
циклическое переключение между абсолютной, относительной нумерацией
|
||||
строк и отключением нумерации.
|
39
wiki/Vim/Проверка орфографии.md
Normal file
39
wiki/Vim/Проверка орфографии.md
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "Vim: проверка орфографии"
|
||||
category: Vim
|
||||
tags: Vim, команды Vim, словарь, орфография
|
||||
summary:
|
||||
...
|
||||
|
||||
Код в `$HOME/.vimrc` для циклического переключения режимов проверки
|
||||
орфографии: два языка, английский, русский и без проверки:
|
||||
|
||||
```Vim
|
||||
" По умолчанию проверка орфографии для русского и английского.
|
||||
setlocal spell spelllang=ru,en
|
||||
set spellsuggest=9
|
||||
|
||||
function! ChangeSpellLang()
|
||||
if &spelllang == "ru,en"
|
||||
setlocal spell spelllang=en
|
||||
echo "spelllang: en"
|
||||
elseif &spelllang == "en"
|
||||
setlocal spell spelllang=ru
|
||||
echo "spelllang: ru"
|
||||
elseif &spelllang == "ru"
|
||||
setlocal nospell spelllang=
|
||||
echo "spelllang: off"
|
||||
else
|
||||
setlocal spell spelllang=ru,en
|
||||
echo "spelllang: ru,en"
|
||||
endif
|
||||
endfunc
|
||||
|
||||
" map spell on/off for English/Russian
|
||||
map <C-F7> <Esc>:call ChangeSpellLang()<CR>
|
||||
|
||||
" выбор альтернатив
|
||||
imap <F7> <Esc> z=<CR>i
|
||||
map <F7> z=<CR>
|
||||
```
|
||||
|
12
wiki/Vim/Ссылки.md
Normal file
12
wiki/Vim/Ссылки.md
Normal file
@ -0,0 +1,12 @@
|
||||
---
|
||||
title: "Vim: полезные ссылки"
|
||||
category: Vim
|
||||
tags: Vim
|
||||
summary:
|
||||
...
|
||||
|
||||
* [Vim](http://vim.org)
|
||||
* [Usevim](http://usevim.com/)
|
||||
* [How I boosted my Vim](http://nvie.com/posts/how-i-boosted-my-vim/)
|
||||
* [How to boost your Vim productivity](https://sheerun.net/2014/03/21/how-to-boost-your-vim-productivity/)
|
||||
* [Vim Awesome](https://vimawesome.com/)
|
22
wiki/Vim/Управление окнами.md
Normal file
22
wiki/Vim/Управление окнами.md
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
title: "Vim: управление окнами"
|
||||
category: Vim
|
||||
tags: Vim, команды Vim
|
||||
summary:
|
||||
CSS: table-100.css
|
||||
...
|
||||
|
||||
Команда | Назначение
|
||||
--------------------|-------------------------
|
||||
`:split filename` | открыть в новом окне (горизонтальное разделение)
|
||||
`:vsplit filename` | открыть в новом окне (вертикальное разделение)
|
||||
`<C-W>` `<C-W>` | перейти к следующему окну
|
||||
`<C-W>` `q` | закрыть текущее окно
|
||||
`<C-W>` `o` | развернуть окно полностью
|
||||
`<C-W>` `_` | развернуть окно по высоте
|
||||
`<C-W>` `|` | развернуть окно по ширине
|
||||
`<C-W>` `=` | выровнять размер окон
|
||||
`<C-W>` `+` | увеличить окно на 1 строку
|
||||
`<C-W>` `-` | уменьшить окно на 1 строку
|
||||
`<C-W>` `стрелки` | перемещение между окнами
|
||||
|
Reference in New Issue
Block a user