diff options
author | Azat Bahawi <azat@bahawi.net> | 2023-07-03 11:27:19 +0300 |
---|---|---|
committer | Azat Bahawi <azat@bahawi.net> | 2023-07-03 11:27:19 +0300 |
commit | c80598d4e4ffea73647b2ea8440a6080596968fe (patch) | |
tree | a6ca4bb82ec20df18022988fa359126fc877d5da /modules/common/vim | |
parent | 2023-06-21 (diff) |
2023-07-03
Diffstat (limited to 'modules/common/vim')
-rw-r--r-- | modules/common/vim/default.nix | 62 | ||||
-rw-r--r-- | modules/common/vim/rc.vim | 140 |
2 files changed, 56 insertions, 146 deletions
diff --git a/modules/common/vim/default.nix b/modules/common/vim/default.nix index 2ee8a0b..3755201 100644 --- a/modules/common/vim/default.nix +++ b/modules/common/vim/default.nix @@ -7,43 +7,37 @@ with lib; let cfg = config.nixfiles.modules.vim; in { - options.nixfiles.modules.vim.enable = mkEnableOption "Vim"; + 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 { - programs.vim.package = with pkgs; - (vim_configurable.override { - features = "normal"; - cscopeSupport = false; - darwinSupport = pkgs.stdenv.isDarwin; - guiSupport = false; - luaSupport = false; - multibyteSupport = false; - netbeansSupport = false; - nlsSupport = false; - perlSupport = false; - pythonSupport = false; - rubySupport = false; - tclSupport = false; - ximSupport = false; - }) - .customize { - name = "vim"; - vimrcConfig = { - customRC = readFile ./rc.vim; - packages.myVimPackage.start = with vimPlugins; [ - editorconfig-vim - vim-eunuch - vim-nix - vim-sleuth - vim-surround - vim-unimpaired - ]; - }; + environment = with config.programs.vim; { + systemPackages = [package]; + variables = rec { + EDITOR = mkOverride 100 "${package}/bin/vim"; + VISUAL = EDITOR; }; - - environment = { - systemPackages = [config.programs.vim.package]; - variables.EDITOR = mkOverride 100 "vim"; }; }; } diff --git a/modules/common/vim/rc.vim b/modules/common/vim/rc.vim index 945643a..3bd9eb7 100644 --- a/modules/common/vim/rc.vim +++ b/modules/common/vim/rc.vim @@ -1,38 +1,31 @@ -set nocompatible - let $VIMFILES = expand('<sfile>:p:h') let g:skip_defaults_vim = 1 let g:netrw_dirhistmax = 0 -set autoread -set backspace=indent,eol,start +if has('unnamedplus') + set clipboard^=unnamedplus +else + set clipboard^=unnamed +endif -set clipboard=unnamedplus +set backspace=indent,eol,start set diffopt+=iwhite set hidden -set history=256 set lazyredraw set mouse= set path+=** -set tabpagemax=50 set viminfo= set cmdheight=1 -set display+=lastline set fillchars=vert:\ " -set laststatus=2 set modeline set noshowmode -set ruler set shortmess+=I set textwidth=0 set title -set sessionoptions-=options -set viewoptions-=options - set noerrorbells set novisualbell @@ -49,7 +42,6 @@ set completeopt+=longest set gdefault set hlsearch -set incsearch set iskeyword+=- set magic @@ -75,7 +67,6 @@ if v:version >= 700 endif set wildignorecase -set wildmenu set wildignore= set nobackup @@ -97,65 +88,10 @@ set smarttab set softtabstop=4 set tabstop=4 -autocmd BufEnter *.* :set colorcolumn= - -if &t_Co == 8 && $TERM !~# '^Eterm' - set t_Co=16 -endif - -if &listchars ==# 'eol:$' - set listchars=tab:>\ ,trail:-,extends:>,precedes:<,nbsp:+ -endif +set colorcolumn= +let g:EditorConfig_max_line_indicator = "none" -if v:version > 703 || v:version == 703 && has("patch541") - set formatoptions+=j -endif - -if has('path_extra') - setglobal tags-=./tags tags-=./tags; tags^=./tags; -endif - -if !has('nvim') && &ttimeoutlen == -1 - set ttimeout - set ttimeoutlen=100 -endif - -try - set encoding=utf-8 - scriptencoding utf-8 -catch -endtry - -try - if &fileencodings !~? "utf-8" - let g:added_fenc_utf8 = 1 - set fileencodings+=utf-8 - endif -catch -endtry - -if has('autocmd') - filetype plugin indent on - - if exists("+omnifunc") - autocmd Filetype * - \ if &omnifunc == "" | - \ setlocal omnifunc=syntaxcomplete#Complete | - \ endif - endif - - autocmd BufEnter * set noreadonly -endif - -if has('syntax') && !exists('g:syntax_on') - syntax enable -endif - -if !exists('g:loaded_matchit') && findfile('plugin/matchit.vim', &rtp) ==# '' - runtime! macros/matchit.vim -endif - -nnoremap <SPACE> <nop> +nnoremap <Space> <Nop> let mapleader=" " nnoremap :W :w @@ -163,27 +99,27 @@ nnoremap :W! :w! nnoremap :Q :q nnoremap :Q! :q! -nnoremap <Expr> j v:count ? 'j' : 'gj' -nnoremap <Expr> k v:count ? 'k' : 'gk' +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 <C-A> ^h +vnoremap <C-A> ^h nnoremap H ^h vnoremap H ^h -nnoremap <C-e> $ -vnoremap <C-e> $ +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> +inoremap <C-U> <C-g>u<C-u> +inoremap <C-W> <C-g>u<C-w> vnoremap < <gv vnoremap > >gv @@ -192,24 +128,22 @@ vnoremap <S-Tab> <gv nnoremap <Tab> >>_ nnoremap <S-Tab> <<_ -nnoremap ]b :<C-u>bnext<CR> -nnoremap [b :<C-u>bprevious<CR> +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-l> <C-w>l +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> -nnoremap <C-L> :<C-u>nohlsearch<C-r>=has('diff')?'<Bar>diffupdate':''<CR><CR><C-l> - cnoremap ;/ <C-r>=expand('%:p:h').'/'<CR> cnoremap ;; <C-r>=expand('%:t')<CR> cnoremap ;. <C-r>=expand('%:p:r')<CR> -nnoremap <Leader>. :<C-u>lcd %:p:h<CR> +nnoremap <Leader>. :lcd %:p:h<CR> nnoremap Q @q @@ -225,29 +159,11 @@ nnoremap <Leader>P "+P inoremap <C-v> <C-c>"+pi cnoremap <C-v> <C-r>+ -nmap <Leader>w :<C-u>w!<CR> -nmap <Leader>wq :<C-u>wq!<CR> +nmap <Leader>w :w!<CR> +nmap <Leader>wq :wq!<CR> -nnoremap ZX :<C-u>qa!<CR> +nnoremap ZX :qa!<CR> -nnoremap <Leader>q :<C-u>q<CR> +nnoremap <Leader>q :q<CR> command WS w !sudo tee "%" >/dev/null - -function! SwitchCase() - normal! ~ - if strlen(getline('.')) != virtcol('.') - normal! h - endif -endfunction -nnoremap ~ :<C-u>call SwitchCase()<CR> - -function! s:GM() - execute 'normal! ^' - let first_col = virtcol('.') - execute 'normal! g_' - let last_col = virtcol('.') - execute 'normal! ' . (first_col + last_col) / 2 . '|' -endfunction -nnoremap gm :<C-u>call <SID>GM()<CR> -onoremap gm :<C-u>call <SID>GM()<CR> |