Home / Notes / vi & vim Notes ======================== 1. CVS commit the current file: :!cvs commit -m '[commit message]' % 2. Execute a command and read its input into the current buffer: :r![command] 3. Hard wrap text to 80 columns: a. Set the text width to 80 columns: :set textwidth=80 or :set tw=80 b. To format the entire file, go to the start of the file (:gg), and then: :gqG To format the current line only use :gq$ To format the current paragraph only use :gq} c. Alternatively, use :%!fold -w [col] Sources: http://mark.stosberg.com/Tech/text_editor_review.html#vim https://stackoverflow.com/questions/3033423/ https://vim.works/2019/03/16/wrapping-text-in-vim/ 4. Split a window and edit two files a. :sp or <CTRL>ws (horizontal split, new window on the top :vs or <CTRL>vw (vertical split, new window is on the left) b. <CTRL>ww (move to new window) c. :edit [file] To resize a split: <CTRL>w+ (increase size) <CTRL>w- (decrease size) To close a split: :only or :q or <CTRL>wo Sources: https://vim.works/2019/03/03/split-windows-in-vim/ https://vi.stackexchange.com/questions/64/ 5. Spell checking the current file: :!aspell -c % 6. Enable a custom dictionary for additional words for spelling mode: $ mkdir -p ~/.vim/spell $ touch ~/.vim/spell/en.utf-8.add From: https://codeyarns.com/tech/2015-09-30-how-to-make-spellfile-in-vim.html 7. Yank multiple lines [num lines]Y [num lines]yy For example, '3yy' would yank the current line and the next two lines. From: https://vi.stackexchange.com/questions/27148 https://superuser.com/questions/234317 8. Copy or cut the next word: Copy / yank - yiw Cut - ciw From: https://stackoverflow.com/questions/7797068/ 9. Delete all text to the end of the file: From current line - dG From a particular line - :[line number],$d 10. Replace all occurrences of 'old' with 'new': :%s/old/new/g 11. Navigation: 0 - move to the first column of the current line ^ - move to the first non-space/tab character of the current line $ - move to the last character of the current line w - move to the next word, exclusive of punctuation W - move to the next word, inclusive of punctuation b - move back one word, exclusive of punctuation B - move back one word, inclusive of punctuation e - move to the end of the current word, exclusive of punctuation E - move to the end of the current word, inclusive of punctuation H - move to the top of the current screen M - move to the middle of the current screen L - move to the bottom of the current screen 1G (or gg) - move to the first line of the document G - move to the last line of the document CTRL-F - move forward one screen CTRL-B - move back one screen From: https://vermaden.wordpress.com/2024/09/23/ghost-in-the-shell-part-8-use-vi-editor/ https://m4xshen.dev/posts/vim-basic-commands https://www.thegeekdiary.com/basic-vi-commands-cheat-sheet/ https://www.ungerhu.com/jxh/vi.html https://wiki.arahant.com/Wiki.jsp?page=Vi https://levelup.gitconnected.com/vim-is-not-about-speed-88968ae4283c?gi=2317b00898a3