No description
Find a file
2022-12-25 16:46:21 +01:00
lua add jedi-language-server config 2022-12-25 16:46:21 +01:00
.gitignore change plugin manager to packer, add lsp-signature plugin 2022-12-21 14:25:50 +01:00
init.vim change theme 2022-12-22 13:37:38 +01:00
LICENSE Initial commit 2022-10-05 19:20:32 +00:00
README.md change plugin manager to packer, add lsp-signature plugin 2022-12-21 14:25:50 +01:00

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

First Time Setup

Installing system stuff (Fedora example):

sudo dnf install \
	python3-pip \
	neovim \
    ripgrep \
    fd-find \
    npm \
    tree-sitter-cli \
    wl-clipboard \
    dejavu-fonts-all \
    gnu-free-mono-fonts \
    clang \
    perl-App-cpanminus # optional, allow perlnavigator lsp working properly

pip install pynvim

git clone --depth 1 https://github.com/wbthomason/packer.nvim\
 ~/.local/share/nvim/site/pack/packer/start/packer.nvim
Inside vim
:PackerInstall
:PackerSync

# installing packages, which mason-lspconfig cannot autoinstall (?)
:MasonInstall phpcs

# tree-sitter setup
:TSInstall html dockerfile cpp css markdown c gitcommit bash phpdoc comment python http php regex json5 lua gitattributes gitignore json git_rebase javascript perl sql 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 hacked fonts:
https://www.nerdfonts.com/font-downloads

General info

Mason:

Mason installs stuff in .local/share/nvim/mason/packages so they are independent from system stuff, like pip installed python packages.

Usage

root perms when editing
# Re-open a current file with sudo
:SudaRead
# Open /etc/sudoers with sudo
:SudaRead /etc/sudoers
# Forcedly save a current file with sudo
:SudaWrite
# Write contents to /etc/profile
:SudaWrite /etc/profile
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 Ctrl+t (when in file tree) open selected file in new tab
:bd close buffer
:bnext next buffer
:b3 switch to buffer 3
:buffers list buffers and their numbers
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
<leader>hb show full git blame of current line (double use to enter displayed diff)
<leader>hDshow splitted blame diff (double use to enter displayed diff)
<leader>hdshow splitted diff
<leader>hr reset hunk
<leader>hRreset whole buffer
<leader>tdtoggle deleted

Genreal git commands:

:Git <command>

#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

GitSings provides some commands for displaying git stuff:

:Gitsigns *

#examples:
:Gitsigns toggle_word_diff
:Gitsigns toggle_linehl
:Gitsigns toggle_numhl
:Gitsigns toggle_signs
Code editing stuff
w jump forward by one word
b jump backward by one word
:%s/^original.\*/replacement/gc regex replacing (c is for choice prompt, its optional)
Ctrl+q Visual block select mode
LSP usage
<space>q open list with diagnostics postions
<space>e open diagnostics floating window
\[d next diagnostic
\] previous diagnostic
<leader>k open hoover box and enter it
<leader>rnrename element (function name, etc):
<leader>fformat file
gdgo to definition
gDgo to declaration
<space>Dgo to type definition
gigo to implementation
grgo to references
Ctrl+fscroll down popup with docstring
Ctrl+bscroll up popup with docstring
<leader>wa add workspace folder
<leader>wr remove workspace folder
<leader>wl list workspace folders
Sessions

To save new session on specific path, just use :SaveSession, then when opening nvim there, without arguments, the session will be restored.