# My personal nvim configuration I made this public so I can easily clone without authentication, but since I treat this as a personal use only stuff, there can be some(read "a lot of") messy stuff. Much of this might have been selectively copy pasted from plugin repos. Those repos are obviously listed in plugin setup part. # Basic usage of this config Repo: [https://github.com/Szwendacz99/nvim](https://github.com/Szwendacz99/nvim) ### First Time Setup Installing system stuff (Fedora example): ```bash sudo dnf install \ neovim \ ripgrep \ fd-find \ nodejs-bash-language-server \ tree-sitter-cli \ wl-clipboard \ unifont-fonts.noarch pip install \ pynvim \ 'pylama[all]' \ flake8 \ jedi \ bandit \ yapf \ rope sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' ``` ##### ##### Inside vim ``` :PlugInstall :CocInstall coc-git coc-pyright coc-sh coc-json coc-css coc-tsserver coc-eslint coc-prettier coc-snippets coc-yaml ``` On Fedora there is need to make sure your system can display any unicode character. Hacked fonts are needed for filetype icons but there is also need for a dedicated package with unicode fonts (like unifont-fonts.noarch) that will have every character missing from default font used in Neovim editor. Link to gacked fonts: [https://www.nerdfonts.com/font-downloads](https://www.nerdfonts.com/font-downloads) ##### Optional stuff perl very basic lsp server: ```bash # Install perl module manager sudo dnf install perl-App-cpanminus # install language server module sudo cpanm PLS ``` ### Usage ##### Opened files navigation:
<leader> m m open minimap
<leader> m c close minimap
<leader> m f focus minimap
Ctrl w w Move to next splitted frame
Ctrl w <arrow> moving throught splitted frame
Ctrl w c close split
Ctrl w v split vertically
Ctrl w s split horizontally
Ctrl w x swap places of two splits
gtnext tab
gT previous tab
:tabnew Create new tab
Ctrl g t (when in file tree) open selected file in new tab
##### File explorer:
Ctrl+t Toggle file explorer when not focused on it
f Toggle filtering when focused on explorer
<leader> n Move focus to explorer
d Delete selected file
rn Rename file
c add file to clipboard
p paste (file) from clipboard
##### File searching / Telescope
<leader>ffFind files
<leader>fgLive grep
<leader>fbBuffers
<leader>fhHelp tags
Ctrl+qOpen search result list as a dedicated split (quickfix list) (will overwrite previous one created this way in current tab)
Ctrl+u Scroll preview up
Ctrl+d Scroll preview down
Ctrl+x Open selection as a split
Ctrl+v Open selection as a vsplit
Ctrl+t Open selection in new tab
##### Git stuff
Ctrl+g show current code chunk changes
Genreal git commands: ```bash :Git #Commands with dedicated display :Git # show nice interactive summary of whole git project state :Git mergetool, :Git difftool # load their changesets into the quickfix list :Git blame # this will nicely show \ # for every line in separate split # Useful shortcuts for blame mode: # o - jump to patch or blob in horizontal split # A, C, D - different display (lenght) modes # g? - other keybindings #other examples: :Git add . :Git commit ``` Nice single file diff viewer: ``` :Gdiffsplit ``` coc-git provides some commands for git: ```bash :CocCommand git. #examples: :CocCommand git.chunkUndo :CocCommand git.showCommit :CocCommand git.showBlameDoc ``` ##### Code editing stuff
w jump forward by one word
b jump backward by one word
<leader>rnrename element (function name, etc):
<leader>ftformat code
gd go to definition
gy go to type definition
gi go to implementation
gr go to references
:%s/^original.\*/replacement/gc regex replacing (c is for choice prompt, its optional)
Ctrl+f scroll down popup with docstring
Ctrl+b scroll up popup with docstring
ZZ same as :wq
Ctrl+q Visual block mode
##### Sessions To save **new** session on specific path, just use `:SaveSession`, then when opening nvim there, without arguments, the session will be restored.