Skip to content

Instantly share code, notes, and snippets.

@s3rgeym
Last active March 5, 2025 17:11
Show Gist options
  • Save s3rgeym/9b2810072c6183d84ed1d236b5fc5f61 to your computer and use it in GitHub Desktop.
Save s3rgeym/9b2810072c6183d84ed1d236b5fc5f61 to your computer and use it in GitHub Desktop.
Превращаем Vim в VS Code
" Включаем современные возможности Vim
set nocompatible
if !exists('$MYVIMRC')
let $MYVIMRC = expand('<sfile>:p')
endif
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
call plug#begin('~/.vim/plugged')
" Добавляем плагины сюда
" Настройки по умолчанию для Vim
Plug 'tpope/vim-sensible'
" Файловый менеджер
Plug 'preservim/nerdtree'
" Нечеткий поиск
Plug 'junegunn/fzf.vim'
" Плагин для многокурсорного редактирования в Vim:
" 1. Нажмите Ctrl-N на слове, чтобы создать курсор. Повторное нажатие Ctrl-N выделяет следующее совпадение.
" 2. Используйте Ctrl-Up/Down для добавления курсоров на строки выше/ниже.
" 3. Используйте Shift-Left/Right для выделения отдельных символов.
" 4. Перейдите в режим редактирования (например, нажмите 'i' для вставки), чтобы одновременно изменять текст на всех курсорах.
Plug 'mg979/vim-visual-multi', {'branch': 'master'}
" Быстрое перемещение: `s` (вперед) или `S` (назад) + 2 символа. Используйте `;` и `,` для навигации по результатам.
Plug 'justinmk/vim-sneak'
" Автоматическое закрытие скобок и кавычек
Plug 'jiangmiao/auto-pairs'
" Оборачивает текст по сочетанию клавиш кавычками, тегами и тп
Plug 'tpope/vim-surround'
" Комментирование строк кода
" gc — комментировать блок
" gcc — комментировать строку
Plug 'tpope/vim-commentary'
" Показываем изменения в Git
Plug 'airblade/vim-gitgutter'
" Содержит команды для работы с Git
Plug 'tpope/vim-fugitive'
" Задание настроек форматирования через .editorconfig
Plug 'editorconfig/editorconfig-vim'
" Линтинг и форматирование
Plug 'dense-analysis/ale'
" Автодополнение и языковая поддержка
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" Дебаггер
Plug 'puremourning/vimspector'
" Строка статуса
Plug 'vim-airline/vim-airline'
" Тема для vim-airline
Plug 'vim-airline/vim-airline-themes'
" Иконки для файлов и папок
Plug 'ryanoasis/vim-devicons'
" Выделение отступов цветом
Plug 'nathanaelkane/vim-indent-guides'
" Разноцветная подсветка скобок
Plug 'luochen1990/rainbow'
" Темы
" joshdick/onedark.vim
" sickill/vim-monokai
" rakr/vim-one
Plug 'tomasiser/vim-code-dark'
call plug#end()
" Автоматически ставим отсутствующие плагины
" :PlugUpgrade — для обновления самого plug.vim
" :PlugClean — для удаления неиспользуемых плагинов
autocmd VimEnter *
\ if len(filter(values(g:plugs), '!isdirectory(v:val.dir)'))
\| PlugInstall --sync | q
\| endif
" Основные настройки
" Все настройки можно посмотреть с помощью :set
" Увеличить историю команд до 1000
set history=1000
" Разрешить переключение буферов без сохранения
set hidden
" Отключить звуковые сигналы ошибок
set noerrorbells
" Отключить визуальные сигналы ошибок
set novisualbell
" Не ограничивать длину строки
set textwidth=0
" Отображение интерфейса
" Показывать номера строк
set number
" Отображение специальных символов (например, табы и пробелы)
set list listchars=tab:→\ ,trail:·,nbsp:␣,extends:❯,precedes:❮
" Подсвечивать текущую строку
set cursorline
" Подсвечивать заданные колонки (например, для ограничения длины строки)
set cc=81
" Показывать частичные команды в строке состояния
set showcmd
" Включить поддержку всплывающих подсказок в терминальных версиях Vim
set balloonevalterm
" Отступы и форматирование
" Установить количество пробелов для отображения символа табуляции
set tabstop=4
" Установить ширину отступа в пробелах при автоформатировании
set shiftwidth=2
" Установить количество пробелов, вставляемых при нажатии Tab
set softtabstop=2
" Преобразовывать символы табуляции в пробелы
set expandtab
" Сохранять отступ предыдущей строки
set autoindent
" Автоматически добавлять отступ для вложенных блоков кода
set smartindent
" Использовать стиль отступов для C-подобных языков
set cindent
" Включить поддержку отступов и плагинов для типов файлов
filetype plugin indent on
" Поиск
" Игнорировать регистр символов при поиске
set ignorecase
" Учитывать регистр, если запрос содержит заглавные буквы
set smartcase
" Подсвечивать все совпадения найденного текста
set hlsearch
" Показывать совпадения по мере ввода поискового запроса
set incsearch
" Работа с файлами
" Установить кодировку текста редактора в UTF-8
set encoding=utf-8
" Установить кодировку сохраняемых файлов в UTF-8
set fileencoding=utf-8
" Определить список кодировок для автоматического определения файла
set fileencodings=utf-8,cp1251,koi8-r,cp866
" Автоматически перечитывать файлы, если они изменены извне
set autoread
" Отключает создание резервных копий, swap-файлов и временных файлов
set nobackup nowritebackup noswapfile noundofile
" Установить задержку в миллисекундах для записи swap-файлов и события CursorHold
set updatetime=300
" Обновлять содержимое буфера при переключении окон или изменении фокуса
autocmd FocusGained,BufEnter * checktime
" Командная строка
" Включить автодополнение в командной строке
set wildmenu
" Настроить поведение автодополнения (наиболее длинный, затем полный путь)
set wildmode=longest,full
" Игнорировать указанные типы файлов при автодополнении
set wildignore=*.pyc,*.o,*.obj,*~
" Управление окнами
" Открывать новые окна ниже текущего
set splitbelow
" Открывать новые окна справа от текущего
set splitright
" Прокрутка и перенос строк
" Включить перенос строк
set wrap
" Переносить строки по словам
set linebreak
" Установить символ, отображаемый при переносе строки
set showbreak=↪\
" Оставлять n строк вокруг курсора при вертикальной прокрутке
set scrolloff=2
" Настройки, влияющие на производительность
" Указать, что соединение с терминалом быстрое (ускоряет отрисовку)
set ttyfast
" Откладывать перерисовку экрана для ускорения работы при выполнении макросов
set lazyredraw
" Мышь и клавиатура
" Включить поддержку мыши
set mouse=a
" Установить протокол мыши для более точной обработки событий мыши
"set ttymouse=sgr
" Изменять курсор в зависимости от режима
let &t_SI = "\e[6 q" " INSERT mode
let &t_SR = "\e[4 q" " REPLACE mode
let &t_EI = "\e[2 q" " NORMAL mode
" Использовать системный буфер обмена
set clipboard=unnamedplus
" Установить задержку в миллисекундах для сочетаний клавиш
set timeoutlen=750
" Включить выделение текста с помощью Shift и стрелок
set keymodel=startsel,stopsel
" Разрешить переход курсора между строками с помощью h, l, <, >, [, ]
set whichwrap+=h,l,<,>,[,]
" Установить протоколы обработки клавиш для различных терминалов
"set keyprotocol=kitty:kitty,foot:kitty,wezterm:kitty,xterm:mok2
" Установить клавишу Leader (пробел)
let g:mapleader = "\<Space>"
" В Vim сочетания клавиш работают иначе: он обрабатывает символы, а не коды клавиш, что вызывает проблемы при переключении языков, например, с русского на английский. Чтобы избежать переключения раскладки системы, используйте встроенную поддержку русской раскладки в Vim. Переключайтесь между раскладками с помощью <C-^> (Ctrl + 6). Этот метод работает даже без русской локали.
set keymap=russian-jcukenwin
" Установить английскую раскладку по умолчанию
set iminsert=0
" Установить английский язык поиска по умолчанию
set imsearch=0
" Переключение в режим для вставки текста без автоматического форматирования
set pastetoggle=<F2>
" Различные сочетания клавиш
" Чтобы проверить не задано ли пльзовательское сочетание можно использовать
" `:map x` или `:verbose map x`, и `:help ctrl-n` для встроенных.
" Чтобы лишний раз Shift не нажимать
" Может конфликтовать с vim-sneak
"nnoremap ; :
" Копировать всю строку
"nnoremap Y y$
" Смена раскладки
inoremap <C-L> <C-^>
" Выделить только что вставленный текст
nnoremap <leader>V V`]
" Убрать подсветку результатов поиска
" silent скрывает вывод команды
nnoremap <silent> <leader>h :nohl<cr>
" Переход в нормальный режим
inoremap <C-c> <Esc>
vnoremap <C-c> <Esc>
" Выделение всего текста
nnoremap <C-a> ggVG
inoremap <C-a> <Esc>ggVG
" Добавление и удаление отступов
nnoremap > >>
nnoremap < <<
vnoremap < <gv
vnoremap > >gv
" Выбор окна с зажатым Ctrl
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" Изменение размеров окна
" Изменение вертикального размера не особо нужно
nnoremap + <C-w>>
nnoremap _ <C-w><
"nnoremap <M-Down> <C-w>+
"nnoremap <M-Up> <C-w>-
" Разбиение окон
nnoremap <leader><CR> :vsplit<CR>
" Хотя gt, gT для табов легко запомнить
nnoremap <M-Left> :tabprevious<CR>
nnoremap <M-Right> :tabnext<CR>
nnoremap <M-Up> :bp<CR>
nnoremap <M-Down> :bn<CR>
" Выбрать буфер из списка
nnoremap <leader>l :ls<CR>:b<Space>
" Закрыть буфер
" https://github.com/preservim/nerdtree/issues/400
noremap <C-x> :bp<cr>:bd #<cr>
inoremap <C-x> <Esc>:bp<cr>:bd #<cr>
" Список вкладок
nnoremap <leader>tl :tabs<CR>
" Открыть новую вкладку
nnoremap <leader>tn :tabnew<CR>
" Закрыть текущую вкладку
nnoremap <leader>tc :tabclose<CR>
" Закрыть все вкладки, кроме текущей
nnoremap <leader>to :tabonly<CR>
" Переместить текущую вкладку
nnoremap <leader>tm :tabmove<CR>
" Открыть файл в новой вкладке
nnoremap <leader>te :tabedit |
" Выбор вкладки
nnoremap <leader>1 1gt
nnoremap <leader>2 2gt
nnoremap <leader>3 3gt
nnoremap <leader>4 4gt
nnoremap <leader>5 5gt
nnoremap <leader>6 6gt
nnoremap <leader>7 7gt
nnoremap <leader>8 8gt
nnoremap <leader>9 9gt
nnoremap <leader>0 :tablast<CR>
" Скрыть/раскрыть блок кода
nnoremap <leader>z za
" Сохранение и закрытие
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>Q :qa<CR>
" Сохранить файлов с sudo
cmap w!! w !sudo tee > /dev/null %
" Редактирование конфига в новой вкладке
nnoremap <leader>ev :e $MYVIMRC<CR>
" Применить конфиг
nnoremap <leader>sv :so $MYVIMRC<CR>
" Показать все текущие сопоставления клавиш
"nnoremap <Leader>m :<C-u>map<CR>
" Работа с терминалом
" Открыть терминал (Ctrl-t уже используется для тегов, но они бесполезны с LSP)
nnoremap <C-t> :<C-u>term<CR>
" Размер терминала
set termwinsize=10x0
" Переключение в режим прокрутки терминала
" Для прокрутки используйте j, k, gg, G, Ctrl+f, Ctrl+b
" Для выхода из этого режима надо нажать i или a
tnoremap <C-x> <C-\><C-n>
" Настройки плагинов
" NERDTree
" Показать или скрыть файловый проводник
nnoremap <leader>t :NERDTreeToggle<CR>
" Показывать скрытые файлы
let NERDTreeShowHidden=1
augroup NERDTreeConfig
au!
autocmd StdinReadPre * let s:std_in=1
" Автозапуск NERDTree, если Vim запущен без указания файла
autocmd VimEnter * if argc() == 0 && !exists('s:std_in') | NERDTree | endif
" Автозапуск NERDTree при открытии файла или если Vim запущен с stdin
autocmd VimEnter * NERDTree | if argc() > 0 || exists("s:std_in") | wincmd p | endif
" Автозапуск NERDTree при открытии директории
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') | execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd '.argv()[0] | endif
" Выходим из Vim, если в единственной вкладке осталось одно окно с NERDTree
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | call feedkeys(":quit\<CR>:\<BS>") | endif
" Выходим из Vim, если осталось только одно окно с NERDTree (независимо от количества вкладок)
"autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | call feedkeys(":quit\<CR>:\<BS>") | endif
" Автоматически обновляем список файлов в проводнике
autocmd BufEnter NERD_tree_* | execute 'normal R'
augroup END
" fzf
" Размеры всплывающего окна для поиска
let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.6 } }
" Если вместо Ctrl-C нажать Esc, то чтобы вернуть фокус нужно нажать i
" Поиск по имени файла в текущем проекте
nnoremap <leader>f :Files<CR>
" Рекурсивный поиск по содержимому
nnoremap <leader>g :Rg<CR>
" Поиск в открытых буферах
nnoremap <leader>b :Buffers<CR>
" Поиск строк в текущем буфере
nnoremap <leader>/ :BLines<space><CR>
" Включаем label-mode как альтернативу easymotion
let g:sneak#label = 1
" Настройки для EditorConfig
" Если установлен editorconfig, то используем его
if executable('editorconfig')
let g:EditorConfig_core_mode = 'external_command'
let g:EditorConfig_exec_path = exepath('editorconfig')
endif
" yay -S ruff python-{isort,rope}
" ALE
" Включаем автодополнение
let g:ale_completion_enabled = 1
" Постоянно отображать столбец для значков (например, ошибок)
set signcolumn=yes
" Установка omnifunc для использования ALE
set omnifunc=ale#completion#OmniFunc
" Задаем линтеры для различных языков
let g:ale_linters = {
\ 'python': ['ruff'],
\ 'javascript': ['eslint', 'tsserver'],
\ 'json': ['jsonlint'],
\ 'html': ['htmlhint'],
\ 'css': ['stylelint'],
\ 'go': ['gopls'],
\ 'bash': ['shellcheck'],
\}
" Устанавливаем форматтеры для различных языков
let g:ale_fixers = {
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
\ 'python': ['ruff_format', 'isort'],
\ 'javascript': ['eslint', 'prettier'],
\ 'json': ['prettier'],
\ 'html': ['prettier'],
\ 'css': ['stylelint', 'prettier'],
\ 'go': ['gofmt'],
\ 'bash': ['shfmt'],
\}
" Автоматическое исправление при сохранении
let g:ale_fix_on_save = 1
" Запускать только указанные в настройках линтеры
"let g:ale_linters_explicit = 1
" Не показывать ошибки о пробелах в конце строки
let g:ale_warn_about_trailing_whitespace = 0
" Показывать текст ошибки только для текущей строки
let g:ale_virtualtext_cursor = 'current'
" Запускать линтинг только после сохранения файла
"let g:ale_lint_on_text_changed = 0
"let g:ale_lint_on_enter = 0
"let g:ale_lint_on_save = 1
" Всегда использовать signcolumn
let g:ale_sign_column_always = 1
" Поддержка ale в airline
let g:airline#extensions#ale#enabled = 1
" Переходы между ошибками
nmap <silent> <leader>k <Plug>(ale_previous_wrap)
nmap <silent> <leader>j <Plug>(ale_next_wrap)
" Настройки coc.nvim
" :CocConfig — некоторые настройки можно задать только так
" :CocInstall <extension> — поставить расширение
" :CocList extensions — список установленных расширений
" :CocInstall coc-marketplace — добавить маркетплейс
" :CocList marketplace — поиск расширений в маркетплейсе
" Список расширений, которые будут установлены автоматически:
let g:coc_global_extensions = [
\ 'coc-css',
\ 'coc-git',
\ 'coc-go',
\ 'coc-html',
\ 'coc-json',
\ 'coc-marketplace',
\ 'coc-pyright',
\ 'coc-sh',
\ 'coc-tsserver',
\ 'coc-vetur',
\ 'coc-vimlsp',
\ 'coc-yaml',
\ ]
" Пример конфига:
" https://github.com/neoclide/coc.nvim#example-vim-configuration
" Все это конфликтует с SuperTab, а потому его лучше не использовать
" Выбор вариантов с Tab и Shift+Tab
inoremap <silent><expr> <TAB>
\ coc#pum#visible() ? coc#pum#next(1) :
\ CheckBackspace() ? "\<Tab>" :
\ coc#refresh()
inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
" Подтверждение выбора в автодополнении
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
function! CheckBackspace() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
" Вызов меню автоподстановки сочетанием клавиш Ctrl-2
inoremap <silent><expr> <C-@> coc#refresh()
" Навигация по списку автодополнения
"inoremap <silent><expr> <C-n> coc#pum#next(1)
"inoremap <silent><expr> <C-p> coc#pum#prev(1)
" Используйте `[g` и `]g` для навигации по диагностическим сообщениям
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)
" Переход к определению (gd), определению типа (gy), реализации (gi), ссылкам (gr)
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" Переход к определению, определению типа, реализации, ссылкам в новом окне
nmap <silent> <leader>gd :call CocAction('jumpDefinition', 'split')<CR>
nmap <silent> <leader>gy :call CocAction('jumpTypeDefinition', 'split')<CR>
nmap <silent> <leader>gi :call CocAction('jumpImplementation', 'split')<CR>
nmap <silent> <leader>gr :call CocAction('jumpReferences', 'split')<CR>
" Показать подсказку
nnoremap <silent> K :call ShowDocumentation()<CR>
function! ShowDocumentation()
if CocAction('hasProvider', 'hover')
call CocActionAsync('doHover')
else
call feedkeys('K', 'in')
endif
endfunction
" Подсветка символа и ссылок на него при задержке курсора
autocmd CursorHold * silent call CocActionAsync('highlight')
" Переименование символа
nmap <silent> <leader>rn <Plug>(coc-rename)
" Форматирование выделенного кода
xmap <leader>cf <Plug>(coc-format-selected)
nmap <leader>cf <Plug>(coc-format-selected)
augroup mygroup
autocmd!
" Настройка formatexpr для указанных типов файлов
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
" Обновление подсказки подписи при переходе на заполнитель
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp')
augroup end
" Применение действий с кодом к выделенному блоку кода
" Пример: `<leader>aap` для текущего абзаца
xmap <leader>a <Plug>(coc-codeaction-selected)
nmap <leader>a <Plug>(coc-codeaction-selected)
" Переназначение клавиш для применения действий с кодом в позиции курсора
nmap <leader>ac <Plug>(coc-codeaction-cursor)
" Переназначение клавиш для применения действий с кодом ко всему буферу
nmap <leader>as <Plug>(coc-codeaction-source)
" Вызов quick fix
nmap <leader>qf <Plug>(coc-fix-current)
" Сочетания клавиш для применения рефакторинга кода
nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
" Настройки выделения функций и классов (их можно закомментировать)
" Выделение внутренней части функции, без фигурных скобок, в режиме выделения
xmap if <Plug>(coc-funcobj-i)
" Выделение внутренней части функции, без фигурных скобок, в режиме оператора
omap if <Plug>(coc-funcobj-i)
" Выделение всей функции, включая фигурные скобки, в режиме выделения
xmap af <Plug>(coc-funcobj-a)
" Выделение всей функции, включая фигурные скобки, в режиме оператора
omap af <Plug>(coc-funcobj-a)
" Выделение внутренней части класса, без фигурных скобок, в режиме выделения
xmap ic <Plug>(coc-classobj-i)
" Выделение внутренней части класса, без фигурных скобок, в режиме оператора
omap ic <Plug>(coc-classobj-i)
" Выделение всего класса, включая фигурные скобки, в режиме выделения
xmap ac <Plug>(coc-classobj-a)
" Выделение всего класса, включая фигурные скобки, в режиме оператора
omap ac <Plug>(coc-classobj-a)
" Прокрутка во всплывающих окнах с Ctrl-F и Ctrl-B (в обратном порядке)
if has('nvim-0.4.0') || has('patch-8.2.0750')
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
endif
" Быстрое выделение блоков кода
nmap <silent> <C-s> <Plug>(coc-range-select)
xmap <silent> <C-s> <Plug>(coc-range-select)
" Добавление команд
" Добавляем команду :Format для форматирования текущего буфера
command! -nargs=0 Format :call CocActionAsync('format')
" Добавляем команду :Fold для свертывания текущего буфера
command! -nargs=? Fold :call CocAction('fold', <f-args>)
" Добавляем команду :OR для организации импортов текущего буфера
command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport')
" Тут вызовы кучи функций с префиксом c, каким-то часто используемым его можно
" убрать
" Вызов Code Lens Action
nmap <silent> <leader>cl <Plug>(coc-codelens-action)
" Показать все диагностические сообщения
nnoremap <silent><nowait> <leader>cd :<C-u>CocList diagnostics<CR>
" Управление расширениями (плагинами)
nnoremap <silent><nowait> <leader>ce :<C-u>CocList extensions<CR>
" Открытие всплывающего окна с выбором команд
nnoremap <silent><nowait> <leader>cc :<C-u>CocList commands<CR>
" Найти символы в текущем документе
nnoremap <silent><nowait> <leader>co :<C-u>CocList outline<CR>
" Поиск символов в рабочей области
nnoremap <silent><nowait> <leader>cs :<C-u>CocList -I symbols<CR>
" Выполнить действие по умолчанию для следующего элемента
nnoremap <silent><nowait> <leader>cj :<C-u>CocNext<CR>
" Выполнить действие по умолчанию для предыдущего элемента
nnoremap <silent><nowait> <leader>ck :<C-u>CocPrev<CR>
" Возобновить последний список coc
nnoremap <silent><nowait> <leader>cr :<C-u>CocListResume<CR>
" Настройки для vimspector
" https://github.com/puremourning/vimspector
" Включаем сочетания клавиш для vimspector
let g:vimspector_enable_mappings = 'HUMAN'
" Включаем иконки для файлов и папок
let g:webdevicons_enable = 1
let g:webdevicons_enable_nerdtree = 1
let g:webdevicons_enable_airline_tabline = 1
let g:webdevicons_enable_airline_statusline = 1
" Включаем выделение отступов цветом
let g:indent_guides_enable_on_vim_startup = 1
" Включаем разноцветную подсветку скобок
let g:rainbow_active = 1
" Отключаем свертывание в markdown
let g:vim_markdown_folding_disabled = 1
" Общие настройки для airline/lightline
" Не показывать текущий режим в строке статуса
set noshowmode
" Всегда показывать строку состояния
set laststatus=2
" Всегда показывать строку с вкладками
set showtabline=2
" Настройки для vim-airline
" Включаем отображение вкладок
let g:airline#extensions#tabline#enabled = 1
" Показывать номера буферов
let g:airline#extensions#tabline#buffer_nr_show = 1
" Включаем поддержку Powerline шрифтов
let g:airline_powerline_fonts = 1
" Включить отображение информации о сочетании клавиш
let g:airline#extensions#keymap#enabled = 1
" Устанавливаем тему для vim-airline
let g:airline_theme = 'codedark'
" Тема и оформление
" Цветовая палитра
if exists('+termguicolors')
" Используем 24-битные цвета
set termguicolors
else
" Используем 256 цветов
set t_Co=256
endif
" Включить подсветку синтаксиса
syntax enable
" Установить темный фон
set background=dark
" Установливаем тему, подавляя вывод ошибок, если та отсутствует
silent! colorscheme codedark
" Убираем артефакты терминала
" https://github.com/kovidgoyal/kitty/issues/1536
set t_RV=
" Перезапускаем kitty при изменении конфига
autocmd BufWritePost ~/.config/kitty/kitty.conf silent !pkill -SIGUSR1 kitty
@s3rgeym
Copy link
Author

s3rgeym commented Nov 20, 2024

Нужно установить переменную export MYVIMRC=~/.vim/.vimrc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment