120 lines
2.8 KiB
Nix
120 lines
2.8 KiB
Nix
|
{ config, pkgs, ... }:
|
||
|
|
||
|
let
|
||
|
customPlugins.vim-better-whitespace = pkgs.vimUtils.buildVimPlugin {
|
||
|
name = "vim-better-whitespace";
|
||
|
src = pkgs.fetchFromGitHub {
|
||
|
owner = "ntpeters";
|
||
|
repo = "vim-better-whitespace";
|
||
|
rev = "984c8da518799a6bfb8214e1acdcfd10f5f1eed7";
|
||
|
sha256 = "10l01a8xaivz6n01x6hzfx7gd0igd0wcf9ril0sllqzbq7yx2bbk";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
in {
|
||
|
|
||
|
environment.systemPackages = [
|
||
|
pkgs.python27Full # required for youcompleteme
|
||
|
(pkgs.vim_configurable.customize {
|
||
|
name = "vim";
|
||
|
|
||
|
vimrcConfig.customRC = ''
|
||
|
set nocompatible
|
||
|
syntax on
|
||
|
|
||
|
filetype off
|
||
|
filetype plugin indent on
|
||
|
|
||
|
colorscheme darkblue
|
||
|
set background=dark
|
||
|
|
||
|
set number
|
||
|
set relativenumber
|
||
|
set mouse=a
|
||
|
set ignorecase
|
||
|
set incsearch
|
||
|
set wildignore=*.o,*.obj,*.bak,*.exe,*.os
|
||
|
set textwidth=79
|
||
|
set shiftwidth=2
|
||
|
set expandtab
|
||
|
set softtabstop=2
|
||
|
set shiftround
|
||
|
set smarttab
|
||
|
set tabstop=2
|
||
|
set et
|
||
|
set autoindent
|
||
|
set backspace=indent,eol,start
|
||
|
|
||
|
|
||
|
inoremap <F1> <ESC>
|
||
|
nnoremap <F1> <ESC>
|
||
|
vnoremap <F1> <ESC>
|
||
|
|
||
|
nnoremap <F5> :UndotreeToggle<CR>
|
||
|
set undodir =~/.vim/undo
|
||
|
set undofile
|
||
|
"maximum number of changes that can be undone
|
||
|
set undolevels=1000000
|
||
|
"maximum number lines to save for undo on a buffer reload
|
||
|
set undoreload=10000000
|
||
|
|
||
|
nnoremap <F2> :set invpaste paste?<CR>
|
||
|
set pastetoggle=<F2>
|
||
|
set showmode
|
||
|
|
||
|
set showmatch
|
||
|
set matchtime=3
|
||
|
set hlsearch
|
||
|
|
||
|
autocmd ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red
|
||
|
|
||
|
|
||
|
" save on focus lost
|
||
|
au FocusLost * :wa
|
||
|
|
||
|
autocmd BufRead *.json set filetype=json
|
||
|
au BufNewFile,BufRead *.mustache set syntax=mustache
|
||
|
|
||
|
cnoremap SudoWrite w !sudo tee > /dev/null %
|
||
|
|
||
|
" create Backup/tmp/undo dirs
|
||
|
set backupdir=~/.vim/backup
|
||
|
set directory=~/.vim/tmp
|
||
|
|
||
|
function! InitBackupDir()
|
||
|
let l:parent = $HOME . '/.vim/'
|
||
|
let l:backup = l:parent . 'backup/'
|
||
|
let l:tmpdir = l:parent . 'tmp/'
|
||
|
let l:undodir= l:parent . 'undo/'
|
||
|
|
||
|
|
||
|
if !isdirectory(l:parent)
|
||
|
call mkdir(l:parent)
|
||
|
endif
|
||
|
if !isdirectory(l:backup)
|
||
|
call mkdir(l:backup)
|
||
|
endif
|
||
|
if !isdirectory(l:tmpdir)
|
||
|
call mkdir(l:tmpdir)
|
||
|
endif
|
||
|
if !isdirectory(l:undodir)
|
||
|
call mkdir(l:undodir)
|
||
|
endif
|
||
|
endfunction
|
||
|
call InitBackupDir()
|
||
|
|
||
|
|
||
|
'';
|
||
|
|
||
|
vimrcConfig.vam.knownPlugins = pkgs.vimPlugins // customPlugins;
|
||
|
vimrcConfig.vam.pluginDictionaries = [
|
||
|
{ names = [ "undotree"
|
||
|
"YouCompleteMe"
|
||
|
"vim-better-whitespace" ]; }
|
||
|
{ names = [ "vim-addon-nix" ]; ft_regex = "^nix\$"; }
|
||
|
];
|
||
|
|
||
|
})
|
||
|
];
|
||
|
}
|