migrate vim config

This commit is contained in:
Ray Andrew 2024-11-16 21:46:32 -06:00
parent 4db59f48da
commit 52fa46eb43
5 changed files with 189 additions and 27 deletions

View file

@ -16,7 +16,7 @@
./ripgrep.nix ./ripgrep.nix
./shell.nix ./shell.nix
./tmux ./tmux
./vim.nix ./vim
./w3m.nix ./w3m.nix
./yazi.nix ./yazi.nix
./zoxide.nix ./zoxide.nix

View file

@ -94,10 +94,10 @@ vim.keymap.set("t", "<Esc><Esc>", "<C-\\><C-n>", { desc = "Exit terminal mode" }
-- Use CTRL+<hjkl> to switch between windows -- Use CTRL+<hjkl> to switch between windows
-- --
-- See `:help wincmd` for a list of all window commands -- See `:help wincmd` for a list of all window commands
vim.keymap.set("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" }) -- vim.keymap.set("n", "<C-h>", "<C-w><C-h>", { desc = "Move focus to the left window" })
vim.keymap.set("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" }) -- vim.keymap.set("n", "<C-l>", "<C-w><C-l>", { desc = "Move focus to the right window" })
vim.keymap.set("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" }) -- vim.keymap.set("n", "<C-j>", "<C-w><C-j>", { desc = "Move focus to the lower window" })
vim.keymap.set("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" }) -- vim.keymap.set("n", "<C-k>", "<C-w><C-k>", { desc = "Move focus to the upper window" })
-- [[ Basic Autocommands ]] -- [[ Basic Autocommands ]]
-- See `:help lua-guide-autocommands` -- See `:help lua-guide-autocommands`
@ -186,7 +186,7 @@ require("lazy").setup({
{ "<leader>d", group = "[D]ocument" }, { "<leader>d", group = "[D]ocument" },
{ "<leader>r", group = "[R]ename" }, { "<leader>r", group = "[R]ename" },
{ "<leader>s", group = "[S]earch" }, { "<leader>s", group = "[S]earch" },
{ "<leader>w", group = "[W]orkspace" }, { "<leader>w", group = "[W]orkspace|[W]indow" },
{ "<leader>t", group = "[T]oggle" }, { "<leader>t", group = "[T]oggle" },
{ "<leader>h", group = "Git [H]unk", mode = { "n", "v" } }, { "<leader>h", group = "Git [H]unk", mode = { "n", "v" } },
}, },
@ -779,8 +779,8 @@ require("lazy").setup({
keys = { keys = {
-- stylua: ignore start -- stylua: ignore start
{ "-", "<CMD>Oil<CR>", desc = "Open parent directory" }, { "-", "<CMD>Oil<CR>", desc = "Open parent directory" },
{ "<leader>fm", "<cmd>Oil<cr>", desc = "[F]ile [M]anager" }, { "<leader>fm", "<CMD>Oil<CR>", desc = "[F]ile [M]anager" },
{ "<leader>fM", "<cmd>Oil --float<cr>", desc = "[F]ile [M]anager" }, { "<leader>fM", "<CMD>Oil --float<CR>", desc = "[F]ile [M]anager" },
-- stylua: ignore end -- stylua: ignore end
}, },
init = function() init = function()
@ -796,7 +796,13 @@ require("lazy").setup({
"TmuxNavigateRight", "TmuxNavigateRight",
}, },
-- stylua: ignore start -- stylua: ignore start
keys = { "<C-h>", "<C-j>", "<C-k>", "<C-l>" }, keys = {
"<C-h>", "<C-j>", "<C-k>", "<C-l>",
{ "<leader>wh", "<cmd>TmuxNavigateLeft<CR>", desc = "[W]indow Left" },
{ "<leader>wl", "<cmd>TmuxNavigateRight<CR>", desc = "[W]indow Right" },
{ "<leader>wk", "<cmd>TmuxNavigateUp<CR>", desc = "[W]indow Up" },
{ "<leader>wj", "<cmd>TmuxNavigateDown<CR>", desc = "[W]indow Down" },
},
-- stylua: ignore end -- stylua: ignore end
config = function() config = function()
vim.g.tmux_navigator_no_wrap = 1 vim.g.tmux_navigator_no_wrap = 1
@ -899,12 +905,13 @@ require("lazy").setup({
}, },
}) })
-- Keymaps
vim.keymap.set("n", "<C-[>", "<cmd>nohlsearch<CR>") vim.keymap.set("n", "<C-[>", "<cmd>nohlsearch<CR>")
vim.keymap.set("t", "<C-[><C-[>", "<C-\\><C-n>", { desc = "Exit terminal mode" }) vim.keymap.set("t", "<C-[><C-[>", "<C-\\><C-n>", { desc = "Exit terminal mode" })
vim.keymap.set("n", "<leader>fs", "<cmd>w<cr><Esc>", { desc = "Save file" }) vim.keymap.set("n", "<leader>fs", "<cmd>w<cr><Esc>", { desc = "Save file" })
vim.keymap.set("n", "<leader>ws", "<cmd>split<cr>", { desc = "[W]indow Horizontal [S]plit" }) -- split horizontal vim.keymap.set("n", "<leader>ws", "<cmd>split<cr>", { desc = "[W]indow Horizontal [S]plit" })
vim.keymap.set("n", "<leader>wv", "<cmd>vsplit<cr>", { desc = "[W]indow [V]ertical Split" }) -- split vertical vim.keymap.set("n", "<leader>wv", "<cmd>vsplit<cr>", { desc = "[W]indow [V]ertical Split" })
vim.keymap.set("n", "<leader>wq", "<C-w>q", { desc = "[W]indow [Q]uit" }) -- quit vim.keymap.set("n", "<leader>wq", "<C-w>q", { desc = "[W]indow [Q]uit" })
vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { desc = "Chmod File E[x]ecutable", silent = true }) vim.keymap.set("n", "<leader>x", "<cmd>!chmod +x %<CR>", { desc = "Chmod File E[x]ecutable", silent = true })
vim.keymap.set("n", "<leader>lz", "<cmd>Lazy<CR>", { desc = "[L]azy", silent = true }) vim.keymap.set("n", "<leader>lz", "<cmd>Lazy<CR>", { desc = "[L]azy", silent = true })
vim.keymap.set("n", "<leader>lp", "<cmd>Lazy profile<CR>", { desc = "[L]azy [P]rofile", silent = true }) vim.keymap.set("n", "<leader>lp", "<cmd>Lazy profile<CR>", { desc = "[L]azy [P]rofile", silent = true })

