diff options
author | Azat Bahawi <azat@bahawi.net> | 2024-06-24 11:10:21 +0300 |
---|---|---|
committer | Azat Bahawi <azat@bahawi.net> | 2024-06-24 11:10:21 +0300 |
commit | 75918debfd7245d90478f882b0323a705ab3c7be (patch) | |
tree | 26b8f0ab5a3e4d7c61963fa96d57250e5ddc9a7d /modules/vim | |
parent | 2024-06-19 (diff) |
2024-06-24
Diffstat (limited to '')
-rw-r--r-- | modules/vim.nix | 208 | ||||
-rw-r--r-- | modules/vim/default.nix | 71 | ||||
-rw-r--r-- | modules/vim/rc.vim | 169 |
3 files changed, 208 insertions, 240 deletions
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('<sfile>: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 <Space> <Nop> + let mapleader=" " + + nnoremap :W :w + nnoremap :W! :w! + nnoremap :Q :q + nnoremap :Q! :q! + + nnoremap <expr> j v:count ? 'j' : 'gj' + nnoremap <expr> k v:count ? 'k' : 'gk' + + nnoremap J gt + nnoremap K gT + + nnoremap <C-A> ^h + vnoremap <C-A> ^h + nnoremap H ^h + vnoremap H ^h + + nnoremap <C-E> $ + vnoremap <C-E> $ + nnoremap L $ + vnoremap L $ + + nnoremap N Nzzzv + nnoremap n nzzzv + + inoremap <C-U> <C-g>u<C-u> + inoremap <C-W> <C-g>u<C-w> + + vnoremap < <gv + vnoremap > >gv + vnoremap <Tab> >gv + vnoremap <S-Tab> <gv + nnoremap <Tab> >>_ + nnoremap <S-Tab> <<_ + + nnoremap ]b :bnext<CR> + nnoremap [b :bprevious<CR> + + nnoremap <C-H> <C-w>h + nnoremap <C-J> <C-w>j + nnoremap <C-K> <C-w>k + nnoremap <C-R> <C-w>l + + nnoremap * /\<<C-r>=expand('<cword>')<CR>\><CR> + nnoremap # ?\<<C-r>=expand('<cword>')<CR>\><CR> + + cnoremap ;/ <C-r>=expand('%:p:h').'/'<CR> + cnoremap ;; <C-r>=expand('%:t')<CR> + cnoremap ;. <C-r>=expand('%:p:r')<CR> + + nnoremap <Leader>. :lcd %:p:h<CR> + + nnoremap Q @q + + nnoremap <Leader>c ^v$h + nnoremap <Leader>v ggVG + + nnoremap <Leader>y "+y + nnoremap <Leader>Y "+Y + + nnoremap <Leader>p "+p + nnoremap <Leader>P "+P + + inoremap <C-v> <C-c>"+pi + cnoremap <C-v> <C-r>+ + + nmap <Leader>w :w!<CR> + nmap <Leader>wq :wq!<CR> + + nnoremap ZX :qa!<CR> + + nnoremap <Leader>q :q<CR> + + 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; + }; + }; +} diff --git a/modules/vim/default.nix b/modules/vim/default.nix deleted file mode 100644 index 94cc7af..0000000 --- a/modules/vim/default.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -with lib; -let - cfg = config.nixfiles.modules.vim; -in -{ - options.nixfiles.modules.vim = { - enable = mkEnableOption "Vim"; - - rc = mkOption { - type = types.str; - default = readFile ./rc.vim; - description = "Configuration file."; - }; - - plugins = mkOption { - type = with types; listOf package; - default = with pkgs.vimPlugins; [ - editorconfig-vim - vim-eunuch - vim-nix - vim-sensible - vim-sleuth - vim-surround - vim-unimpaired - ]; - description = "Plugins."; - }; - }; - - config = mkIf cfg.enable { - hm.stylix.targets.vim.enable = false; - - programs.vim.package = - (pkgs.vim-full.override { - cscopeSupport = false; - darwinSupport = false; - features = "normal"; - guiSupport = "gtk3"; - luaSupport = false; - multibyteSupport = false; - netbeansSupport = false; - nlsSupport = false; - perlSupport = false; - pythonSupport = false; - rubySupport = false; - tclSupport = false; - ximSupport = false; - }).customize - { - name = "vim"; - vimrcConfig = with cfg; { - customRC = rc; - packages.myVimPackage.start = plugins; - }; - }; - - environment = { - systemPackages = [ config.programs.vim.package ]; - variables = rec { - EDITOR = "vim"; - VISUAL = EDITOR; - }; - }; - }; -} diff --git a/modules/vim/rc.vim b/modules/vim/rc.vim deleted file mode 100644 index 3bd9eb7..0000000 --- a/modules/vim/rc.vim +++ /dev/null @@ -1,169 +0,0 @@ -let $VIMFILES = expand('<sfile>: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 backspace=indent,eol,start -set diffopt+=iwhite -set hidden -set lazyredraw -set mouse= -set path+=** -set viminfo= - -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 <Space> <Nop> -let mapleader=" " - -nnoremap :W :w -nnoremap :W! :w! -nnoremap :Q :q -nnoremap :Q! :q! - -nnoremap <expr> j v:count ? 'j' : 'gj' -nnoremap <expr> k v:count ? 'k' : 'gk' - -nnoremap J gt -nnoremap K gT - -nnoremap <C-A> ^h -vnoremap <C-A> ^h -nnoremap H ^h -vnoremap H ^h - -nnoremap <C-E> $ -vnoremap <C-E> $ -nnoremap L $ -vnoremap L $ - -nnoremap N Nzzzv -nnoremap n nzzzv - -inoremap <C-U> <C-g>u<C-u> -inoremap <C-W> <C-g>u<C-w> - -vnoremap < <gv -vnoremap > >gv -vnoremap <Tab> >gv -vnoremap <S-Tab> <gv -nnoremap <Tab> >>_ -nnoremap <S-Tab> <<_ - -nnoremap ]b :bnext<CR> -nnoremap [b :bprevious<CR> - -nnoremap <C-H> <C-w>h -nnoremap <C-J> <C-w>j -nnoremap <C-K> <C-w>k -nnoremap <C-R> <C-w>l - -nnoremap * /\<<C-r>=expand('<cword>')<CR>\><CR> -nnoremap # ?\<<C-r>=expand('<cword>')<CR>\><CR> - -cnoremap ;/ <C-r>=expand('%:p:h').'/'<CR> -cnoremap ;; <C-r>=expand('%:t')<CR> -cnoremap ;. <C-r>=expand('%:p:r')<CR> - -nnoremap <Leader>. :lcd %:p:h<CR> - -nnoremap Q @q - -nnoremap <Leader>c ^v$h -nnoremap <Leader>v ggVG - -nnoremap <Leader>y "+y -nnoremap <Leader>Y "+Y - -nnoremap <Leader>p "+p -nnoremap <Leader>P "+P - -inoremap <C-v> <C-c>"+pi -cnoremap <C-v> <C-r>+ - -nmap <Leader>w :w!<CR> -nmap <Leader>wq :wq!<CR> - -nnoremap ZX :qa!<CR> - -nnoremap <Leader>q :q<CR> - -command WS w !sudo tee "%" >/dev/null |