From 22856a22239721de131d7527aab9f15a58f513eb Mon Sep 17 00:00:00 2001 From: z3rOR0ne Date: Wed, 7 Sep 2022 01:34:54 -0700 Subject: [PATCH] :construction: Vastly revamped nvim with fzf and ripgrep --- bashrc.txt | 1 - nvim/lua/config.lua | 13 +++ nvim/lua/keybindings.lua | 4 + nvim/lua/packages.lua | 3 +- nvim_custom_keys.txt | 167 +++++++++++++++++++++++++++++++++++++++ updates.txt | 20 +---- zshrc.txt | 3 - 7 files changed, 189 insertions(+), 22 deletions(-) create mode 100644 nvim_custom_keys.txt diff --git a/bashrc.txt b/bashrc.txt index 4fbc5100..5dc50604 100644 --- a/bashrc.txt +++ b/bashrc.txt @@ -184,7 +184,6 @@ export PS1='\[\033[01;34m\][\u@\h\[\033[01;37m\] \W\[\033[01;34m\]]\$\033[01;34m eval "$(thefuck --alias)" export PATH="$PATH:$GOPATH/bin:/home/brian/scripts:/home/brian/.local/bin:/home/brian/.local/share/nvim/lsp_servers" export GREP_COLORS='ms=01;34' -[ -f ~/.fzf.bash ] && source ~/.fzf.bash # icons-in-terminal # source ~/.local/share/icons-in-terminal/icons_bash.sh diff --git a/nvim/lua/config.lua b/nvim/lua/config.lua index 608e4125..a5dccb25 100644 --- a/nvim/lua/config.lua +++ b/nvim/lua/config.lua @@ -99,6 +99,19 @@ end -- Enable quick-lint-js require('lspconfig/quick_lint_js').setup {} +-- Enable use of ripgrep +require('nvim-ripgrep').setup{ + runner = require('nvim-ripgrep.run').ripgrep, -- grep command + prompt = "❯ ", -- prompt + window = { + width = 0.8, + border = "rounded", + }; + open_qf_fn = function() + return vim.api.nvim_command('copen') + end, +} + -- quick-lint-js detects errors in insert mode vim.lsp.handlers['textDocument/publishDiagnostics'] = vim.lsp.with( vim.lsp.diagnostic.on_publish_diagnostics, { diff --git a/nvim/lua/keybindings.lua b/nvim/lua/keybindings.lua index 44661888..887c85fa 100644 --- a/nvim/lua/keybindings.lua +++ b/nvim/lua/keybindings.lua @@ -14,6 +14,9 @@ keymap('n', '', ':tabnext', {}) -- Use ctrl- [hl] to select the active split! keymap('n', '', ':wincmd h', {}) keymap('n', '', ':wincmd l', {}) +-- open fzf +keymap('n', '', ':Files', {}) + -- Toggle NERDCommenter with Ctrl + c vim.cmd[[:map NERDCommenterToggle]] @@ -52,3 +55,4 @@ vim.cmd[[noremap k (v:count == 0 ? 'gk' : 'k')]] -- Toggle English spellcheck with F11 vim.cmd[[nnoremap :set spell!]] vim.cmd[[inoremap :set spell!]] + diff --git a/nvim/lua/packages.lua b/nvim/lua/packages.lua index f90d9e6f..2ce9c8a3 100644 --- a/nvim/lua/packages.lua +++ b/nvim/lua/packages.lua @@ -38,7 +38,8 @@ require('packer').startup(function() use 'mattn/emmet-vim' use 'norcalli/nvim-colorizer.lua' use 'airblade/vim-gitgutter' - use 'ctrlpvim/ctrlp.vim' -- fuzzy find files + -- use 'ctrlpvim/ctrlp.vim' -- decent fuzzy find files + use 'junegunn/fzf.vim' -- better fuzzy find files use 'preservim/nerdcommenter' use 'prettier/vim-prettier' use {'lewis6991/gitsigns.nvim'} diff --git a/nvim_custom_keys.txt b/nvim_custom_keys.txt new file mode 100644 index 00000000..be1e0ee7 --- /dev/null +++ b/nvim_custom_keys.txt @@ -0,0 +1,167 @@ +NOTES ON NEOVIM AND MY PERSONAL NEOVIM WORKFLOW + +FOR OFFICIAL DOCUMENTATION OF NEOVIM, PLEASE VISIT THEIR GITHUB: https://github.com/neovim/neovim + +I have created this small txt file to document my basic neoneovim work flow +It is combined with notes about my espanso keybindings, which are meant to aid in the workflow +Keep in mind these are specific to my neovim setup and will definitely not work in all neovim setups + +-- Standard keybindings (all neovim) + +NORMAL MODE + +h - go one character left (prepend with a number to go that many characters) +j - go one character down (prepend with a number to go that many characters) +k - go one character up (prepend with a number to go that many characters) +l - go one character right (prepend with a number to go that many characters) +w - go to the right to the beginning of the next word (delimited by spaces) +b or shift b - go to the left to the beginning of the last word (delimited by spaces) +e or shift e - go to the right to the ending of the next word (delimited by spaces) +0 - go to beginning of line (prepend with a number to go that many characters) +$ - go to the end of the line (prepend with a number to go that many characters) +gg - go to top of the page +shift + g - go to the bottom of the page +ctrl u -page up +ctrl d - page down +/ - forwards slash searches foor the word/term you wish to jump to, just press enter once it is highlighted +:w - writes (my nneovim setup as autosave, but it's still a good feature to have) +:q - quits neovim (first neovim command to learn) +u - undoes last change (can be used with prepended numbers depending on how many steps you want to undo) +ctrl + r - reverts changes over after unintentional undoing (undoes the last undo commands, also can be prepended by a number) + +d - beginning d keybinding, can be combined with many of the above commands (it cuts, so you can paste it using p keybinding) +(can be prepended by a number, and multiples the amount of words/lines is deleted/cut) +dh - delete word one back (equivalent to db) +dj - delete one line down +dk - delete one line up +dl - delete word one forward (equivlanet to dw) +dd - delete current line +d0 - delete from current cursor position to the beginning of the line +d$ - delete from the current cursor position to the end of the line +dgg - delete from the current cursor position to the beginning of the document +dG - delete from the current position to the end of the document +dw - delete word on current position +de - delete current cursor position to the end of the word +db - delete current cursor position to the beginning of the word +x - delete character under current cursor position + +interesting use case: +di( - will delete everything encapsulated in the following parenthesis +di{ - will delete everything encapsulated in the following curly brackets +di[ - will delte everything encapsulated in the following square brackets + +y - beginning y keybinding, yanks or copies character or word for pasting elsewhere using the p keybinding +(can be prepended by a number, and multiples the amount of words/lines to be copied) +yh - copies one word back (equivalent to yb) +yj - copies one line down +yk - copies one line up +yl - copies one word forward (equivlanet to ye) +ye - copies one word forward +yb - copies one word back +yy - copies entire line +yw - copies entire word +y0 - copies from current cursor position to beginning of line +y$ - copies from current cursor position to end of line +yG - copies from current cursor position to the end of document +ygg - copies from current cursor position to the beginning of document + +FROM NORMAL MODE, ENTERING OTHER MODES +i - enter INSERT mode at the current cursor position +a - enter INSERT mode at the following cursor position (appending) +shift + i - enter INSERT mode at the beginning of the line +shift + a - enter INSERT mode at the end of the line +v - enter VISUAL mode +shift -v enter VISUAL mode and select the current line +ctrl + v - enter VISUAL BLOCK MODE + +NO MATTER WHAT MODE YOU'RE IN, you can always: + to return to NORMAL MODE + +INSERT MODE + +tab - configured for four spaces in my case + +VISUAL MODE + +h,j,k,l,g,shift+g,0,$ all apply, it simply highlights them +and you can use standard and custom commands here that would normally apply in NORMAL mode + +CTRL + V ENTERS VISUAL BLOCK MODE +I only really use this for muliple commenting out of lines +(ctrl + v + j or k and then ctrl+c to comment out code) + +--Custom Keybindings + +NORMAL MODE + +CTRL + x removes highlighting from previous search results + +CTRL + c Comment out line (use in conjunction with CTRL + V for multiple lines) + +CTRL + j/k Enter Multi-Cursor (red cursor is NORMAL MODE< yellow cursor is INSERT MODE) (hit to return to NORMAL MODE - might require hitting multiple times) + +SHIFT + m Open up Markdown Preview for .md files (mainly used for README.md) + +CTRL + p Open fuzzy file finder like search application + +:Neoformat Formats most code options (don't use with .c or .cpp files as there is another application i use for that) + +cp alias for using ClangFormat C/C++ Formatter + +CTRL + b : Open Nneovim Tree +in Nneovim Tree there are specific keybindings (most standard neovim keybindings work here as well): +a - creates new file (keep adding slashes to create directories or don't for regular files) +d - deletes file (hit y when prompted) +r - renames file (enter new name and hit enter) + +/ search for a word in whichever document you have Open + +CTRL + v open file in Nneovim Tree in new vertical workspace +(if more than 2 are open, Nneovim will ask which one you wish to open it next to, A or B or C etc) + +CTRL + h Navigate to one vertical window to the left +CTRL + l Navigate to one vertical window to the right + +CTRL + e to adjust window width (h and l will adjust width, just hit enter afterwards to adjust, opening and closing nneovim tree readjusts back to defaults) + +CTRL + t open new tab + +ALT + or goes to next tab + +ALT + or SHIFT + goes to previous tab + +SHIFT + S Aliased to global search and replace + +SHIFT + T Runs jester unit tester on appropriate .test.js files + +F11 Toggle Spellchecker + +-- INSERT MODE + +ii - equivaent to key (return to normal mode from insert mode) + +-- ESPANSO BASED commands +NOTE: Espanso can be used in conjunction for some powerful aliases in neovim (as well as other applications) +FURTHER NOTATION: Please note that espanso is capabale of a lot more than is featured here and I highly recommend coming up with further expamples as it has the potential to greatly increase workflow speed +SEE: https://espanso.org/ + +Here are just some of my favorite expanded texts +In NeoVim's INSERT MODE, simply type + +:command-prepended-by-colon - expands to this + +:cll - console.log() +:cle - console.error() +:clt - console.table() +:func - function () {} +:def - def(): +:fn - pub fn () {} +:for - for (;;) {} +:while - while () {} +:do - do {} while () +:if - if () {} +:elif - else if () {} +:else - else {} +:try - try {} catch(error) {} +:inc - #include +:$ - `${}` diff --git a/updates.txt b/updates.txt index 9187cf65..0d027696 100644 --- a/updates.txt +++ b/updates.txt @@ -27,22 +27,8 @@ https://www.itechtics.com/windows-10-download-iso/ To understand google-font-installer(gfi): visit: https://github.com/lordgiotto/google-font-installer -set a $PHONE env by putting your number into $HOME/.phone_number for textme script to work +create a .n_hidden file for xh and ph scripts (see scripts, you'll know what to do) -ThinkorSwim (once again) broke due to a java update, their installer script doesn't really work anymore, so never uninstall I guess? anywho, here's what you have to do now if it doesn't open: +Make sure you installed fzf from your official package manager as this will allow you to use it with nvim: -paru zulu-11-bin - -archlinux-java status - -doas archlinux-java set zulu-11 - -And go ahead and open it up to test - -Fixed inkscape (uncomment ignored packages (inkscape and popplers) from /etc/pacman.conf) - -doas ln /usr/lib/inkscape/libinkscape_base.so /usr/lib/libinkscape_base.so - -Install espeak - -paru espeak +doas pacman -S fzf diff --git a/zshrc.txt b/zshrc.txt index 5d91ee4a..024ccc6b 100644 --- a/zshrc.txt +++ b/zshrc.txt @@ -55,9 +55,6 @@ export PATH="$PATH:$GOPATH/bin:/home/brian/scripts:/home/brian/.local/bin:/home/ # Configure grep output colors export GREP_COLORS='ms=01;34' -# Enable fuzzy file finder -[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh - # Don't show completion until at least 1 character has been typed zstyle ':autocomplete:*' min-input 1