View file

@ -1,15 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
vim-full
];
custom.persist = {
home.directories = [
".vim"
];
home.files = [
".vimrc"
];
};
}

View file

@ -0,0 +1,22 @@
{
pkgs,
config,
dots,
...
}:
{
home.packages = with pkgs; [
vim-full
];
home.file.".vimrc".source = config.lib.file.mkOutOfStoreSymlink "${dots}/src/home/shell/vim/vimrc";
custom.persist = {
home.directories = [
".vim"
];
# home.files = [
# ".vimrc"
# ];
};
}

148
src/home/shell/vim/vimrc Normal file
View file

@ -0,0 +1,148 @@
let g:plug_home=$HOME."/.vim/plugged"
call plug#begin()
Plug 'tpope/vim-sensible'
Plug 'tpope/vim-sleuth'
Plug 'tpope/vim-eunuch'
Plug 'tpope/vim-vinegar'
Plug 'tpope/vim-markdown'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-abolish'
" Plug 'airblade/vim-gitgutter'
" Plug 'junegunn/fzf.vim' | Plug '/etc/profiles/per-user/rayandrew/share/vim-pl'
Plug 'junegunn/fzf' " , { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'christoomey/vim-tmux-navigator'
Plug 'ryvnf/readline.vim'
Plug 'mg979/vim-visual-multi', {'branch': 'master'}
Plug 'yegappan/lsp'
Plug 'mbbill/undotree'
Plug 'github/copilot.vim'
Plug 'voldikss/vim-floaterm'
Plug 'jasonccox/vim-wayland-clipboard'
Plug 'tmux-plugins/vim-tmux-focus-events'
Plug 'roxma/vim-tmux-clipboard'
call plug#end()
" Global settings
let mapleader = " "
let maplocalleader = " "
filetype plugin indent on
set shm+=I
set mouse=a
set number
" set paste
set clipboard^=unnamed,unnamedplus
" set clipboard=unnamed
" set clipboard=unnamedplus
set signcolumn=no
" Vim visual multi
" let g:VM_leader="<C-d>"
let g:VM_maps = {}
let g:VM_maps["Exit"] = '<C-[>'
let g:VM_maps['Find Under'] = '<C-d>'
let g:VM_maps['Find Subword Under'] = '<C-d>'
let g:VM_mouse_mappings = 1
let g:markdown_fenced_languages = ['html', 'python', 'bash=sh']
" Undo
if has("persistent_undo")
let target_path = expand($HOME . '/.vim/undodir')
" create the directory and any parent directories
" if the location does not exist.
if !isdirectory(target_path)
call mkdir(target_path, "p", 0700)
endif
let &undodir=target_path
set undofile
endif
let &backupdir = expand($HOME . '/.vim/backup_files/')
let &directory = expand($HOME . '/.vim/swap_files/')
" Keybindings
nnoremap <silent> <Esc> <CMD>nohlsearch<CR>
nmap <silent> <C-[> <Esc>
nmap <silent> <leader>fs <CMD>w<CR><Esc>
" if <expr>FugitiveHead() != ''
" nnoremap <silent> <leader>sf <CMD>GFiles --cached --others --exclude-standard<CR>
" else
" nnoremap <silent> <leader>sf <CMD>Files<CR>
" endif
nnoremap <silent><expr> <leader>sf FugitiveHead() != '' ? '<CMD>GFiles --cached --others --exclude-standard<CR>' : '<CMD>Files<CR>'
nnoremap <silent> <leader>ff <CMD>Files<CR>
nnoremap <silent> <leader>sg <CMD>Rg<CR>
nnoremap <silent> <leader>so <CMD>History<CR>
nnoremap <silent> <leader><leader> <CMD>Buffers<CR>
nnoremap <silent> <leader>bd <CMD>bd<CR>
nnoremap <silent> <leader>ws <CMD>split<CR>
nnoremap <silent> <leader>wv <CMD>vsplit<CR>
nnoremap <silent> <leader>wj <C-w>j
nnoremap <silent> <leader>wk <C-w>k
nnoremap <silent> <leader>wh <C-w>h
nnoremap <silent> <leader>wl <C-w>l
nnoremap <silent> <leader>wq <C-w>q
nnoremap <silent> <leader>fm <CMD>Ex<CR>
nnoremap <silent> <leader><tab>n <CMD>tabnew<CR>
nnoremap <silent> <leader><tab>l <CMD>tabnext<CR>
nnoremap <silent> <leader><tab>h <CMD>tabprevious<CR>
nnoremap <silent> <leader><tab>d <CMD>tabclose<CR>
nnoremap <silent> <leader><tab>1 <CMD>tabfirst<CR>
nnoremap <silent> <leader><tab>0 <CMD>tablast<CR>
nnoremap <silent> <leader>mx <CMD>!chmod +x %<CR>
nnoremap <silent> <leader>ss <CMD>source %<CR>
nnoremap <silent> <F5> <CMD>UndotreeToggle<CR>
nnoremap <silent> <leader>ut <CMD>UndotreeToggle<CR>
xmap gc <Plug>Commentary
nmap gc <Plug>Commentary
omap gc <Plug>Commentary
nmap gcc <Plug>CommentaryLine
nmap gcu <Plug>Commentary<Plug>Commentary
nnoremap <silent> <leader>ca <CMD>LspCodeAction<CR>
nnoremap <silent> <leader>D <CMD>LspGotoTypeDef<CR>
nnoremap <silent> <leader>rn <CMD>LspRename<CR>
nnoremap <silent> gd <CMD>LspGotoDefinition<CR>
nnoremap <silent> gD <CMD>LspGotoDeclaration<CR>
nnoremap <silent> K <CMD>LspHover<CR>
nnoremap <silent> <leader>ds <CMD>LspDocumentSymbol<CR>
nnoremap <silent> <leader>ds <CMD>LspDocumentSymbol<CR>
nnoremap <silent> <leader>ps <CMD>LspSymbolSearch<CR>
nnoremap <silent> <leader>f <CMD>LspFormat<CR>
nnoremap <silent> <leader>gg <CMD>FloatermNew --height=0.7 --width=0.8 lazygit<CR>
nnoremap <silent> <leader>tt <CMD>FloatermToggle<CR>
" imap <silent><script><expr> <C-m> copilot#Accept("\<CR>")
" Copilot
" let g:copilot_no_tab_map = v:true
" LSP
let lspopts = #{autoHighlightDiags: v:false, highlightDiagInline: v:false}
" let lspopts = #{}
autocmd User LspSetup call LspOptionsSet(lspopts)
let lspservers = []
if executable("clangd")
call add (lspservers, #{
\ name: 'clang',
\ filetype: ['c', 'cpp'],
\ path: exepath('clangd'),
\ args: ['--background-index']
\ })
endif
if executable("pylsp")
call add (lspservers, #{
\ name: 'pylsp',
\ filetype: 'python',
\ path: exepath('pylsp'),
\ args: []
\ })
endif
autocmd User LspSetup call LspAddServer(lspservers)