mirror of
https://github.com/jbowdre/dotfiles.git
synced 2024-11-23 01:42:17 +00:00
65 lines
1.8 KiB
Nix
65 lines
1.8 KiB
Nix
{ pkgs, lib, ... }: {
|
|
programs.vim = {
|
|
enable = true;
|
|
defaultEditor = true;
|
|
settings = {
|
|
background = "dark";
|
|
expandtab = true;
|
|
number = true;
|
|
shiftwidth = 2;
|
|
tabstop = 2;
|
|
};
|
|
plugins = with pkgs.vimPlugins; [
|
|
nerdcommenter
|
|
vim-go
|
|
vim-sensible
|
|
vim-trailing-whitespace
|
|
];
|
|
extraConfig = ''
|
|
" Tmux integration to switch panes with Ctrl+{hkjl}
|
|
if exists('$TMUX')
|
|
function! TmuxOrSplitSwitch(wincmd, tmuxdir)
|
|
let previous_winnr = winnr()
|
|
silent! execute "wincmd " . a:wincmd
|
|
if previous_winnr == winnr()
|
|
call system("tmux select-pane -" . a:tmuxdir)
|
|
redraw!
|
|
endif
|
|
endfunction
|
|
|
|
let previous_title = substitute(system("tmux display-message -p '#{pane_title}'"), '\n', "", "")
|
|
let &t_ti = "\<Esc>2;vim\<Esc>\\" . &t_ti
|
|
let &t_te = "\<Esc>2;". previous_title . "\<Esc>\\" . &t_te
|
|
|
|
nnoremap <silent> <C-h> :call TmuxOrSplitSwitch('h', 'L')<cr>
|
|
nnoremap <silent> <C-j> :call TmuxOrSplitSwitch('j', 'D')<cr>
|
|
nnoremap <silent> <C-k> :call TmuxOrSplitSwitch('k', 'U')<cr>
|
|
nnoremap <silent> <C-l> :call TmuxOrSplitSwitch('l', 'R')<cr>
|
|
else
|
|
map <C-h> <C-w>h
|
|
map <C-j> <C-w>j
|
|
map <C-k> <C-w>k
|
|
map <C-l> <C-w>l
|
|
endif
|
|
|
|
" coding preference
|
|
filetype off
|
|
filetype plugin indent on
|
|
|
|
syntax on
|
|
set backspace=indent,eol,start
|
|
set noautoindent
|
|
set noswapfile
|
|
set ruler
|
|
set showmatch
|
|
set smarttab
|
|
set sts=2
|
|
let g:NERDSpaceDelims=1
|
|
|
|
let mapleader=","
|
|
if has("autocmd")
|
|
autocmd FileType go set ts=2 sw=2 sts=2 noet nolist autowrite
|
|
endif
|
|
'';
|
|
};
|
|
}
|