diff --git a/README.md b/README.md index 41a33e2..09ffd35 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,10 @@ 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 +**Tested only with rootless podman, docker might require additional setup, +or proper in-container user setup** -**Tested only with rootless podman, docker might require additional setup, or proper in-container user setup** +## Basic usage of this config ### Host system Setup @@ -21,7 +22,13 @@ sudo dnf install -y \ gnu-free-mono-fonts ``` -##### Image management: +### Image management + +get latest version from ghcr: + +```bash +podman pull ghcr.io/szwendacz99/neovim:latest +``` build: @@ -33,7 +40,8 @@ podman build -t neovim ./nvim pack to file with high compression: ```bash -podman save localhost/neovim:latest -o /dev/stdout | xz -z -T 8 -c > neovim$(date +"%Y-%m-%dT%H-%M").tar.xz +podman save localhost/neovim:latest -o /dev/stdout | \ + xz -z -T 8 -c > neovim$(date +"%Y-%m-%dT%H-%M").tar.xz ``` import file back to local registry: @@ -42,8 +50,7 @@ import file back to local registry: podman load -i ./neovim.tar.xz ``` -##### Image usage examples - +### Image usage examples basic startup for editing current folder: @@ -87,7 +94,9 @@ function nvim() { ``` -If there is need to make more persistent container that will also start with bash so you can install project dependencies and stuff, then use function below. +If there is need to make more persistent container that will also start with +bash so you can install project dependencies and stuff, +then use function below. ```bash function nvim_project() { @@ -122,31 +131,37 @@ function nvim_project() { ``` -\*\*This container will not be removed on exit, you can reenter later with\*\* +This container will not be removed on exit, you can reenter later with: ```bash podman start -ai {project/container name} ``` -##### Inside vim +## Inside vim -``` +```vim # manage plugins: :Lazy ``` -There is need to make sure your system can display (almost) any unicode character. Hacked fonts may be 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: +There is need to make sure your system can display (almost) any unicode +character. Hacked fonts may be 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](https://www.nerdfonts.com/font-downloads) -#### General info +### General info -##### Mason: +#### Mason -Mason installs stuff in `.local/share/nvim/mason/packages` so they are independent from system stuff, like pip installed python packages. All that is saved in image, so that is why image is so heavy. +Mason installs stuff in `.local/share/nvim/mason/packages` so they are +independent from system stuff, like pip installed python packages. +All that is saved in image, so that is why image is so heavy. -### Usage +### Commands and keys -##### root perms when editing +#### root perms when editing ```bash # Re-open a current file with sudo @@ -162,92 +177,72 @@ Mason installs stuff in `.local/share/nvim/mason/packages` so they are independe :SudaWrite /etc/profile ``` -##### General +#### General -
<leader>l -disable (search) highlighting
+|keys|action| +|----|----| +|\l|disable (search) highlighting| -##### Opened files navigation: +#### 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 -
+|keys|action| +|----|----| +|\ m m| open minimap| +|\ m c | close minimap| +|\ m f | focus minimap| +|Ctrl w w| Move to next splitted frame| +|Ctrl w \ | 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| +|gt |next 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: +#### 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 -
+|keys|action| +|----|----| +|Ctrl+t | Toggle file explorer when not focused on it| +|f | Toggle filtering when focused on explorer| +|\ 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 +#### 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 -
+|keys|action| +|----|----| +|\ff |Find files| +|\fg| Live grep| +|\fb| Buffers| +|\fh |Help tags| +|Ctrl+q| Open 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 +#### 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 -
+|keys|action| +|----|----| +Ctrl+g show current code chunk changes +|\hb | show full git blame of current line (double use to enter displayed diff)| +|\hD |show splitted blame diff (double use to enter displayed diff)| +|\hd| show splitted diff| +|\hr| reset hunk| +|\hR| reset whole buffer| +|\td| toggle deleted | Genreal git commands: @@ -287,57 +282,55 @@ GitSings provides some commands for displaying git stuff: :Gitsigns toggle_signs ``` -##### Code editing stuff +#### 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 -
+||| +|----|----| +|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 +#### LSP usage +||| +|----|----| +|\q | open list with diagnostics postions| +|\e |open diagnostics floating window| +|\[d | next diagnostic| +|\] | previous diagnostic| +|\k| open hoover box and enter it| +|\rn |rename element (function name, etc)| +|\f| format file| +|gd |go to definition| +|gD| go to declaration| +|\D| go to type definition| +|gi| go to implementation| +|gr| go to references| +|Ctrl+f |scroll down popup with docstring| +|Ctrl+b |scroll up popup with docstring| +|\wa |add workspace folder| +|\wr |remove workspace folder| +|\wl | list workspace folders | -
<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 -
+#### LSP diagnostics (trouble.nvim) -##### LSP diagnostics, etc: +||| +|----|----| +|\xx| Open diagnostics window| +|\xw |workspace diagnostics| +|\xd |document diagnostics| +|\xl| loclist| +|\xq |quickfix| +|gR | lsp references | +#### Sessions -
<leader>xx -Open diagnostics window -
<leader>xwworkspace diagnostics -
<leader>xddocument diagnostics -
<leader>xlloclist
<leader>xqquickfix
gR -lsp references -
+To save new session on specific path, just use :SaveSession, then when opening nvim there, without arguments, the session will be restored. -##### Sessions +#### Notifications -To save **new** session on specific path, just use `:SaveSession`, then when opening nvim there, without arguments, the session will be restored. - -##### Notifications - -
:Notifications -show recent notifications -
:Telescope notify -show recent notifications in telescope gui
+||| +|----|----| +|:Notifications |show recent notifications| +|:Telescope notify | show recent notifications in telescope gui|