From 75918debfd7245d90478f882b0323a705ab3c7be Mon Sep 17 00:00:00 2001 From: Azat Bahawi Date: Mon, 24 Jun 2024 11:10:21 +0300 Subject: 2024-06-24 --- modules/vim.nix | 208 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 modules/vim.nix (limited to 'modules/vim.nix') diff --git a/modules/vim.nix b/modules/vim.nix new file mode 100644 index 0000000..7209e8b --- /dev/null +++ b/modules/vim.nix @@ -0,0 +1,208 @@ +{ + config, + lib, + pkgs, + this, + ... +}: +with lib; +let + cfg = config.nixfiles.modules.vim; +in +{ + options.nixfiles.modules.vim.enable = mkEnableOption "Vim"; + + config = mkIf cfg.enable { + hm.stylix.targets.vim.enable = false; + + programs.vim = { + package = mkIf this.isHeadful ( + pkgs.vim-full.customize { + name = "vim"; + vimrcConfig = with cfg; { + customRC = '' + let $VIMFILES = expand(':p:h') + + let g:skip_defaults_vim = 1 + + let g:netrw_dirhistmax = 0 + + if has('unnamedplus') + set clipboard^=unnamedplus + else + set clipboard^=unnamed + endif + + set diffopt+=iwhite + set hidden + set lazyredraw + set mouse= + set path+=** + + set cmdheight=1 + set fillchars=vert:\ " + set modeline + set noshowmode + set shortmess+=I + set textwidth=0 + set title + + set noerrorbells + set novisualbell + + set splitbelow + set splitright + + set complete= + set complete+=. + set complete+=b + set complete+=t + set completeopt= + set completeopt+=menu + set completeopt+=longest + + set gdefault + set hlsearch + set iskeyword+=- + set magic + + set foldmethod=marker + set nofoldenable + + set shortmess= + set shortmess+=I + set shortmess+=T + set shortmess+=a + set shortmess+=c + set shortmess+=t + + set nolist + set nowrap + + set scrolloff=10 + set sidescrolloff=10 + + set number + if v:version >= 700 + set numberwidth=3 + endif + + set wildignorecase + set wildignore= + + set nobackup + set noswapfile + set noundofile + set nowritebackup + + set smartcase + set ignorecase + + set autoindent + set breakindent + set smartindent + + set expandtab + set shiftround + set shiftwidth=4 + set smarttab + set softtabstop=4 + set tabstop=4 + + set colorcolumn= + let g:EditorConfig_max_line_indicator = "none" + + nnoremap + let mapleader=" " + + nnoremap :W :w + nnoremap :W! :w! + nnoremap :Q :q + nnoremap :Q! :q! + + nnoremap j v:count ? 'j' : 'gj' + nnoremap k v:count ? 'k' : 'gk' + + nnoremap J gt + nnoremap K gT + + nnoremap ^h + vnoremap ^h + nnoremap H ^h + vnoremap H ^h + + nnoremap $ + vnoremap $ + nnoremap L $ + vnoremap L $ + + nnoremap N Nzzzv + nnoremap n nzzzv + + inoremap u + inoremap u + + vnoremap < >gv + vnoremap >gv + vnoremap >>_ + nnoremap <<_ + + nnoremap ]b :bnext + nnoremap [b :bprevious + + nnoremap h + nnoremap j + nnoremap k + nnoremap l + + nnoremap * /\<=expand('')\> + nnoremap # ?\<=expand('')\> + + cnoremap ;/ =expand('%:p:h').'/' + cnoremap ;; =expand('%:t') + cnoremap ;. =expand('%:p:r') + + nnoremap . :lcd %:p:h + + nnoremap Q @q + + nnoremap c ^v$h + nnoremap v ggVG + + nnoremap y "+y + nnoremap Y "+Y + + nnoremap p "+p + nnoremap P "+P + + inoremap "+pi + cnoremap + + + nmap w :w! + nmap wq :wq! + + nnoremap ZX :qa! + + nnoremap q :q + + command WS w !sudo tee "%" >/dev/null + ''; + packages.myVimPackage.start = with pkgs.vimPlugins; [ + editorconfig-vim + vim-eunuch + vim-nix + vim-sensible + vim-sleuth + vim-surround + vim-unimpaired + ]; + }; + } + ); + + defaultEditor = true; + }; + }; +} -- cgit v1.2.3