Created
December 3, 2021 08:26
-
-
Save s3rgeym/b574c41b8ee35fe0faf0743ea1e1d3e2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" Эти настройки используются при отстутствии пользовательского конфига | |
source $VIMRUNTIME/defaults.vim | |
call plug#begin('~/.vim/plugged') | |
" Убедитесь, что задана переменная окружения $MYVIMRC | |
autocmd VimEnter * if len(filter(values(g:plugs), '!isdirectory(v:val.dir)')) | |
\| PlugInstall --sync | source $MYVIMRC | |
\| endif | |
" Настройки, которые должны быть по-умолчанию в каждом конфиге | |
" https://github.com/tpope/vim-sensible | |
Plug 'tpope/vim-sensible' | |
" Позволяет оборачивать строку в кавычки, теги и т.д. | |
" https://githib.com/tpope/vim-surround | |
Plug 'tpope/vim-surround' | |
" https://github.com/airblade/vim-gitgutter | |
Plug 'airblade/vim-gitgutter' | |
" Менеджер файлов | |
" https://github.com/scrooloose/nerdtree | |
Plug 'scrooloose/nerdtree' | |
nnoremap <C-n> :NERDTreeToggle<CR> | |
" Иконки для NerdTree | |
" https://github.com/ryanoasis/vim-devicons | |
Plug 'ryanoasis/vim-devicons' | |
" Работа с комментариями | |
" https://github.com/preservim/nerdcommenter | |
Plug 'preservim/nerdcommenter' | |
" Create default mappings | |
let g:NERDCreateDefaultMappings = 1 | |
" Add spaces after comment delimiters by default | |
let g:NERDSpaceDelims = 1 | |
" Use compact syntax for prettified multi-line comments | |
let g:NERDCompactSexyComs = 1 | |
" Align line-wise comment delimiters flush left instead of following code indentation | |
let g:NERDDefaultAlign = 'left' | |
" Set a language to use its alternate delimiters by default | |
let g:NERDAltDelims_java = 1 | |
" Add your own custom formats or override the defaults | |
let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } } | |
" Allow commenting and inverting empty lines (useful when commenting a region) | |
let g:NERDCommentEmptyLines = 1 | |
" Enable trimming of trailing whitespace when uncommenting | |
let g:NERDTrimTrailingWhitespace = 1 | |
" Enable NERDCommenterToggle to check all selected lines is commented or not | |
let g:NERDToggleCheckAllLines = 1 | |
" Поиск файлов | |
" https://github.com/junegunn/fzf.vim | |
Plug 'junegunn/fzf.vim' | |
nnoremap <silent> <C-p> :Files<CR> | |
" Автоподстановка по нажатию Tab | |
" https://github.com/ervandew/supertab | |
Plug 'ervandew/supertab' | |
" Разноцветные скобки разного уровня вложенности | |
" https://github.com/frazrepo/vim-rainbow | |
Plug 'frazrepo/vim-rainbow' | |
let g:rainbow_active = 1 | |
" Автоматическое закрытие скобок | |
" https://github.com/jiangmiao/auto-pairs | |
Plug 'jiangmiao/auto-pairs' | |
" Вешает на ch backspacing | |
let g:AutoPairsMapCh = 0 | |
" Единственная нормальная цветовая схема | |
" https://github.com/joshdick/onedark.vim | |
Plug 'joshdick/onedark.vim' | |
" Более информативная строка состояния | |
" https://github.com/itchyny/lightline.vim | |
Plug 'itchyny/lightline.vim' | |
let g:lightline = { | |
\ 'colorscheme': 'onedark', | |
\ 'separator': { 'left': "\ue0b0", 'right': "\ue0b2" }, | |
\ 'subseparator': { 'left': "\ue0b1", 'right': "\ue0b3" }, | |
\ } | |
" Линтер с автодополнением | |
" https://github.com/dense-analysis/ale | |
Plug 'dense-analysis/ale' | |
let g:ale_fixers = { | |
\ '*': ['remove_trailing_lines', 'trim_whitespace'], | |
\ 'javascript': ['eslint'], | |
\ 'python': ['black', 'isort'], | |
\ } | |
let g:ale_fix_on_save = 1 | |
let g:ale_python_black_options = '-l 79 -S' | |
let g:ale_linters = { | |
\ 'javascript': ['eslint'], | |
\ 'python': ['pylsp'], | |
\ } | |
let g:ale_completion_enabled = 1 | |
set omnifunc=ale#completion#OmniFunc | |
let g:ale_completion_autoimport = 1 | |
" пакет, который ставится через системный пакетный менеджер, имеет другое | |
" имя исполняемого файла | |
let g:ale_python_pylsp_executable = 'pyls' | |
" Не работает | |
" let g:ale_linters.sh = ['language_server'] | |
" let g:ale_sh_language_server_use_global = 1 | |
nnoremap <silent> gd :ALEGoToDefinition -vsplit<CR> | |
" Всплывающий терминал | |
" https://github.com/voldikss/vim-floaterm | |
Plug 'voldikss/vim-floaterm' | |
let g:floaterm_keymap_toggle = '<F12>' | |
call plug#end() | |
set encoding=utf-8 | |
" Показывать всплывающее меню с вариантами автодополнения при вводе | |
set completeopt=menu,menuone,preview,noselect,noinsert | |
" Табуляция и отступы | |
set ai et ts=2 sts=2 sw=2 cindent | |
set shiftround | |
" Умный, регистронезависимый поиск по тексту с подсветкой результатов | |
set hls ignorecase incsearch smartcase | |
" Показывать номера строк относительно текущей | |
set nu rnu | |
" Выделять текущую строку | |
set cul | |
" Показывать ограничитель длины строки | |
set cc=80 | |
" Отображать специальные символы | |
set list | |
" Подсвечивать парные скобки | |
set showmatch | |
" Не разбивать слова при переносе строк | |
set wrap linebreak | |
" Строка состояния | |
set laststatus=2 | |
set noshowmode | |
set splitright " don't split left | |
set splitbelow " don't split top | |
" Оптимизация | |
set lazyredraw | |
set ttyfast | |
" Не выгружать буфер из памяти при переключении между ними | |
set hidden | |
" Не использовать файлы подкачки, не создавать копии файлов | |
set noswapfile nobackup nowritebackup " noundofile | |
" Изменения в файле сохраняем в файл | |
set undofile undodir=$HOME/.vim/undo | |
" Используем системный буфер обмена при копировании | |
" yay -S gvim | |
set clipboard=unnamedplus | |
" Влияет на время после которого сработает событие CursorHold | |
set updatetime=250 | |
" Используем режим отображения True Color | |
set termguicolors | |
" Используем темный вариант темы | |
set background=dark | |
colorscheme onedark | |
" Force saving files that require root permission | |
cnoremap w!! w !sudo tee > /dev/null % | |
" Leader Key | |
let mapleader=" " | |
nnoremap <Space> <Nop> | |
" Включение/выключение добавления отступов при вставке | |
set nopaste pastetoggle=<F2> | |
nnoremap <Leader>w :w<CR> " Сохранить буфер | |
nnoremap <Leader>q :q<CR> " Закрыть буфер | |
nnoremap <Leader>Q :qa!<CR> " Закрыть все без сохранения | |
" Выделить все | |
nnoremap <Leader>a ggVG | |
" Навигация между окнами | |
map <C-j> <C-W>j | |
map <C-k> <C-W>k | |
map <C-h> <C-W>h | |
map <C-l> <C-W>l | |
" Добавить/убрать отступы у выделенного блока | |
vnoremap > >gv | |
vnoremap < <gv | |
" Перемещение по перенесенным строкам | |
noremap j gj | |
noremap k gk | |
map <Up> k | |
map <Down> j | |
" Использования стрелочных функций при редактировании лучше избегать, так как | |
" при 10-пальцевом наборе нельзя убирать правую руку со второй половины | |
" клавиатупы | |
" Чтобы лишний не переключаться в нормальный режим... | |
imap <C-h> <Left> | |
imap <C-j> <Up> | |
imap <C-k> <Down> | |
imap <C-l> <Right> | |
" Переключению буферов | |
nnoremap <Leader>[ :bp<CR> | |
nnoremap <Leader>] :bn<CR> | |
" Убрать подсветку результатов поиска | |
nnoremap <silent> <C-l> :nohl<CR><C-l> | |
" Разбиение окна | |
nnoremap <Leader>s :sp<CR> | |
nnoremap <Leader>v :vsp<CR> | |
" Редактирование и применение конфига | |
nnoremap <Leader>ev :vsplit $MYVIMRC<CR> | |
nnoremap <Leader>sv :source $MYVIMRC<CR> | |
" Выполнить текущий файл | |
nnoremap <Leader>r :!%:p |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment