{ lib, pkgs, ... }: with lib; let out = { environment.systemPackages = [ vim' ]; environment.variables.EDITOR = mkForce "vim"; }; runtimepath = concatStringsSep "," [ "$HOME/.vim" # TODO get rid if this and incorporate everything from wu:~tv/.vim "${pkgs.vimPlugins.undotree}/share/vim-plugins/undotree" #"${tv-vim}/share/vim" ]; vim' = pkgs.writeScriptBin "vim" '' #! /bin/sh set -eu mkdir -p "$HOME"/.vim/backup mkdir -p "$HOME"/.vim/cache mkdir -p "$HOME"/.vim/undo exec ${pkgs.vim}/bin/vim -u ${vimrc} "$@" ''; vimrc = pkgs.writeText "vimrc" '' set nocompatible set autoindent set backspace=indent,eol,start set backup set backupdir=$HOME/.vim/backup/ set directory=$HOME/.vim/cache// set hlsearch set incsearch set mouse=a set pastetoggle= set runtimepath=${runtimepath} set shortmess+=I set showcmd set showmatch set ttimeoutlen=0 set undodir=$HOME/.vim/undo set undofile set undolevels=1000000 set undoreload=1000000 set viminfo='20,<1000,s100,h,n$HOME/.vim/cache/info set visualbell set wildignore+=*.o,*.class,*.hi,*.dyn_hi,*.dyn_o set wildmenu set wildmode=longest,full filetype plugin indent on "colorscheme industry # TODO syntax on cmap w!! w!sudo tee % >/dev/null nmap q :buffer nmap :buffer cnoremap noremap :q nnoremap [5^ :tabp nnoremap [6^ :tabn nnoremap [5@ :tabm -1 nnoremap [6@ :tabm +1 nnoremap :tabp nnoremap :tabn inoremap :tabp inoremap :tabn " noremap Oa | noremap! Oa noremap Ob | noremap! Ob noremap Oc | noremap! Oc noremap Od | noremap! Od " <[C]S-{Up,Down,Right,Left> noremap [a | noremap! [a noremap [b | noremap! [b noremap [c | noremap! [c noremap [d | noremap! [d vnoremap u ''; # "7.4.335" -> "74" #majmin = x: concatStrings (take 2 (splitString "." x)); in out #https://github.com/mbbill/undotree