From 24a5be6da36ace8c967394459acf9149467e0297 Mon Sep 17 00:00:00 2001 From: Serguey Parkhomovsky Date: Thu, 26 Mar 2026 23:03:36 -0700 Subject: go back to regular old vim --- vim/.vimrc | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 vim/.vimrc (limited to 'vim') diff --git a/vim/.vimrc b/vim/.vimrc new file mode 100644 index 0000000..8b964e0 --- /dev/null +++ b/vim/.vimrc @@ -0,0 +1,136 @@ +" ~/.vimrc — Vim 9 configuration +" Requires: vim-plug, rust-analyzer in PATH, fzf binary + +" ── Bootstrap vim-plug ──────────────────────────────────────────────────────── +let s:plug_path = expand('~/.vim/autoload/plug.vim') +if !filereadable(s:plug_path) + silent execute '!curl -fLo ' .. s:plug_path .. ' --create-dirs ' + \ .. 'https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' + autocmd VimEnter * PlugInstall --sync | source $MYVIMRC +endif + +" ── Plugins ─────────────────────────────────────────────────────────────────── +call plug#begin() + +Plug 'yegappan/lsp' +Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } +Plug 'junegunn/fzf.vim' +Plug 'ghifarit53/tokyonight-vim' +Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' + +call plug#end() + +" ── General settings ────────────────────────────────────────────────────────── +filetype plugin indent on +syntax enable + +set number +set signcolumn=yes +set updatetime=300 +set hidden + +set tabstop=4 +set shiftwidth=4 +set expandtab + +set ignorecase +set smartcase +set incsearch +set hlsearch + +set splitbelow +set splitright +set scrolloff=8 + +set clipboard=unnamedplus +set mouse=a + +" ── File clutter ─────────────────────────────────────────────────────────────── +set nobackup +set nowritebackup +let &directory = expand('~/.vim/swap//') +silent! call mkdir(expand('~/.vim/swap'), 'p', 0700) +set undofile +let &undodir = expand('~/.vim/undo//') +silent! call mkdir(expand('~/.vim/undo'), 'p', 0700) + +" ── Colors ──────────────────────────────────────────────────────────────────── +set termguicolors +let g:tokyonight_style = 'night' +colorscheme tokyonight + +" ── LSP (yegappan/lsp) ──────────────────────────────────────────────────────── +" g:LspOnSetup is called by the User LspSetup autocmd below. +" Variables must be defined and consumed inside the same function call — +" they cannot be captured by an inner autocmd in a def function. +def g:LspOnSetup() + var lspServers = [ + { + name: 'rust', + filetype: ['rust'], + path: 'rust-analyzer', + syncInit: true, + } + ] + + g:LspAddServer(lspServers) +enddef + +autocmd User LspSetup call g:LspOnSetup() + +" LSP keymaps (only when LSP is active) +autocmd FileType rust { + nnoremap gd LspGotoDefinition + nnoremap gD LspGotoDeclaration + nnoremap gi LspGotoImpl + nnoremap gr LspShowReferences + nnoremap gy LspGotoTypeDef + nnoremap K LspHover + nnoremap r LspRename + nnoremap a LspCodeAction + nnoremap f LspFormat + nnoremap d LspDiagShow + nnoremap [d LspDiagPrev + nnoremap ]d LspDiagNext + nnoremap o LspOutline + nnoremap i LspInlayHints toggle +} + +" ── Search ──────────────────────────────────────────────────────────────────── +nnoremap nohlsearch + +" ── Window navigation ────────────────────────────────────────────────────────── +nnoremap h +nnoremap j +nnoremap k +nnoremap l + +" ── Airline ─────────────────────────────────────────────────────────────────── +let g:airline_theme = 'tokyonight' +let g:airline_powerline_fonts = 0 " set to 1 if you have a Nerd Font +let g:airline#extensions#lsp#enabled = 1 + +" ── FZF ─────────────────────────────────────────────────────────────────────── +" Use ripgrep for :Files if available +if executable('rg') + set grepprg=rg\ --vimgrep\ --smart-case + set grepformat=%f:%l:%c:%m +endif + +" Layout +let g:fzf_layout = { 'down': '40%' } +let g:fzf_preview_window = ['right:50%:hidden', 'ctrl-/'] + +" FZF keymaps +nnoremap Files +nnoremap Buffers +nnoremap rg Rg +nnoremap fg GFiles +nnoremap fl BLines +nnoremap fh History +nnoremap fc Commands +nnoremap fm Maps + +" Word search under cursor +nnoremap fw execute 'Rg ' .. expand('') -- cgit v1.2.3