Last active
October 1, 2022 21:20
-
-
Save yart/64076c744f79fceb75d8ce71cf99acc0 to your computer and use it in GitHub Desktop.
.vimrc
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
" ===================================================================================================================== | |
" =========================================== НАЧАЛО СЕКЦИИ ПЛАГИНОВ ================================================== | |
" ===================================================================================================================== | |
" Задаёт директорию для плагинов | |
" - для Neovim: ~/.local/share/nvim/plugged | |
" - отменяет стандартные имена Vim-директорий, таких как 'plugin' | |
call plug#begin('~/.vim/plugged') | |
Plug 'tpope/vim-commentary' | |
Plug 'tpope/vim-surround' " двойные скобки, тэги, кавычки и т.д. | |
" | |
Plug 'lyokha/vim-xkbswitch' " запоминает раскладку в нормальном режиме и в режиме вставки | |
Plug 'tpope/vim-sensible' | |
Plug 'w0rp/ale' | |
Plug 'sheerun/vim-polyglot' | |
Plug 'dyng/ctrlsf.vim' | |
Plug 'jlanzarotta/bufexplorer' " удобное управление буферами | |
Plug 'vim-airline/vim-airline' " красивая статус-строка | |
Plug 'Valloric/YouCompleteMe' | |
" Plug 'jiangmiao/auto-pairs' (плохо работает с кириллицей — не даёт напечатать х и ъ, например | |
Plug 'tpope/vim-fugitive' | |
Plug 'tpope/vim-obsession' | |
Plug 'terryma/vim-multiple-cursors' | |
" Поддержка языков программирования | |
Plug 'vim-ruby/vim-ruby' | |
" Подсветка синтаксиса | |
Plug 'posva/vim-vue' | |
Plug 'othree/javascript-libraries-syntax.vim' | |
Plug 'ap/vim-css-color' | |
Plug 'ekalinin/Dockerfile.vim' | |
Plug 'shmup/vim-sql-syntax' | |
" Всякие полезные инструменты | |
Plug 'mattn/emmet-vim', { 'for': ['html','xhtml','css','sass','scss','xml','vue'] } | |
Plug 'iamcco/markdown-preview.vim' | |
Plug 'nathanaelkane/vim-indent-guides' | |
Plug 'majutsushi/tagbar' | |
" Плагины для Git | |
Plug 'airblade/vim-gitgutter' | |
" Плагины для поиска по проекту (чё-то не работает как надо) | |
" Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } | |
" Plug 'junegunn/fzf.vim' | |
" Плагины для NERDTree | |
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } | |
Plug 'Xuyuanp/nerdtree-git-plugin' | |
" Цветовые схемы | |
Plug 'morhetz/gruvbox' | |
Plug 'sickill/vim-monokai' | |
Plug 'habamax/vim-gruvbit' | |
Plug 'habamax/vim-habanight' | |
Plug 'lourenci/github-colors' | |
Plug 'vv9k/vim-github-dark' | |
Plug 'nanotech/jellybeans.vim' | |
call plug#end() | |
" :PlugInstall | |
" ===================================================================================================================== | |
" ============================================ КОНЕЦ СЕКЦИИ ПЛАГИНОВ ================================================== | |
" ===================================================================================================================== | |
" УСТАНОВКА ЦВЕТОВОЙ СХЕМЫ | |
set termguicolors | |
" colorscheme gruvbox | |
" colorscheme monokai | |
" colorscheme gruvbit | |
" colorscheme habanight | |
" colorscheme github-colors | |
" colorscheme ghdark | |
colorscheme jellybeans | |
set background=dark | |
syntax enable | |
" АВТОПЕРЕКЛЮЧЕНИЕ РАСКЛАДКИ В РАЗНЫХ РЕЖИМАХ | |
let mapleader = "\\" | |
let g:XkbSwitchEnabled = 1 | |
let g:XkbSwitchLib = '/usr/lib/libxkbswitch.so' | |
let g:XkbSwitchIMappings = ['ru'] | |
" НЕКОТОРЫЕ НАСТРОЙКИ ДЛЯ JS ФАЙЛОВ | |
let g:used_javascript_libs = 'underscore,backbone,jquery,vue' | |
" УСТАНОВКА ОДНОЙ ДИРЕКТОРИИ ДЛЯ ВСЕХ SWAP ФАЙЛОВ | |
set directory=$HOME/.vim/swapfiles// | |
" НЕКОТОРЫЕ БАЗОВЫЕ НАСТРОЙКИ | |
set wrap linebreak " мягко переносит текст по словам на краю экрана | |
set colorcolumn=120 " показывает вертикальную черту на 120 символе | |
set autoread " автоматически перечитывает файл, если он был изменён снаружи | |
set nu " номера строк | |
set rnu " относительные номера строк | |
set expandtab " пробелы вместо табуляций | |
set tabstop=2 " ширина табуляции | |
set softtabstop=2 " это тоже, только для всяких внутренних отступов | |
set shiftwidth=2 " ширина сдвига блока по > | |
set hlsearch " подсветка поиска | |
set incsearch " поиск по мере ввода символов | |
set showcmd " включается история команд | |
set ruler " показывает положение курсора всегда | |
" Фолдинг по отступам | |
set foldenable | |
set foldlevel=100 | |
set foldmethod=indent | |
" Поддержка мыши | |
set mouse=a | |
set mousemodel=popup | |
" Не выгружать буфер, когда переключаемся на другой | |
" Это позволяет редактировать несколько файлов в один и тот же момент без необходимости сохранения каждый раз | |
" когда переключаешься между ними | |
set hidden | |
" Включаем 'умные' отступы, например, авто отступ после `{` | |
set smartindent | |
" Подсвечивать линию текста, на которой находится курсор | |
set cursorline | |
highlight CursorLine guibg=#1c1c1c ctermbg=234 | |
highlight CursorLine term=none cterm=none | |
" Triger `autoread` when files changes on disk | |
" https://unix.stackexchange.com/questions/149209/refresh-changed-content-of-file-opened-in-vim/383044#383044 | |
" https://vi.stackexchange.com/questions/13692/prevent-focusgained-autocmd-running-in-command-line-editing-mode | |
autocmd FocusGained,BufEnter,CursorHold,CursorHoldI * if mode() != 'c' | checktime | endif | |
" Notification after file change | |
" https://vi.stackexchange.com/questions/13091/autocmd-event-for-autoread | |
autocmd FileChangedShellPost * | |
\ echohl WarningMsg | echo "File changed on disk. Buffer reloaded." | echohl None | |
" Поддержка ruby | |
autocmd FileType ruby compiler ruby | |
imap <S-CR> <CR><CR>end<Esc>-cc | |
let ruby_operators = 1 | |
let ruby_pseudo_operators = 1 | |
" Настройки для подсветки синтаксиса vue | |
autocmd FileType vue syntax sync fromstart | |
autocmd BufRead,BufNewFile *.vue setlocal filetype=vue " .html.pug.javascript.css.sass | |
" Настройки для плагина vim-indent-guides | |
let g:indent_guides_enable_on_vim_startup = 1 | |
let g:indent_guides_auto_colors = 0 | |
hi IndentGuidesOdd ctermbg=235 | |
hi IndentGuidesEven ctermbg=236 | |
" Настройка отображения специальных символов | |
set list listchars=tab:→\ ,trail:· | |
" ===================================================================================================================== | |
" ======================================== НАЧАЛО СЕКЦИИ ПРИВЯЗКИ КЛАВИШ ============================================== | |
" ===================================================================================================================== | |
" Комбинация клавиш ctrl+j - действует как Escape в режиме Insert | |
inoremap <C-j> <ESC> | |
map <C-a> :NERDTreeToggle<CR> | |
" просмотр списка буферов | |
nmap <C-b> <Esc>:BufExplorer<cr> | |
vmap <C-b> <esc>:BufExplorer<cr> | |
imap <C-b> <esc><esc>:BufExplorer<cr> | |
" Вертикальные переходы по длинным строкам | |
nnoremap j gj | |
nnoremap k gk | |
" копирование и вставка из/в внешнего буфера обмена | |
nnoremap <C-y> "+y | |
vnoremap <C-y> "+y | |
nnoremap <C-p> "+gP | |
vnoremap <C-p> "+gP | |
" проверка орфографии | |
map <F7> :setlocal spell spelllang=en<cr> | |
map <C-F7> :setlocal spell spelllang=ru<cr> | |
map <S-F7> :setlocal nospell<cr> | |
" выравнивание окон | |
nnoremap == <c-w>t<c-w>=11<c-w>+ | |
" перемещение по окнам | |
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-left> <c-w>< | |
nnoremap <c-down> <c-w>- | |
nnoremap <c-up> <c-w>+ | |
nnoremap <c-right> <c-w>> | |
" tab в качестве CTRL+W | |
nnoremap <tab> <c-w> | |
nnoremap <tab><tab> <c-w><c-w> | |
" выход в нормальный режим в терминале | |
tnoremap <Esc> <C-\><C-n> | |
" Символ `@` в командном буфере разворачивается в путь до текущего файла. | |
" Крайне удобно использовать для открытия файла из той же директории, | |
" где находится текущий редактируемый файл | |
" cnoremap @ <c-r>=expand("%:h")<cr>/ | |
" пока отключил, так как мешает в регулярках. Надо какой-то другой символ | |
" придумать. | |
" ===================================================================================================================== | |
" ========================================= КОНЕЦ СЕКЦИИ ПРИВЯЗКИ КЛАВИШ ============================================== | |
" ===================================================================================================================== | |
set encoding=utf-8 | |
set termencoding=utf-8 | |
let g:mkdp_path_to_chrome = "chromium-browser" | |
set clipboard=unnamedplus | |
" управление сессиями | |
fu! SaveSess() | |
execute 'mksession! ' . getcwd() . '/.session.vim' | |
endfunction | |
fu! RestoreSess() | |
if argc() == 0 | |
if filereadable(getcwd() . '/.session.vim') | |
execute 'so ' . getcwd() . '/.session.vim' | |
if bufexists(1) | |
for l in range(1, bufnr('$')) | |
if bufwinnr(l) == -1 | |
exec 'sbuffer ' . l | |
endif | |
endfor | |
endif | |
endif | |
endif | |
endfunction | |
autocmd VimLeave * call SaveSess() | |
autocmd VimEnter * nested call RestoreSess() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment