Конфигурация, мапинги

9 март 2023

Административни неща

Упражнение 002

Първото .vimrc

Първото .vimrc

Първото .vimrc

Първи стъпки

Ще започнем от defaults, после ще ги разгледаме внимателно:

1
source $VIMRUNTIME/defaults.vim

Отваряне на прозорци

:help opening-window

Отваряне на прозорци

:help opening-window

Отваряне на прозорци

:help opening-window

Отваряне на прозорци

:help opening-window

Навигация на прозорци

:help window-move-cursor

Ctrl-w клавиши

Навигация на прозорци

:help window-move-cursor

Ctrl-w клавиши

Навигация на прозорци

:help window-move-cursor

Ctrl-w клавиши

Навигация на прозорци

:help window-move-cursor

Ctrl-w клавиши

По-лесни мапинги

1 2 3 4
map <c-j> <c-w>j
map <c-k> <c-w>k
map <c-h> <c-w>h
map <c-l> <c-w>l

По-лесни мапинги

1 2 3 4
map <c-j> <c-w>j
map <c-k> <c-w>k
map <c-h> <c-w>h
map <c-l> <c-w>l

Аз лично използвам g като префикс за тези:

1 2 3 4
map gj <c-w>j
map gk <c-w>k
map gh <c-w>h
map gl <c-w>l

Още мапинги

1 2
map J 5j
map K 5k

(Не за всеки: J и K имат съществуваща функционалност -- it's all a tradeoff.)

"Поправяне" на j и k

1 2 3 4
nnoremap j gj
nnoremap k gk
xnoremap j gj
xnoremap k gk

Специални символи

Специални символи

Модификатори:

"Изчистване" на J, K

1 2 3 4
nnoremap <silent> J 5gj
nnoremap <silent> K 5gk
xnoremap <silent> J 5gj
xnoremap <silent> K 5gk

Бързо презареждане

1
nnoremap ! :source %<cr>

Дребни удобства

dd, cc, yy, съответно:

1
nnoremap vv ^vg_

Дребни удобства

D, C, съответно:

1
nnoremap Y y$

Insert/Cmdline-mode

1 2
inoremap <C-p> <Esc>pa
cnoremap <C-p> <C-r>"

Aside: Copy-pasting

Малко странно

Aside: Copy-pasting

Малко странно

Aside: Copy-pasting

Защо?

Aside: Copy-pasting

Защо?

Aside: Copy-pasting

Защо?

Aside: Copy-pasting

Защо?

Aside: Copy-pasting

Защо?

Aside: Copy-pasting

Защо?

Aside: Copy-pasting

Insert/Cmdline-mode

1 2
inoremap <C-p> <Esc>pa
cnoremap <C-p> <C-r>"

Aside: Vimgolf

Питонски речници: https://www.vimgolf.com/challenges/9v0062e3e96a000000000226

Базови настройки от defaults.vim

Твърде много, минете сами. Някои съвети обаче.

wildmenu

Моето предпочитание -- търся уникални hit-ове:

1 2
set wildmenu
set wildmode=list:longest,full

Neovim default:

1 2 3
set wildmenu
set wildmode=full
set wildoptions=pum,tagfile

mouse

Възможно е да влизате във visual mode с мишката. Може дори да е полезно понякога. Но е мега досадно като се ssh-нете. Това ще накара мишката да селектира неща в терминала, не във Vim:

1
set mouse=

Ваш избор 🤷

Защото е мега досадно

1 2 3
set nobackup
set nowritebackup
set noswapfile

Или, вижте :help 'backupdir' и :help 'directory'

set/unset/query

Булеви стойности

1 2 3 4 5
set number   " set-ва number
set nonumber " unset-ва number
set number?  " печата текущия state
set number&  " reset-ва до default
set number!  " toggle-ва

set/unset/query

Списъци

1 2 3 4
set nrformats               " същото като :set nrformats?
set nrformats=bin,octal,hex " set-ва на конкретен списък от стойности
set nrformats-=octal        " маха стойности
set nrformats+=octal,alpha  " добавя стойности

:help :set

Neovim: mostly the same

Neovim: mostly the same

Въпроси