nix/modules/home/vim.nix
2024-09-15 11:22:50 +02:00

81 lines
2.2 KiB
Nix

{ pkgs, ... }:
{
programs.vim = {
enable = true;
defaultEditor = true;
plugins = with pkgs.vimPlugins; [
vim-clap
switch-vim # switch between two world (TRUE<->FALSE)
vim-easy-align # allign text
vim-highlightedyank # see what you have yanked
# Vim Functional Enchancements
nerdcommenter # quick comment line of code
ale # error checking multiple language
tagbar # left panel with tag (es function or macro for different programming language)
# GUI enhancements
vim-airline # status line
vim-airline-themes # themes for airline
# Git
vim-gitgutter # git diff next to line number
vim-fugitive # manage git inside vim
gv-vim # git tree :GV
# Syntactic language support
vim-polyglot # A collection of language packs for Vim.
# Fuzzy Finders
fzf-vim # Fzf fuzzy finder
# Colorschema
# catppuccin-vim
];
settings = {
background = "dark";
copyindent = true;
directory = [
"~/.vim/.tmp"
"~/tmp"
"/tmp"
];
hidden = true;
history = 3000;
ignorecase = true;
modeline = false;
mouse = "a";
number = true;
relativenumber = true;
shiftwidth = 4;
smartcase = true;
tabstop = 4;
undofile = true;
undodir = [
"~/.vim/undo"
"~/tmp"
"/tmp"
];
};
extraConfig = ''
let mapleader=","
let mapocalleader="\\"
set termguicolors
set clipboard=unnamedplus " normal OS clipboard interaction
set foldenable
set incsearch
set pastetoggle=<F2> " when in insert mode, press <F2> to go to paste mode, where you can paste mass data that won't be autoindented
set scrolloff=4 " keep 4 lines off the edges of the screen when scrolling
set wrap
set wildmenu " make tab completion for files/buffers act like bash
set wildmode=longest:full,full " show a list when pressing tab and complete first full match
set wildignore=*.swp,*.bak,*.pyc,*.class,.hg,.svn,*~,*.png,*.jpg,*.gif
set title " change the terminal's title
'';
};
}