{ pkgs, ... }: { programs.vim = { enable = true; extraConfig = '' " Temporary configuration for editing Nix files syntax on set autoindent set expandtab set tabstop=2 set shiftwidth=2 " Temporary configuration for editing markdown " full configuration with plugins is described here " https://blog.elnu.com/2022/06/how-to-configure-vim-for-writing setlocal linebreak set spell spelllang=en set spelllang+=cjk " prevent CJK characters from being spellchecked function! Characters() return strchars(join(getline(1, '$'), "\n")) endfunction function! Words() return wordcount().words endfunction function! Minutes() let wpm = 200 return (Words() + wpm / 2) / wpm endfunction set laststatus=2 " enable status line set statusline+=%=%{Words()}\ words, set statusline+=\ %{Characters()}\ characters,\ about set statusline+=\ %{Minutes()}\ minutes " remove ugly white background hi StatusLine ctermfg=0 ctermbg=none cterm=bold " 0 for the terminal color 0 ''; }; home.sessionVariables = { EDITOR = "vim"; }; }