From 5929d6cfe79ad33e2b7624076116df2a91a6e32c Mon Sep 17 00:00:00 2001 From: Leonora Tindall Date: Thu, 29 Aug 2024 15:10:52 -0500 Subject: [PATCH] Fully port vim config to neovim Including adding several plugins: - whitespace-nvim to trim whitespace - vimsence for Discord - vim-wordy for writing issues detection - vim-pencil for autowrapping in text and md files yayyy - ctrl-p with ripgrep --- rcfiles/neovim.lua | 41 +++++++++++++++++ rcfiles/vimrc | 107 --------------------------------------------- vim.nix | 25 +++++------ 3 files changed, 51 insertions(+), 122 deletions(-) create mode 100644 rcfiles/neovim.lua delete mode 100644 rcfiles/vimrc diff --git a/rcfiles/neovim.lua b/rcfiles/neovim.lua new file mode 100644 index 0000000..ac17985 --- /dev/null +++ b/rcfiles/neovim.lua @@ -0,0 +1,41 @@ +vim.opt.ignorecase = true -- search case insensitive +vim.opt.smartcase = true -- search matters if capital letter +vim.opt.inccommand = "split" -- "for incsearch while sub +vim.g.mapleader = "," + +vim.opt.ruler = true -- cursor position all the time +vim.opt.autowrite = true -- save before commands + +-- softtabs, 2 spaces +vim.opt.tabstop = 2 +vim.opt.shiftwidth = 2 +vim.opt.shiftround = true +vim.optexpandtab = true + +-- listchars (show tabs and trailing whitespace) +vim.opt.list = true +vim.opt.listchars.tab = "»·" +vim.opt.listchars.trail= "·" +vim.opt.listchars.nbsp = "·" + +-- width and height indications +vim.opt.textwidth = 80 +vim.opt.colorcolumn = "+1" +vim.opt.number = true +vim.opt.numberwidth = 5 + +-- textwidth but don't wrap +vim.opt.formatoptions:remove { "t" } + +-- ctrl-p with ripgrep +vim.opt.grepprg="rg --color=never" +vim.g.ctrlp_user_command='rg %s --files --color=never --glob ""' +vim.g.ctrlp_use_caching=0 + +-- vimsense (rich presence) options +vim.g.vimsense_small_text = "NeoVim" +vim.g.vimsense_small_image = "neovim" +vim.g.vimsense_editing_details = "Editing: {}" +vim.g.vimsense_editing_state = "Working on: {}" +vim.g.vimsense_file_explorer_text = "In file manager" +vim.g.vimsense_file_explorer_details = "Looking for files" diff --git a/rcfiles/vimrc b/rcfiles/vimrc deleted file mode 100644 index 8818807..0000000 --- a/rcfiles/vimrc +++ /dev/null @@ -1,107 +0,0 @@ -set encoding=utf-8 - -" Leader -let mapleader = " " - -set backspace=2 " Backspace deletes like most programs in insert mode -set nobackup -set nowritebackup -set noswapfile " http://robots.thoughtbot.com/post/18739402579/global-gitignore#comment-458413287 -set history=50 -set ruler " show the cursor position all the time -set showcmd " display incomplete commands -set incsearch " do incremental searching -set laststatus=2 " Always display the status line -set autowrite " Automatically :write before running commands -set modelines=0 " Disable modelines as a security precaution -set nomodeline - -" Switch syntax highlighting on, when the terminal has colors -" Also switch on highlighting the last used search pattern. -if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on") - syntax on -endif - -filetype plugin indent on - -augroup vimrcEx - autocmd! - - " When editing a file, always jump to the last known cursor position. - " Don't do it for commit messages, when the position is invalid, or when - " inside an event handler (happens when dropping a file on gvim). - autocmd BufReadPost * - \ if &ft != 'gitcommit' && line("'\"") > 0 && line("'\"") <= line("$") | - \ exe "normal g`\"" | - \ endif - - " Set syntax highlighting for specific file types - autocmd BufRead,BufNewFile *.md set filetype=markdown - autocmd BufRead,BufNewFile .{jscs,jshint,eslint}rc set filetype=json - autocmd BufRead,BufNewFile - \ aliases.local, - \zshenv.local,zlogin.local,zlogout.local,zshrc.local,zprofile.local, - \*/zsh/configs/* - \ set filetype=sh - autocmd BufRead,BufNewFile gitconfig.local set filetype=gitconfig - autocmd BufRead,BufNewFile tmux.conf.local set filetype=tmux - autocmd BufRead,BufNewFile vimrc.local set filetype=vim -augroup END - -" When the type of shell script is /bin/sh, assume a POSIX-compatible -" shell for syntax highlighting purposes. -let g:is_posix = 1 - -" Softtabs, 2 spaces -set tabstop=2 -set shiftwidth=2 -set shiftround -set expandtab - -" Display extra whitespace -set list listchars=tab:»·,trail:·,nbsp:· - -" Use one space, not two, after punctuation. -set nojoinspaces - -" Use Ripgrep vs grep -if executable('rg') - " Use rg over Grep - set grepprg=rg\ --color=never - - " Use rg in fzf for listing files. Lightning fast and respects .gitignore - let $FZF_DEFAULT_COMMAND = 'rg --files-with-matches --color=never --hidden ""' - - nnoremap \ :Ag -endif - -" Make it obvious where 80 characters is -set textwidth=80 -set colorcolumn=+1 - -" Numbers -set number -set numberwidth=5 - -" Switch between the last two files -nnoremap - -" Run commands that require an interactive shell -nnoremap r :RunInInteractiveShell - -" Treat
  • and

    tags like the block tags they are -let g:html_indent_tags = 'li\|p' - -" Open new split panes to right and bottom, which feels more natural -set splitbelow -set splitright - -" Quicker window movement -nnoremap j -nnoremap k -nnoremap h -nnoremap l - -" Map Ctrl + p to open fuzzy find (FZF) -nnoremap :Files - diff --git a/vim.nix b/vim.nix index edc0816..11f8df9 100644 --- a/vim.nix +++ b/vim.nix @@ -1,26 +1,21 @@ { config, pkgs, ... }: { - programs.vim = { + programs.neovim = { enable = true; + viAlias = true; + vimAlias = true; + defaultEditor = true; plugins = with pkgs.vimPlugins; [ vim-nix rust-vim fzf-vim sleuth + whitespace-nvim # ,t to trim whitespace + vimsence + vim-wordy #:Wordy [kind], :NoWordy + vim-pencil #:Pencil, :NoPencil + ctrlp-vim ]; - extraConfig = '' - source ${./rcfiles/vimrc} - ''; - }; - - programs.neovim = { - enable = true; - defaultEditor = true; - extraLuaConfig = '' - vim.opt.ignorecase = true -- search case insensitive - vim.opt.smartcase = true -- search matters if capital letter - vim.opt.inccommand = "split" -- "for incsearch while sub - vim.g.mapleader = "," - ''; + extraLuaConfig = (builtins.readFile ./rcfiles/neovim.lua); }; }