summaryrefslogtreecommitdiff
path: root/modules/vim
diff options
context:
space:
mode:
Diffstat (limited to 'modules/vim')
-rw-r--r--modules/vim/default.nix71
-rw-r--r--modules/vim/rc.vim169
2 files changed, 240 insertions, 0 deletions
diff --git a/modules/vim/default.nix b/modules/vim/default.nix
new file mode 100644
index 0000000..94cc7af
--- /dev/null
+++ b/modules/vim/default.nix
@@ -0,0 +1,71 @@
+{
+ 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
new file mode 100644
index 0000000..3bd9eb7
--- /dev/null
+++ b/modules/vim/rc.vim
@@ -0,0 +1,169 @@
+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