commit 859a539d0c2a4c2ed37415ef2341d43b9210c254
Author: Rh17S15 <136891969+Rh17S15@users.noreply.github.com>
Date: Mon Sep 15 21:53:36 2025 +0200
Add files via upload
diff --git a/vim_tricks.md b/vim_tricks.md
new file mode 100644
index 0000000..280217f
--- /dev/null
+++ b/vim_tricks.md
@@ -0,0 +1,177 @@
+# Vim
+
+I just noted down some vim commands/ motions /concepts etc. that were previously unknown to me.
+I will probably make this more readable and consistent sometime. It's not complete as i am not finished learning vim.
+Basics like navigating with hjkl were omitted. If you're reading this to learn, start with the `:vimtutor`.
+
+
+#### Basic Commands
+
+- u undo
+- ctrl + r redo
+
+#### Makros
+
+- q to start recording
+- w assign w to recording
+- ... input key sequence
+- q to end recording
+- 85@w play recoding/makro 85 times
+
+#### Searching and Replacing
+
+- /test jump to test in current line
+- :\[range\]s/{pattern}/{string}/\[flags\] \[count\]
+- ????????????:%s/test/penis/g
+ - replace test with penis in whole file
+ - /g is for "global" - whole line
+ - % is the range -> entire file
+ - % == filename
+- If you changed the default case setting and you want to perform case sensitive search, use the `I` flag:
+ - :%s/test/penis/gi
+- You can match regex here too, just keep in mind to escape things like + -> \\+
+- more here:
+
+ ##### view search results
+- It is n for next and N for previous.
+
+ ##### jump to the next/previous instance of the current word
+- Put the cursor on a word and hit the \* key and you will jump to the next instance of that word.
+
+ The # key does the same, but it jumps to the previous instance of the word.
+
+#### Deleting until
+
+- dtc delete upto but **not** including *c*
+- dfc delete upto **and** including *c*
+- d$ delete until end of line
+- dG delete until end of file
+- dgg delete until start of file
+- di( delete in ()
+ - printf("test"); - "test" would be deleted
+- da( delete around (
+ - printf("test"); - ("test") would be deleted
+
+#### Comment/ Uncomment multiple lines
+
+Put your cursor on the first `#` character, press Ctrl V (or Ctrl Q for gVim), and go down until the last commented line and press x, that will delete all the `#` characters vertically.
+
+For commenting a block of text is almost the same:
+
+1. First, go to the first line you want to comment, press Ctrl V. This will put the editor in the `VISUAL BLOCK` mode.
+2. Then using the arrow key and select until the last line
+3. Now press Shift I, which will put the editor in `INSERT` mode and then press #. This will add a hash to the first line.
+4. Then press Esc (give it a second), and it will insert a `#` character on all other selected lines.
+
+#### .vimrc customization
+
+add these two lines to be able to customize your vimrc while still retaining the defaults
+
+- unlet! skip_defaults_vim
+- source $VIMRUNTIME/defaults.vim
+- Comment lines out with "
+
+#### Setting line numbers
+
+- :set number and :set nonumber respectively for normal line numbers
+ - toggling is possible with :set number!
+- :set relativenumber (:set rnu) and :set norelativenumber (:set nornu) respectively for relative line numbers
+ - toggling is possible with :set relativenumber! (:set rnu!)
+- When both are active at the same time (:set number relativenumber (:set number rnu)) Hybrid line numbering is active
+ - Hybrid line numbering is the same as the relative line numbering with the only difference being that the current line instead of showing `0` shows its absolute line number.
+- You can add those in your .vimrc to set those as default and not have to change that every time you open vim
+
+#### A Command for Saving, Compiling and Running the Current C Code
+
+Add this to your .vimrc:
+
+- command M w | !gcc % -o %<.o && ./%<.o
+
+to run it just type :M in vim
+
+or make a Custom key Combination with the leader key (, + m):
+
+- noremap m :w | !gcc % -o %<.o && ./%<.o
+
+#### A key Combination for viewing the currently open file in Okular
+
+- this is useful for writing markdown files and viewing them with the images, just press , + o
+- noremap o :w | :silent !okular % &
+
+#### Leader Key
+
+Is by default / but can be changed with:
+
+- let mapleader=","
+ here i have set it to ,
+
+ Vim waits for 1000 milliseconds after the ``
+ key has been pressed, so if you take too long to press the next key in
+ the sequence it won't be matched. This timeout can be changed by using `:set timeoutlen` to set specific value.
+
+#### Change Tab width
+
+in your .vimrc
+
+- `set tabstop=4`
+
+ will set the tab width equal to 4 spaces
+
+#### indent/ unindent lines
+
+**Normal mode**
+
+- \>> indent the current line
+- 3>> indent the current line and two lines below (same as 2>j)
+- \>k indent the current line and the line above (same as 1>k or >1k)
+- << unindent the current line
+- 5<< unindent the current line and four lines below (same as 4 and <. For example, >} indents till the end of the paragraph.
+
+**Visual mode**
+
+- \> indent the visually selected lines once
+- 3> indent the visually selected lines three times
+- < unindent the visually selected lines once
+- = auto indent code
+
+#### be able to use bash aliases in vims ! mode
+
+Bash doesn’t load your .bashrc unless it’s interactive. To make the setting permanent, add `set shellcmdflag=-ic` to the end of your `.vimrc` file
+
+#### resize vim correctly with the kitty terminal emulator
+
+- `set term=kitty`
+
+#### Vim motions
+
+- Use `w` (**w**ord) command to jump to the beginning of the next **w**ord
+- Use `b` (**b**ack) to jump to the beginning of a word backwards
+- Use `e` (**e**nd) to jump to the end of a word
+- Use `ge` to jump to the end of a word backwards
+
+- `0`: Moves to the **first character of a line**
+- `^`: Moves to the **first non-blank character of a line**
+- `$`: Moves to the **end of a line**
+- `g_`: Moves to the **non-blank character at the end of a line**
+
+- `}` jumps entire paragraphs **downwards**
+- `{` similarly but **upwards**
+
+#### Vim tabs
+
+open more than one file at startup using the `-p` option. If you want to open three files in separate tabs, you’d use this syntax:
+
+`vim -p file1 file2 file3`
+
+- Or in Normal mode run `:tabnew filename`
+- You can switch between tabs using `:tabn` and `:tabp`, or you can use `gt`
+ while you’re in normal mode.
+- If you have a lot of tabs open, you can use `:tabfirst`, or just `:tabfir`, to jump to the first tab, and `:tablast` to jump to the last tab that’s open.
+- Close all tabs: `:qa`
+- To save work in all tabs and quit: `:wqa`