Runtimepath
23 март 2023
Административни (kind of) неща
- Упражнение 16 с completion: https://vim-fmi.bg/tasks/17
:set t_Co=256или:set termguicolors
Преговор
- marks
Преговор
- marks
- малко Vimscript: разместване на прозорци
Преговор
- marks
- малко Vimscript: разместване на прозорци
- Netrw
Преговор
- marks
- малко Vimscript: разместване на прозорци
- Netrw
- Буфери
Преговор
- marks
- малко Vimscript: разместване на прозорци
- Netrw
- Буфери
- args и опериране по много файлове наведнъж
Преговор
- marks
- малко Vimscript: разместване на прозорци
- Netrw
- Буфери
- args и опериране по много файлове наведнъж
- Range-ове на команди
Преговор
- marks
- малко Vimscript: разместване на прозорци
- Netrw
- Буфери
- args и опериране по много файлове наведнъж
- Range-ове на команди
- Начални стъпки в search-and-replace: substitute, vimgrep
Да си направим :Grep
1
command! Grep call Grep(<q-args>)
Какво научихме?
:help command-nargs:help command-rangescriptversion 4:help getpos()и кога изобщо не ни трябва:help gv-- ужасно удобноdefergrepprg,grepformat(:help errorformat)rg --vimgrep, което можете да си инсталирате с тези инструкции
И още доста други, за по-нататък
Време е за ~/.vim
- За да извикваме отделни команди,
:!command- Примерно,
:!mkdir -p ~/.vim/colors :silent !mkdir -p ~/.vim/colorsняма да изчака да натиснете "enter", но няма и да redraw-не екрана (:help :!за информация. Може да си пакетирате silent + redraw в обща команда?)
- Примерно,
Време е за ~/.vim
- За да извикваме отделни команди,
:!command- Примерно,
:!mkdir -p ~/.vim/colors :silent !mkdir -p ~/.vim/colorsняма да изчака да натиснете "enter", но няма и да redraw-не екрана (:help :!за информация. Може да си пакетирате silent + redraw в обща команда?)
- Примерно,
- За да "паузираме" Vim и да излезем в шела,
:shell- Под gvim на windows, това ще отвори
cmd - Ако искате powershell,
:set shell=powershell(:help powershell)
- Под gvim на windows, това ще отвори
Време е за ~/.vim
- За да извикваме отделни команди,
:!command- Примерно,
:!mkdir -p ~/.vim/colors :silent !mkdir -p ~/.vim/colorsняма да изчака да натиснете "enter", но няма и да redraw-не екрана (:help :!за информация. Може да си пакетирате silent + redraw в обща команда?)
- Примерно,
- За да "паузираме" Vim и да излезем в шела,
:shell- Под gvim на windows, това ще отвори
cmd - Ако искате powershell,
:set shell=powershell(:help powershell)
- Под gvim на windows, това ще отвори
- Има и
:terminal, което ще отвори шел в нов прозорец (и на което така и не свикнах) - За terminal mode -- по-нататък (когато го разуча), но си има
:help terminal
Време е за ~/.vim
- За да извикваме отделни команди,
:!command- Примерно,
:!mkdir -p ~/.vim/colors :silent !mkdir -p ~/.vim/colorsняма да изчака да натиснете "enter", но няма и да redraw-не екрана (:help :!за информация. Може да си пакетирате silent + redraw в обща команда?)
- Примерно,
- За да "паузираме" Vim и да излезем в шела,
:shell- Под gvim на windows, това ще отвори
cmd - Ако искате powershell,
:set shell=powershell(:help powershell)
- Под gvim на windows, това ще отвори
- Има и
:terminal, което ще отвори шел в нов прозорец (и на което така и не свикнах) - За terminal mode -- по-нататък (когато го разуча), но си има
:help terminal - Под Neovim
:terminalима различно поведение, но не съм сигурен за всички разлики- Пример:
:terminal ++curwinне работи под Neovim (но има плъгини) - Пример:
:edit term://htopработи под Neovim, не под Vim
- Пример:
Време е за ~/.vim: Цветове
:set t_Co=256/:set termguicolors
Време е за ~/.vim: Цветове
:set t_Co=256/:set termguicolors~/.vim/colors/andrew-light.vimcolorscheme andrew-light
Време е за ~/.vim: Цветове
:set t_Co=256/:set termguicolors~/.vim/colors/andrew-light.vimcolorscheme andrew-light:set fillchars=stl:─,stlnc:─,vert:│- Aside:
:digraphs
Време е за ~/.vim: Цветове
:set t_Co=256/:set termguicolors~/.vim/colors/andrew-light.vimcolorscheme andrew-light:set fillchars=stl:─,stlnc:─,vert:│- Aside:
:digraphs - Можем и спокойно да преместим
~/.vimrcкъм~/.vim/vimrc - (Впрочем:
~->$HOME:/home/andrew,C:\Users\Andrew)
~/.vim: Още директории
pluginautoload
Идея: Extract
1
2
3
4
5
6
7
8
9
command! -range -nargs=1 -complete=file Extract call Extract(<line1>, <line2>, <q-args>)
function Extract(start_line, end_line, filename)
echomsg string([a:start_line, a:end_line, a:filename])
" Записваме съдържанието в дадения файл
" Изтриваме го от буфера
" Отваряме го в split
endfunction
Aside: modelines
:help modeline
- Първите 5 реда по default, може да се смени с
:help 'modelines'
Aside: modelines
:help modeline
- Първите 5 реда по default, може да се смени с
:help 'modelines' :set modelines=0напълно го спира
Aside: modelines
:help modeline
- Първите 5 реда по default, може да се смени с
:help 'modelines' :set modelines=0напълно го спираvim: foldmethod=indent relativenumber
Aside: folding
:help folding
:set foldmethod=indent-- прост, често върши добра работа
Aside: folding
:help folding
:set foldmethod=indent-- прост, често върши добра работа:set foldmethod=syntax-- стига да е дефиниран за filetype-а
Aside: folding
:help folding
:set foldmethod=indent-- прост, често върши добра работа:set foldmethod=syntax-- стига да е дефиниран за filetype-а:set foldmethod=marker--{{{започва fold,}}}го затваря. Или{{{1, без нужда от затварящ.zf{motion}добавя маркери,zdтрие заобикалящите
Aside: folding
:help folding
:set foldmethod=indent-- прост, често върши добра работа:set foldmethod=syntax-- стига да е дефиниран за filetype-а:set foldmethod=marker--{{{започва fold,}}}го затваря. Или{{{1, без нужда от затварящ.zf{motion}добавя маркери,zdтрие заобикалящите:set foldmethod=manual-- На ръка, помни се къде е pin-натzf{motion}създава fold,zdго трие
Aside: folding
zo,zc-- отваря, затваряzО,zC-- отваря, затваря рекурсивно
Aside: folding
zo,zc-- отваря, затваряzО,zC-- отваря, затваря рекурсивноza,zA-- toggle
Aside: folding
zo,zc-- отваря, затваряzО,zC-- отваря, затваря рекурсивноza,zA-- togglezR-- просто отваря всичко
Aside: folding
zo,zc-- отваря, затваряzО,zC-- отваря, затваря рекурсивноza,zA-- togglezR-- просто отваря всичко- И още много други, но няма да задълбаваме
Autoload
Функция с име foo#bar#baz() може да се извика и Vim ще потърси файл autoload/foo/bar.vim някъде в runtimepath и ако го намери, ще го source-не.
Autoload
Функция с име foo#bar#baz() може да се извика и Vim ще потърси файл autoload/foo/bar.vim някъде в runtimepath и ако го намери, ще го source-не.
Там обикновено искате да ви е повечето код.
Runtimepath
:set runtimepath- В код, може да ползваме
&runtimepath, често&rtp
Най-простите плъгини
No magic:
1
2
3
4
5
6
7
for dir in split(glob('~/.vim/bundle/*'), "\n")
exe 'set runtimepath+=' .. dir
endfor
for dir in split(glob('~/.vim/miniplugins/*'), "\n")
exe 'set runtimepath+=' .. dir
endfor
Pathogen
Almost no magic:
1
2
call pathogen#infect()
call pathogen#helptags() " опционално
Отивате във https://github.com/tpope/vim-pathogen и директно вземате autoload/pathogen.vim.
Pathogen
Almost no magic:
1
2
call pathogen#infect()
call pathogen#helptags() " опционално
Отивате във https://github.com/tpope/vim-pathogen и директно вземате autoload/pathogen.vim.
Другия път повече за плъгини и git