diff --git a/src/apps/personal/vim.nix b/src/apps/personal/vim.nix
index 0e3b231..e6cb8f1 100644
--- a/src/apps/personal/vim.nix
+++ b/src/apps/personal/vim.nix
@@ -1,190 +1,191 @@
 { pkgs, ... }: {
-  programs.neovim = {
-    enable = true;
-    coc = {
-      enable = true;
-      settings = {
-        "suggest.noselect" = false;
-      };
-    };
-    viAlias = true;
-    vimAlias = true;
-    vimdiffAlias = true;
-    extraConfig = ''
-      let mapleader = ","
-      set whichwrap=b,s,<,>,[,]
-      set linebreak
-      set wrap
-      set number
-      set cursorline
-      set expandtab
-      set mouse=a
-      set splitright
-      set splitbelow
-      set clipboard=unnamedplus
-      set ignorecase
-      set smartcase
-      set scrolloff=5
-      colorscheme onehalfdark
+    programs.neovim = {
+        enable = true;
+        coc = {
+            enable = true;
+            settings = {
+                "suggest.noselect" = false;
+            };
+        };
+        viAlias = true;
+        vimAlias = true;
+        vimdiffAlias = true;
+        extraConfig = ''
+        let mapleader = ","
+        let g:VM_leader = "\\"
+        set whichwrap=b,s,<,>,[,]
+        set linebreak
+        set wrap
+        set number
+        set cursorline
+        set expandtab
+        set mouse=a
+        set splitright
+        set splitbelow
+        set clipboard=unnamedplus
+        set ignorecase
+        set smartcase
+        set scrolloff=5
+        colorscheme onehalfdark
 
-      command W w
-      command Wq wq
+        command W w
+        command Wq wq
 
-      fun! SetupCommandAlias(from, to)
+        fun! SetupCommandAlias(from, to)
         exec 'cnoreabbrev <expr> '.a:from
-              \ .' ((getcmdtype() is# ":" && getcmdline() is# "'.a:from.'")'
-              \ .'? ("'.a:to.'") : ("'.a:from.'"))'
-      endfun
+        \ .' ((getcmdtype() is# ":" && getcmdline() is# "'.a:from.'")'
+        \ .'? ("'.a:to.'") : ("'.a:from.'"))'
+        endfun
 
-      call SetupCommandAlias("git","Git")
+        call SetupCommandAlias("git","Git")
 
-      let g:camelcasemotion_key = '<leader>'
+        let g:camelcasemotion_key = '<leader>'
 
-      if exists('+termguicolors')
+        if exists('+termguicolors')
         let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
         let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
         set termguicolors
-      endif
-
-      let g:better_whitespace_enabled=1
-      let g:strip_whitespace_on_save=1
-      let g:strip_only_modified_lines=1
-      let g:strip_whitelines_at_eof=1
-      let g:show_spaces_that_precede_tabs=1
-      nnoremap ]w :NextTrailingWhitespace<CR>
-      nnoremap [w :PrevTrailingWhitespace<CR>
-
-      nmap <silent> ]c :call CocAction('diagnosticNext')<cr>
-      nmap <silent> [c :call CocAction('diagnosticPrevious')<cr>
-      nmap <silent> <Leader>fs <Plug>(coc-codeaction-selected)
-      nmap <silent> <Leader>fg <Plug>(coc-codeaction-cursor)
-      nmap <silent> <Leader>ff <Plug>(coc-codeaction)
-      nmap <Leader>fe <Cmd>CocCommand explorer<CR>
-
-      vnoremap // y/\V<C-R>=escape(@",'/\')<CR><CR>
-
-      set statusline=%t       "tail of the filename
-      set statusline+=[%{strlen(&fenc)?&fenc:'none'}, "file encoding
-      set statusline+=%{&ff}] "file format
-      set statusline+=%h      "help file flag
-      set statusline+=%m      "modified flag
-      set statusline+=%r      "read only flag
-      set statusline+=%y      "filetype
-      set statusline+=%=      "left/right separator
-      set statusline+=%c,     "cursor column
-      set statusline+=%l/%L   "cursor line/total lines
-      set statusline+=\ %P    "percent through file
-
-      let g:VM_theme_set_by_colorscheme = 1
-      highlight VM_Extend ctermfg=NONE guifg=NONE    ctermbg=239 guibg=#474e5d
-      highlight VM_Cursor ctermfg=188  guifg=#dcdfe4 ctermbg=168 guibg=#e06c75
-      highlight VM_Insert ctermfg=236  guifg=#282c34 ctermbg=176 guibg=#c678dd
-      highlight VM_Mono   ctermfg=236  guifg=#282c34 ctermbg=75  guibg=#61afef
-
-      highlight Pmenu      ctermfg=188 guifg=#dcdfe4 ctermbg=239 guibg=#474e5d
-      highlight PmenuSel   ctermfg=236 guifg=#282c34 ctermbg=75  guibg=#61afef
-      highlight PmenuSbar  ctermfg=237 guifg=#313640 ctermbg=237 guibg=#313640
-      highlight PmenuThumb ctermfg=188 guifg=#dcdfe4 ctermbg=188 guibg=#dcdfe4
-
-      highlight CocErrorSign   ctermfg=168 guifg=#e06c75 ctermbg=NONE guibg=NONE
-      highlight CocInfoSign    ctermfg=75  guifg=#61afef ctermbg=NONE guibg=NONE
-      highlight CocWarningSign ctermfg=180 guifg=#e5c07b ctermbg=NONE guibg=NONE
-
-      nnoremap <silent> K :call <SID>show_documentation()<CR>
-
-      autocmd BufWritePre * Neoformat
-
-      let g:neoformat_try_node_exe = 1
-
-      function! s:show_documentation()
-        if (index(['vim','help'], &filetype) >= 0)
-          execute 'h '.expand('<cword>')
-        else
-          call CocAction('doHover')
         endif
-      endfunction
 
-      lua << EOF
+        let g:better_whitespace_enabled=1
+        let g:strip_whitespace_on_save=1
+        let g:strip_only_modified_lines=1
+        let g:strip_whitelines_at_eof=1
+        let g:show_spaces_that_precede_tabs=1
+        nnoremap ]w :NextTrailingWhitespace<CR>
+        nnoremap [w :PrevTrailingWhitespace<CR>
+
+        nmap <silent> ]c :call CocAction('diagnosticNext')<cr>
+        nmap <silent> [c :call CocAction('diagnosticPrevious')<cr>
+        nmap <silent> <Leader>fs <Plug>(coc-codeaction-selected)
+        nmap <silent> <Leader>fg <Plug>(coc-codeaction-cursor)
+        nmap <silent> <Leader>ff <Plug>(coc-codeaction)
+        nmap <Leader>fe <Cmd>CocCommand explorer<CR>
+
+        vnoremap // y/\V<C-R>=escape(@",'/\')<CR><CR>
+
+        set statusline=%t       "tail of the filename
+        set statusline+=[%{strlen(&fenc)?&fenc:'none'}, "file encoding
+        set statusline+=%{&ff}] "file format
+        set statusline+=%h      "help file flag
+        set statusline+=%m      "modified flag
+        set statusline+=%r      "read only flag
+        set statusline+=%y      "filetype
+        set statusline+=%=      "left/right separator
+        set statusline+=%c,     "cursor column
+        set statusline+=%l/%L   "cursor line/total lines
+        set statusline+=\ %P    "percent through file
+
+        let g:VM_theme_set_by_colorscheme = 1
+        highlight VM_Extend ctermfg=NONE guifg=NONE    ctermbg=239 guibg=#474e5d
+        highlight VM_Cursor ctermfg=188  guifg=#dcdfe4 ctermbg=168 guibg=#e06c75
+        highlight VM_Insert ctermfg=236  guifg=#282c34 ctermbg=176 guibg=#c678dd
+        highlight VM_Mono   ctermfg=236  guifg=#282c34 ctermbg=75  guibg=#61afef
+
+        highlight Pmenu      ctermfg=188 guifg=#dcdfe4 ctermbg=239 guibg=#474e5d
+        highlight PmenuSel   ctermfg=236 guifg=#282c34 ctermbg=75  guibg=#61afef
+        highlight PmenuSbar  ctermfg=237 guifg=#313640 ctermbg=237 guibg=#313640
+        highlight PmenuThumb ctermfg=188 guifg=#dcdfe4 ctermbg=188 guibg=#dcdfe4
+
+        highlight CocErrorSign   ctermfg=168 guifg=#e06c75 ctermbg=NONE guibg=NONE
+        highlight CocInfoSign    ctermfg=75  guifg=#61afef ctermbg=NONE guibg=NONE
+        highlight CocWarningSign ctermfg=180 guifg=#e5c07b ctermbg=NONE guibg=NONE
+
+        nnoremap <silent> K :call <SID>show_documentation()<CR>
+
+        autocmd BufWritePre * Neoformat
+
+        let g:neoformat_try_node_exe = 1
+
+        function! s:show_documentation()
+        if (index(['vim','help'], &filetype) >= 0)
+        execute 'h '.expand('<cword>')
+        else
+        call CocAction('doHover')
+        endif
+        endfunction
+
+        lua << EOF
         require('neorg').setup {
-          load = {
-            ["core.defaults"] = {}
-          }
+            load = {
+                ["core.defaults"] = {}
+            }
         }
 
         require('orgmode').setup_ts_grammar()
 
         require('nvim-treesitter.configs').setup {
-          highlight = {
-            enable = true,
-            additional_vim_regex_highlighting = {'org'},
-          },
-          rainbow = {
-            enable = true,
-            extended_mode = true,
-            max_file_lines = nil,
-          },
-          incremental_selection = {
-            enable = true,
-            keymaps = {
-              init_selection = "gnn",
-              node_incremental = "grn",
-              scope_incremental = "grc",
-              node_decremental = "grm",
+            highlight = {
+                enable = true,
+                additional_vim_regex_highlighting = {'org'},
             },
-          },
-          indent = {
-            enable = true,
-          },
+            rainbow = {
+                enable = true,
+                extended_mode = true,
+                max_file_lines = nil,
+            },
+            incremental_selection = {
+                enable = true,
+                keymaps = {
+                    init_selection = "gnn",
+                    node_incremental = "grn",
+                    scope_incremental = "grc",
+                    node_decremental = "grm",
+                },
+            },
+            indent = {
+                enable = true,
+            },
         }
 
         require('git-conflict').setup()
-      EOF
+        EOF
 
-      set foldmethod=expr
-      set foldexpr=nvim_treesitter#foldexpr()
+        set foldmethod=expr
+        set foldexpr=nvim_treesitter#foldexpr()
 
-      set viewoptions-=options
-      autocmd BufWinLeave ?* mkview!
-      autocmd BufWinEnter ?* normal zR
+        set viewoptions-=options
+        autocmd BufWinLeave ?* mkview!
+        autocmd BufWinEnter ?* normal zR
 
-      function! s:loadViewOrUnfold()
+        function! s:loadViewOrUnfold()
         try
-          loadview
+        loadview
         catch
-          folddoclosed foldopen
+        folddoclosed foldopen
         endtry
-      endfunction
+        endfunction
 
-      autocmd BufWinEnter ?* call s:loadViewOrUnfold()
-    '';
+        autocmd BufWinEnter ?* call s:loadViewOrUnfold()
+        '';
 
-    plugins = [
-      pkgs.vimPlugins.git-conflict-nvim
-      pkgs.vimPlugins.vim-nix
-      pkgs.vimPlugins.copilot-vim
-      pkgs.vimPlugins.coc-tsserver
-      pkgs.vimPlugins.coc-eslint
-      pkgs.vimPlugins.coc-rust-analyzer
-      pkgs.vimPlugins.coc-spell-checker
-      pkgs.vimPlugins.coc-json
-      pkgs.vimPlugins.coc-jest
-      pkgs.vimPlugins.coc-css
-      pkgs.vimPlugins.coc-explorer
-      pkgs.vimPlugins.neoformat
-      pkgs.vimPlugins.zoomwintab-vim
-      pkgs.vimPlugins.onehalf
-      pkgs.vimPlugins.neorg
-      pkgs.vimPlugins.orgmode
-      pkgs.vimPlugins.vim-sleuth
-      pkgs.vimPlugins.vim-visual-multi
-      pkgs.vimPlugins.vim-better-whitespace
-      pkgs.vimPlugins.nvim-ts-rainbow
-      pkgs.vimPlugins.editorconfig-nvim
-      pkgs.vimPlugins.camelcasemotion
-      pkgs.vimPlugins.fugitive
-      (pkgs.vimPlugins.nvim-treesitter.withPlugins (plugins: pkgs.tree-sitter.allGrammars))
-    ];
-  };
+        plugins = [
+            pkgs.vimPlugins.git-conflict-nvim
+            pkgs.vimPlugins.vim-nix
+            pkgs.vimPlugins.copilot-vim
+            pkgs.vimPlugins.coc-tsserver
+            pkgs.vimPlugins.coc-eslint
+            pkgs.vimPlugins.coc-rust-analyzer
+            pkgs.vimPlugins.coc-spell-checker
+            pkgs.vimPlugins.coc-json
+            pkgs.vimPlugins.coc-jest
+            pkgs.vimPlugins.coc-css
+            pkgs.vimPlugins.coc-explorer
+            pkgs.vimPlugins.neoformat
+            pkgs.vimPlugins.zoomwintab-vim
+            pkgs.vimPlugins.onehalf
+            pkgs.vimPlugins.neorg
+            pkgs.vimPlugins.orgmode
+            pkgs.vimPlugins.vim-sleuth
+            pkgs.vimPlugins.vim-visual-multi
+            pkgs.vimPlugins.vim-better-whitespace
+            pkgs.vimPlugins.nvim-ts-rainbow
+            pkgs.vimPlugins.editorconfig-nvim
+            pkgs.vimPlugins.camelcasemotion
+            pkgs.vimPlugins.fugitive
+            (pkgs.vimPlugins.nvim-treesitter.withPlugins (plugins: pkgs.tree-sitter.allGrammars))
+        ];
+    };
 
-  home.sessionVariables.EDITOR = "${pkgs.neovim}/bin/nvim";
+    home.sessionVariables.EDITOR = "${pkgs.neovim}/bin/nvim";
 }
