From a2b223784fce086eee3eb3a652d8b3b35f28aa6b Mon Sep 17 00:00:00 2001 From: mitchell Date: Tue, 2 Jul 2024 19:38:01 -0400 Subject: [PATCH] Refactor .vimrc into config.vim and support nvim only --- .config/nvim/config.vim | 114 ++++++++++ .config/nvim/init.lua | 55 ++++- .../share/nvim/site}/autoload/plug.vim | 0 .vimrc | 202 ------------------ sync | 4 +- 5 files changed, 159 insertions(+), 216 deletions(-) create mode 100644 .config/nvim/config.vim rename {.vim => .local/share/nvim/site}/autoload/plug.vim (100%) delete mode 100644 .vimrc diff --git a/.config/nvim/config.vim b/.config/nvim/config.vim new file mode 100644 index 0000000..31410d2 --- /dev/null +++ b/.config/nvim/config.vim @@ -0,0 +1,114 @@ +set colorcolumn=100 +set cursorline +set showmatch +set hlsearch +set mouse=a +set mousemodel=extend +set number +set noshowmode +set background=dark +set nowrap +set tabstop=2 +set shiftwidth=0 +set expandtab +set textwidth=100 +set cmdheight=2 +set ignorecase +set smartcase +set shortmess+=c +set foldmethod=expr +set foldexpr=nvim_treesitter#foldexpr() +set nofoldenable " Disable folding at startup. + +inoremap jj + +let mapleader = ',' +nnoremap f ALEFix +nnoremap a ALEToggle +nnoremap n Neotree +nnoremap t Telescope +nnoremap p Telescope git_files +nnoremap Telescope find_files +nnoremap s Telescope treesitter +nnoremap ga Telescope grep_string +nnoremap gg Telescope lsp_definitions +nnoremap gr Telescope lsp_references +nnoremap gi Telescope lsp_implementations +nnoremap gd Telescope lsp_type_definitions +nnoremap o SymbolsOutline +nnoremap z ZenMode +nnoremap l Twilight +nnoremap c COQnow + +tnoremap + +" Allows you to use // in order to search for the visually selected text +vnoremap // y/\V=escape(@",'/\') + +colorscheme gruvbox + +let g:neovide_scale_factor = 0.7 + +let g:ale_linters_explicit = 1 +let g:ale_completion_enabled = 0 + +let g:pencil#map#suspend_af = 'K' + +let g:lightline = { + \ 'colorscheme': 'wombat', + \ } + +let g:ale_linters = { + \ 'javascript': ['eslint', 'stylelint'], + \ 'typescript': ['eslint', 'stylelint'], + \ 'javascriptreact': ['eslint', 'stylelint'], + \ 'typescriptreact': ['eslint', 'stylelint'], + \ 'go': ['golint', 'go vet'], + \ 'vue': ['eslint', 'stylelint'], + \ 'make': ['checkmake'], + \ 'proto': ['protoc-gen-lint'], + \ 'dockerfile': ['hadolint'], + \ 'dart': ['dartanalyzer'], + \ 'fish': ['fish'], + \ 'vim': ['vint'], + \ 'elixir': ['credo'], + \ 'cs': ['OmniSharp'], + \ 'terraform': ['tflint'], + \ 'ruby': ['rubocop'], + \ 'css': ['stylelint'], + \ 'sh': ['shellcheck'], + \ 'python': ['pylint'], + \ } + + +let g:ale_fixers = { + \ 'go': ['goimports', 'remove_trailing_lines', 'trim_whitespace'], + \ 'graphql': ['prettier'], + \ 'javascript': ['prettier'], + \ 'typescript': ['prettier'], + \ 'javascriptreact': ['prettier'], + \ 'typescriptreact': ['prettier'], + \ 'vue': ['prettier'], + \ 'css': ['prettier'], + \ 'yaml': ['prettier'], + \ 'json': ['prettier'], + \ 'dart': ['dartfmt'], + \ 'html': ['prettier'], + \ 'markdown': ['prettier'], + \ 'make': ['remove_trailing_lines', 'trim_whitespace'], + \ 'elixir': ['mix_format'], + \ 'terraform': ['terraform'], + \ 'ruby': ['rubocop'], + \ 'python': ['black'], + \ 'lua': ['stylua'], + \ } + +augroup ft_fish + au! + autocmd FileType fish set tabstop=4 +augroup END + +augroup term + au! + autocmd TermOpen * set nonumber +augroup END diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 471c644..76bdec9 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1,22 +1,53 @@ -vim.cmd("set runtimepath^=~/.vim runtimepath+=~/.vim/after") -vim.cmd("let &packpath = &runtimepath") -vim.cmd("source ~/.vimrc") +local plug = vim.fn["plug#"] +vim.call("plug#begin") -vim.g.coq_settings = { auto_start = true } +-- Contains lots of sensible configurations, which I have in turn omitted from here +plug("tpope/vim-sensible") + +plug("tpope/vim-eunuch") +plug("tpope/vim-surround") +plug("tpope/vim-endwise") +plug("itchyny/lightline.vim") +plug("edkolev/tmuxline.vim") +plug("airblade/vim-gitgutter") +plug("reedes/vim-pencil", { ["on"] = { "HardPencil", "SoftPencil" } }) + +plug("w0rp/ale") +plug("tpope/vim-fugitive", { ["on"] = { "G", "Git" }, ["for"] = "gitcommit" }) +plug("mileszs/ack.vim", { ["on"] = "Ack" }) + +plug("nvim-treesitter/nvim-treesitter", { ["do"] = ":TSUpdate" }) +plug("nvim-treesitter/nvim-treesitter-context") +plug("BurntSushi/ripgrep") +plug("MunifTanjim/nui.nvim") +plug("rcarriga/nvim-notify") +plug("nvim-lua/plenary.nvim") +plug("nvim-tree/nvim-web-devicons") + +plug("ms-jpq/coq_nvim") +plug("folke/noice.nvim") +plug("ggandor/leap.nvim") +plug("folke/zen-mode.nvim") +plug("folke/twilight.nvim") +plug("neovim/nvim-lspconfig") +plug("ellisonleao/gruvbox.nvim") +plug("nvim-neo-tree/neo-tree.nvim") +plug("nvim-telescope/telescope.nvim") +plug("simrat39/symbols-outline.nvim") +plug("nvim-telescope/telescope-fzf-native.nvim", { + ["do"] = "cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build", +}) +plug("pmizio/typescript-tools.nvim") + +vim.call("plug#end") -vim.g.neovide_scale_factor = 0.7 vim.opt.guifont = { "JetBrainsMono Nerd Font", "h13" } -vim.keymap.set("t", "", "") -vim.api.nvim_create_autocmd("TermOpen", { - pattern = "*", - command = "set nonumber", -}) +vim.g.coq_settings = { auto_start = true } require("gruvbox").setup({ transparent_mode = true, }) -vim.cmd("colorscheme gruvbox") require("twilight").setup() require("zen-mode").setup({ @@ -165,3 +196,5 @@ for _, lsp in ipairs(servers) do flags = lsp_flags, })) end + +vim.cmd("source ~/.config/nvim/config.vim") diff --git a/.vim/autoload/plug.vim b/.local/share/nvim/site/autoload/plug.vim similarity index 100% rename from .vim/autoload/plug.vim rename to .local/share/nvim/site/autoload/plug.vim diff --git a/.vimrc b/.vimrc deleted file mode 100644 index bb823b3..0000000 --- a/.vimrc +++ /dev/null @@ -1,202 +0,0 @@ -call plug#begin('~/.vim/plugged') - -" Contains lots of sensible configurations, which I have in turn omitted from this file -Plug 'tpope/vim-sensible' - -Plug 'tpope/vim-eunuch' -Plug 'tpope/vim-surround' -Plug 'tpope/vim-endwise' -Plug 'itchyny/lightline.vim' -Plug 'edkolev/tmuxline.vim' -Plug 'airblade/vim-gitgutter' -Plug 'reedes/vim-pencil', { 'on': ['HardPencil', 'SoftPencil'] } - -if !exists('g:vscode') - Plug 'w0rp/ale' - Plug 'tpope/vim-fugitive', { 'on': ['G', 'Git'], 'for': 'gitcommit' } - Plug 'mileszs/ack.vim', { 'on': 'Ack' } - - if has('nvim') - Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'} - Plug 'nvim-treesitter/nvim-treesitter-context' - Plug 'BurntSushi/ripgrep' - Plug 'MunifTanjim/nui.nvim' - Plug 'rcarriga/nvim-notify' - Plug 'nvim-lua/plenary.nvim' - Plug 'nvim-tree/nvim-web-devicons' - - Plug 'ms-jpq/coq_nvim' - Plug 'folke/noice.nvim' - Plug 'ggandor/leap.nvim' - Plug 'folke/zen-mode.nvim' - Plug 'folke/twilight.nvim' - Plug 'neovim/nvim-lspconfig' - Plug 'ellisonleao/gruvbox.nvim' - Plug 'nvim-neo-tree/neo-tree.nvim' - Plug 'nvim-telescope/telescope.nvim' - Plug 'simrat39/symbols-outline.nvim' - Plug 'nvim-telescope/telescope-fzf-native.nvim', { - \ 'do': 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' - \ } - Plug 'pmizio/typescript-tools.nvim' - else - Plug 'morhetz/gruvbox' - Plug 'junegunn/fzf' - Plug 'mcchrish/nnn.vim' - - " Language specific plugins - Plug 'dart-lang/dart-vim-plugin' - Plug 'elixir-editors/vim-elixir' - Plug 'georgewitteman/vim-fish' - Plug 'fatih/vim-go' - Plug 'jparise/vim-graphql' - Plug 'pangloss/vim-javascript' - Plug 'vim-ruby/vim-ruby' - Plug 'cespare/vim-toml' - Plug 'OmniSharp/omnisharp-vim' - Plug 'HerringtonDarkholme/yats.vim' - Plug 'MaxMEllon/vim-jsx-pretty' - Plug 'b4b4r07/vim-hcl' - Plug 'hashivim/vim-terraform' - Plug 'PProvost/vim-ps1' - Plug 'vmchale/dhall-vim' - Plug 'baskerville/vim-sxhkdrc' - Plug 'keith/swift.vim' - endif -endif - -call plug#end() - -set colorcolumn=100 -set cursorline -set showmatch -set hlsearch -set mouse=a -set mousemodel=extend -set number -set noshowmode -set background=dark -set nowrap -set tabstop=2 -set shiftwidth=0 -set expandtab -set textwidth=100 -set cmdheight=2 -set ignorecase -set smartcase -set shortmess+=c -set foldmethod=expr -set foldexpr=nvim_treesitter#foldexpr() -set nofoldenable " Disable folding at startup. - - -let mapleader = 'j' -inoremap j - -let mapleader = ',' -nnoremap f ALEFix -nnoremap a ALEToggle - -if has('nvim') - nnoremap n Neotree - nnoremap t Telescope - nnoremap p Telescope git_files - nnoremap Telescope find_files - nnoremap s Telescope treesitter - nnoremap ga Telescope grep_string - nnoremap gg Telescope lsp_definitions - nnoremap gr Telescope lsp_references - nnoremap gi Telescope lsp_implementations - nnoremap gd Telescope lsp_type_definitions - nnoremap o SymbolsOutline - nnoremap z ZenMode - nnoremap l Twilight - nnoremap c COQnow -else - nnoremap n NnnPicker - nnoremap p FZF - nnoremap a Ack -endif - -" Allows you to use // in order to search for the visually selected text -vnoremap // y/\V=escape(@",'/\') - -let g:gruvbox_italic=1 -colorscheme gruvbox - -highlight Normal ctermbg=None - -let g:ackprg = 'ag --nogroup --nocolor --column --hidden' - -let g:lightline = { - \ 'colorscheme': 'wombat', - \ } - -let g:ale_linters = { - \ 'javascript': ['eslint', 'stylelint'], - \ 'typescript': ['eslint', 'stylelint'], - \ 'javascriptreact': ['eslint', 'stylelint'], - \ 'typescriptreact': ['eslint', 'stylelint'], - \ 'go': ['golint', 'go vet'], - \ 'vue': ['eslint', 'stylelint'], - \ 'make': ['checkmake'], - \ 'proto': ['protoc-gen-lint'], - \ 'dockerfile': ['hadolint'], - \ 'dart': ['dartanalyzer'], - \ 'fish': ['fish'], - \ 'vim': ['vint'], - \ 'elixir': ['credo'], - \ 'cs': ['OmniSharp'], - \ 'terraform': ['tflint'], - \ 'ruby': ['rubocop'], - \ 'css': ['stylelint'], - \ 'sh': ['shellcheck'], - \ 'python': ['pylint'], - \ } - - -let g:ale_fixers = { - \ 'go': ['goimports', 'remove_trailing_lines', 'trim_whitespace'], - \ 'graphql': ['prettier'], - \ 'javascript': ['prettier'], - \ 'typescript': ['prettier'], - \ 'javascriptreact': ['prettier'], - \ 'typescriptreact': ['prettier'], - \ 'vue': ['prettier'], - \ 'css': ['prettier'], - \ 'yaml': ['prettier'], - \ 'json': ['prettier'], - \ 'dart': ['dartfmt'], - \ 'html': ['prettier'], - \ 'markdown': ['prettier'], - \ 'make': ['remove_trailing_lines', 'trim_whitespace'], - \ 'elixir': ['mix_format'], - \ 'terraform': ['terraform'], - \ 'ruby': ['rubocop'], - \ 'python': ['black'], - \ 'lua': ['stylua'], - \ } - -let g:ale_linters_explicit = 1 -let g:ale_completion_enabled = 0 - -let g:OmniSharp_server_stdio = 1 - -let g:pencil#map#suspend_af = 'K' - -let g:nnn#layout = {'left': '~20%'} -let g:nnn#command = 'nnn -eHo' - -augroup ft_fish - au! - autocmd FileType fish set tabstop=4 -augroup END - -augroup ft_cs - au! - autocmd FileType cs nmap g (omnisharp_go_to_definition) - autocmd FileType cs nmap r (omnisharp_find_usages) - autocmd FileType cs nmap h (omnisharp_preview_definition) - autocmd FileType cs nmap c (omnisharp_code_actions) -augroup END - diff --git a/sync b/sync index caa2b4b..288b57d 100755 --- a/sync +++ b/sync @@ -59,17 +59,15 @@ function sync_terminal_env rsync -aP ./.config/fish ~/.config/ and rsync -aP ./.config/nvim ~/.config/ + and rsync -aP ./.local/share/nvim ~/.local/share/ and rsync -aP ./.tmux-line.conf ~/ and rsync -aP ./.tmux.conf ~/ - and rsync -aP ./.vim ~/ - and rsync -aP ./.vimrc ~/ and rsync -aP ./scripts/ ~/code/scripts/ and rsync -aP ./.config/starship.toml ~/.config/ end function sync_desktop_env -a uname rsync -aP ./.wezterm.lua ~/ - and rsync -aP ./.ideavimrc ~/ or return 1 switch $uname