Difference between revisions of "Vim"

From Things and Stuff Wiki
Jump to navigation Jump to search
 
(139 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
 
== General ==
 
== General ==
Vim is a powerful text editor. Keystrokes can be chained together to combine actions, movements and selections into coolness. Folk using Vim 20 years still don't know it all. See also [[Emacs]] (and take care of your wrists (and posture)).
+
* [https://www.vim.org/ Vim] - a highly configurable text editor for efficiently creating and changing any kind of text. It is included as "vi" with most UNIX systems and with Apple OS X. Vim is rock stable and is continuously being developed to become even better. Among its features are: persistent, multi-level undo tree; extensive plugin system; support for hundreds of programming languages and file formats    powerful search and replace; integrates with many tools
  
todo; big refactor to rearrange commands into motion, action, etc.
+
Keystrokes can be chained together to combine actions, movements and selections into coolness. Folk using Vim 20 years still don't know it all. See also [[Emacs]] (though take care of your wrists).
 +
 
 +
 
 +
* [https://vimhelp.org/ Vim: help.txt] - an HTML version of the Vim help pages, current as of Vim 8.1.1170. They are kept up-to-date automatically from the Vim source repository. Also included is the Vim FAQ, kept up to date from its github repository.
 +
 
 +
 
 +
F1
 +
  # open vim help in a split window
  
See also [[Documents]]
 
  
 
* [http://vim.wikia.com/wiki/Vim_Tips_Wiki Vim Tips Wiki]
 
* [http://vim.wikia.com/wiki/Vim_Tips_Wiki Vim Tips Wiki]
Line 12: Line 18:
 
* [http://vim.begin-site.org/ The Vim Beginners’ Site]
 
* [http://vim.begin-site.org/ The Vim Beginners’ Site]
  
* http://vimdoc.sourceforge.net/htmldoc
 
  
F1
+
* https://github.com/liuchengxu/vim-which-key - shows keybindings in popup
  # open vim help in a split window
+
 
 +
* https://github.com/sunaku/vim-shortcut - Discoverable & searchable shortcuts for (Neo)Vim
 +
 
  
=== Quick ===
+
=== Reference ===
 
* [https://learnxinyminutes.com/docs/vim/ Learn X in Y minutes / Where X=vim]
 
* [https://learnxinyminutes.com/docs/vim/ Learn X in Y minutes / Where X=vim]
  
  
* [http://vim.rtorr.com/ Vim Cheat Sheet]
+
* [https://cheatsheets.zip/vim Vim Cheat Sheet & Quick Reference] - A useful collection of Vim 8.2 quick reference cheat sheets to help you learn vim editor faster.
 +
** https://github.com/Fechin/reference
 +
 
 +
 
 +
* [https://www.reddit.com/r/vim/comments/n6qfu2/update_my_vim_cheatsheet_static_printable/ UPDATE: my vim cheatsheet, static printable version(dark version in comments) : vim]
 +
 
 +
 
 +
* [http://vim.rtorr.com/ Vim Cheat Sheet] - responsive
 +
** https://github.com/rtorr/vim-cheat-sheet
  
 
* [http://tnerual.eriogerg.free.fr/vimqrc.html Vim Quick Reference Card]
 
* [http://tnerual.eriogerg.free.fr/vimqrc.html Vim Quick Reference Card]
  
 
* [https://www.cmrr.umn.edu/~strupp/vim-3.0.refcard.html VIM Reference Card]
 
* [https://www.cmrr.umn.edu/~strupp/vim-3.0.refcard.html VIM Reference Card]
 +
 +
 +
* [https://codeyarns.com/tech/2011-07-29-vim-chart-of-color-names.html#gsc.tab=0 Code Yarns – Vim: Chart of Color Names]
  
  
Line 33: Line 51:
  
 
* [http://zzapper.co.uk/vimtips.html Best of Vim Tips by zzapper]
 
* [http://zzapper.co.uk/vimtips.html Best of Vim Tips by zzapper]
 +
 +
 +
* https://github.com/StewAlexander-com/VIM-Awesome-Cheatsheet - Cheatsheet for Vim
 +
  
  
Line 41: Line 63:
 
* https://github.com/lifepillar/vim-cheat40 - a foldable extensible 40-column cheat sheet that you may open in Vim by pressing <leader>? (the mapping is customizable, of course). Mappings and commands are organized like the menus of a GUI app: there is a File section, an Edit section, a View section, and so on. For each item the description comes first, because one typically wants to find how to execute a task, not what the meaning of a key sequence is (there is Vim's help for that). Syntax coloring and the use of conceal keep the cheat sheet clutter-free and easy to read.
 
* https://github.com/lifepillar/vim-cheat40 - a foldable extensible 40-column cheat sheet that you may open in Vim by pressing <leader>? (the mapping is customizable, of course). Mappings and commands are organized like the menus of a GUI app: there is a File section, an Edit section, a View section, and so on. For each item the description comes first, because one typically wants to find how to execute a task, not what the meaning of a key sequence is (there is Vim's help for that). Syntax coloring and the use of conceal keep the cheat sheet clutter-free and easy to read.
  
=== Articles ===
 
* [http://www.moolenaar.net/habits.html Seven habits of effective text editing]
 
  
* [http://spaceandtim.es/posts/the-invisible-interface The Invisible Interface] [https://github.com/nelstrom/vim-cutlass] (xx is with script)
 
* [http://csswizardry.com/2014/06/vim-for-people-who-think-things-like-vim-are-weird-and-hard/ Vim for people who think things like Vim are weird and hard] [https://news.ycombinator.com/item?id=7943575]
 
* [http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/ Learn Vim Progressively]
 
 
* [http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118 Your problem with Vim is that you don't grok vi.]
 
* [http://yanpritzker.com/2011/12/16/learn-to-speak-vim-verbs-nouns-and-modifiers/ Learn to speak vim – verbs, nouns, and modifiers!]
 
* [http://blog.sanctum.geek.nz/vim-anti-patterns/ Vim anti-patterns] [http://news.ycombinator.com/item?id=3563292] [https://news.ycombinator.com/item?id=12643887]
 
* [http://kevinw.github.com/2010/12/15/this-is-your-brain-on-vim/ This is Your Brain on Vim] - 15 Dec 2010
 
* [http://www.terminally-incoherent.com/blog/2012/03/21/why-vim/ Why Vim?]
 
* [http://mislav.uniqpath.com/2011/12/vim-revisited/ Vim: revisited]
 
 
* [http://vimhelp.appspot.com/vim_faq.txt.html vim_faq.txt] [https://news.ycombinator.com/item?id=8263171]
 
* [https://github.com/mhinz/vim-galore Vim Galore] [https://news.ycombinator.com/item?id=10857032]
 
* [https://web.archive.org/web/20161025061741/http://www.bestofvim.com/ :best of Vim] - Showcasing the top Vim plugins, tips and tricks.
 
 
 
 
* [http://www.binpress.com/blog/2014/11/19/vim-creator-bram-moolenaar-interview/ 10 Questions with Vim’s creator, Bram Moolenaar] [https://news.ycombinator.com/item?id=8632405]
 
 
* [http://jeetworks.org/vim-making-those-arrow-keys-work-for-you-or-why-the-anti-arrow-key-propoganda-is-wrong/ Vim: Making Those Arrow Keys Work for You (Or Why the Anti-Arrow-Key Propoganda is Wrong) – Jeet Sukumaran]
 
  
  
 +
* https://gist.github.com/johnnymillergh/a45b557af27fcbf8880172c3ece81726#file-vim-cheatsheet-md
 +
 +
 +
==== Images ====
 +
* [https://www.reddit.com/r/vim/comments/jrasii/vim_cheatsheet_w_q/ Vim cheatsheet w/ Q : vim]
  
 +
* [http://michael.peopleofhonoronly.com/vim/vim_cheat_sheet_for_programmers_screen.png Cheatsheet for programmers] - Part of the deep end!
  
=== Images ===
 
* [http://michael.peopleofhonoronly.com/vim/vim_cheat_sheet_for_programmers_screen.png Cheatsheet for programmers] - Part of the deep end!
 
 
* [http://www.viemu.com/vi-vim-cheat-sheet.gif vi/vim graphics cheatsheet]  kinda reduced o the above ([http://2.bp.blogspot.com/-EGj0mPw8mU8/TwzVYJtawCI/AAAAAAAAAw4/Kf5eG_kTyf0/s1600/vi-vim_cheat_sheet.png] w/ black back)
 
* [http://www.viemu.com/vi-vim-cheat-sheet.gif vi/vim graphics cheatsheet]  kinda reduced o the above ([http://2.bp.blogspot.com/-EGj0mPw8mU8/TwzVYJtawCI/AAAAAAAAAw4/Kf5eG_kTyf0/s1600/vi-vim_cheat_sheet.png] w/ black back)
  
Line 78: Line 82:
 
* https://twitter.com/vimgifs
 
* https://twitter.com/vimgifs
  
=== Video ===
+
=== Training ===
* YouTube: [https://www.youtube.com/watch?v=jwaj8JhO5bQ a rubbish tutorial for the text editor vi / vim] - funny basic
+
* [http://www.openvim.com/ OpenVim] - a web-based project to let people quickly have a taste what kind of an editor Vim is. Vim is considered to be very useful but can feel devastatingly opaque at first. Hopefully this tutorial makes people feel more comfortable to give it a chance. OpenVim is based on a custom engine that interprets vim commands. Fun fact: the engine operates directly on the dom but can be easily refactored to a model that is not view-dependent.
  
  
* YouTube: [http://www.youtube.com/watch?v=eX9m3g5J-XA 7 Habits For Effective Text Editing 2.0] - "A large percentage of time behind the computer screen is spent on editing text. Investing a little time in learning more efficient ways to use a text editor pays itself back fairly quickly. This presentation will give an overview of the large number of ways of using Vim in a smart way to edit programs, structured text and documentation. Examples will be used to make clear how learning a limited number of habits will avoid wasting time and lower the number of mistakes. '''Bram Moolenaar''' is mostly known for being the benevolent dictator of the text editor Vim."
+
* [http://vim-adventures.com/ VIM Adventures]
  
  
* YouTube: [http://www.youtube.com/watch?v=UlREhZ-orlk deavim with pycharm] - good quick overview of commands
+
* [http://www.vimgenius.com/ Vim Genius] - Increase your speed and improve your muscle memory with Vim Genius, a timed flashcard-style game designed to make you faster in Vim. It’s free and you don’t need to sign up.
  
* [https://vimeo.com/6999927 Welcome to Vim] - from Derek Wyatt
 
  
* YouTube: [https://www.youtube.com/watch?v=SkdrYWhh-8s Ben Orenstein - Write code faster: expert-level vim]
+
* [http://www.vimsnake.com/ Snake Vim Trainer] - Hone your vim navigation skillz. Make your Vim snake eat the food to increase your score. You can only eat food while INSERT mode is on. You cannot change direction while INSERT mode is on
  
  
* YouTube: [https://www.youtube.com/watch?v=Nim4_f5QUxA&list=PL39697668A5E07C69 Vim Training Classes]
 
  
* [http://vimcasts.org/ Vimcasts.org] by Drew Neil
+
* [http://www.drbunsen.org/vim-croquet/ Vim Croquet] [https://news.ycombinator.com/item?id=7138205]
** [http://vimeo.com/32788425 Tech Meetup Edinburgh Talk: Drew Neil on Vim]
 
  
  
* YouTube: [https://www.youtube.com/watch?v=aHm36-na4-4 Damian Conway, "More Instantly Better Vim" - OSCON 2013]
+
* [https://play.google.com/store/apps/details?id=develop.example.beta1139.vimmaster&hl=en_GB Vim Master] - Android app that was created in order to master the operation of vim editor. You can learn a vim operations in quiz format. There are three types of difficulty, Easy, Normal, and Hard. There are 150 questions in total. There are explanations for all questions. You can browse the history of the answered results of yours and other players. You can register your name as Vim Masters for the top grades. This app supports English and Japanese.
 +
 
 +
=== Video ===
 +
* YouTube: [https://www.youtube.com/watch?v=jwaj8JhO5bQ a rubbish tutorial for the text editor vi / vim] - funny basic
  
=== to sort ===
 
* [http://vimregex.com/ Vim Regular Expressions 101]
 
  
* [http://vim-adventures.com/ VIM Adventures]
+
* YouTube: [http://www.youtube.com/watch?v=eX9m3g5J-XA 7 Habits For Effective Text Editing 2.0] - "A large percentage of time behind the computer screen is spent on editing text. Investing a little time in learning more efficient ways to use a text editor pays itself back fairly quickly. This presentation will give an overview of the large number of ways of using Vim in a smart way to edit programs, structured text and documentation. Examples will be used to make clear how learning a limited number of habits will avoid wasting time and lower the number of mistakes. '''Bram Moolenaar''' is mostly known for being the benevolent dictator of the text editor Vim."
  
* [http://www.openvim.com/ OpenVim] - a web-based project to let people quickly have a taste what kind of an editor Vim is. Vim is considered to be very useful but can feel devastatingly opaque at first. Hopefully this tutorial makes people feel more comfortable to give it a chance. OpenVim is based on a custom engine that interprets vim commands. Fun fact: the engine operates directly on the dom but can be easily refactored to a model that is not view-dependent.
 
  
 +
* YouTube: [http://www.youtube.com/watch?v=UlREhZ-orlk deavim with pycharm] - good quick overview of commands
  
* [http://www.vimgenius.com/ Vim Genius] - Increase your speed and improve your muscle memory with Vim Genius, a timed flashcard-style game designed to make you faster in Vim. It’s free and you don’t need to sign up.
+
* [https://vimeo.com/6999927 Welcome to Vim] - from Derek Wyatt
  
* [http://www.vimsnake.com/ Snake Vim Trainer] - Hone your vim navigation skillz. Make your Vim snake eat the food to increase your score. You can only eat food while INSERT mode is on. You cannot change direction while INSERT mode is on
+
* YouTube: [https://www.youtube.com/watch?v=SkdrYWhh-8s Ben Orenstein - Write code faster: expert-level vim]
  
* [http://vimgolf.com/ VimGolf] - Real Vim ninjas count every keystroke - do you? Head on over to vimgolf.com, pick a challenge, and show us what you've got! Each challenge provides an input file, and an output file. Your goal is to modify the input file such that it matches the output. Once you install the vimgolf CLI, pick a challenge, open a prompt and put away! When you launch a challenge from the command line, it will be downloaded from the site and a local Vim session will be launched, which will log every keystroke you make. Once you're done, simply :wq (write and quit) the session and we will score your input and upload it back to the site!
 
  
gem install vimgolf
+
* YouTube: [https://www.youtube.com/watch?v=Nim4_f5QUxA&list=PL39697668A5E07C69 Vim Training Classes]
vimgolf setup
 
vimgolf put [challenge ID]
 
  
* [http://www.drbunsen.org/vim-croquet/ Vim Croquet] [https://news.ycombinator.com/item?id=7138205]
+
* [http://vimcasts.org/ Vimcasts.org] by Drew Neil
 +
** [http://vimeo.com/32788425 Tech Meetup Edinburgh Talk: Drew Neil on Vim]
  
* [https://play.google.com/store/apps/details?id=develop.example.beta1139.vimmaster&hl=en_GB Vim Master] - Android app that was created in order to master the operation of vim editor. You can learn a vim operations in quiz format. There are three types of difficulty, Easy, Normal, and Hard. There are 150 questions in total. There are explanations for all questions. You can browse the history of the answered results of yours and other players. You can register your name as Vim Masters for the top grades. This app supports English and Japanese.
 
  
 +
* YouTube: [https://www.youtube.com/watch?v=aHm36-na4-4 Damian Conway, "More Instantly Better Vim" - OSCON 2013]
  
  
* [http://stevelosh.com/blog/2010/09/coming-home-to-vim/ Coming Home to Vim]
+
=== Articles ===
* [http://haridas.in/vim-as-your-ide.html Vim as your IDE]
+
* [http://www.moolenaar.net/habits.html Seven habits of effective text editing]
* [http://blog.begriffs.com/2012/09/bespoke-vim.html Bespoke Vim]
+
** YouTube: [https://www.youtube.com/watch?v=p6K4iIMlouI 7 Habits For Effective Text Editing 2.0]
* [http://www.jackkinsella.ie/2011/09/05/textmate-to-vim.html Textmate to Vim] - how to reproduce over 110 commands from Textmate in VIM.
+
** PDF: [https://moolenaar.net/habits_2007.pdf Seven habits of effective text editing 2.0] - Presentation given by Bram Moolenaar at Google, 2007 February 13
  
  
* [https://web.archive.org/web/20160304020136/http://therandymon.com/papers/vimforwriters.pdf The Woodnotes Guide to Vim for Writers] - Randall Wood
+
* [http://spaceandtim.es/posts/the-invisible-interface The Invisible Interface] [https://github.com/nelstrom/vim-cutlass] (xx is with script)
* [http://alols.github.com/2012/11/07/writing-prose-with-vim/ Writing Prose with Vim]
+
* [http://csswizardry.com/2014/06/vim-for-people-who-think-things-like-vim-are-weird-and-hard/ Vim for people who think things like Vim are weird and hard] [https://news.ycombinator.com/item?id=7943575]
* [http://gabekoss.com/notes/writing_with_vim/ Writing with Vim]
+
* [http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/ Learn Vim Progressively]
* [https://github.com/davidbeckingsale/writegood.vim Writegood.vim] - Writegood is a plugin to highlight common writing problems. The plugin uses the Error group to highlight errors, so I assume it will work on both gvim and terminal vim. Detects duplicate words (even over newlines). Highlights use of passive voice. Highlights common "weasel words"
 
  
* [http://timotheepoisot.fr/2014/01/01/vim-writing-environment Using Vim as a writing environment] [https://news.ycombinator.com/item?id=7647599]
+
* [http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim/1220118#1220118 Your problem with Vim is that you don't grok vi.]
 +
* [http://yanpritzker.com/2011/12/16/learn-to-speak-vim-verbs-nouns-and-modifiers/ Learn to speak vim – verbs, nouns, and modifiers!]
 +
* [http://blog.sanctum.geek.nz/vim-anti-patterns/ Vim anti-patterns] [http://news.ycombinator.com/item?id=3563292] [https://news.ycombinator.com/item?id=12643887]
 +
* [http://kevinw.github.com/2010/12/15/this-is-your-brain-on-vim/ This is Your Brain on Vim] - 15 Dec 2010
 +
* [http://www.terminally-incoherent.com/blog/2012/03/21/why-vim/ Why Vim?]
 +
* [http://mislav.uniqpath.com/2011/12/vim-revisited/ Vim: revisited]
  
 +
* [http://vimhelp.appspot.com/vim_faq.txt.html vim_faq.txt] [https://news.ycombinator.com/item?id=8263171]
 +
* [https://github.com/mhinz/vim-galore Vim Galore] [https://news.ycombinator.com/item?id=10857032]
 +
* [https://web.archive.org/web/20161025061741/http://www.bestofvim.com/ :best of Vim] - Showcasing the top Vim plugins, tips and tricks.
  
* [http://blog.sanctum.geek.nz/vim-koans/ Vim Koans]
 
* [https://blog.samwhited.com/2015/04/the-dharma-of-vi/ The Dharma of Vi]
 
  
* [https://statico.github.io/vim.html Vim After 11 Years] [http://news.ycombinator.com/item?id=5244752]
+
* [http://www.binpress.com/blog/2014/11/19/vim-creator-bram-moolenaar-interview/ 10 Questions with Vim’s creator, Bram Moolenaar] [https://news.ycombinator.com/item?id=8632405]
  
 +
* [http://jeetworks.org/vim-making-those-arrow-keys-work-for-you-or-why-the-anti-arrow-key-propoganda-is-wrong/ Vim: Making Those Arrow Keys Work for You (Or Why the Anti-Arrow-Key Propoganda is Wrong) – Jeet Sukumaran]
  
* [http://haldean.org/vim-problems/ The problem with Vim] [https://news.ycombinator.com/item?id=6247849]
 
  
 +
* [http://vimregex.com/ Vim Regular Expressions 101]
  
* https://github.com/wikitopian/hardmode - Hard Mode is a plugin which disables the arrow keys, the hjkl keys, the page up/down keys, and a handful of other keys which allow one to rely on character-wise navigation. The philosophy behind Hard Mode is that you'll never master Vim's advanced motion and search functionality if you can fall back on the anti-pattern of fumbling around your code with the arrow keys.
 
  
=== Install ===
+
* [http://stevelosh.com/blog/2010/09/coming-home-to-vim/ Coming Home to Vim]
Some scripts require Vim 7.3, but some distros have older builds. You can build 7.3 locally though or use a provision system.
+
* [http://haridas.in/vim-as-your-ide.html Vim as your IDE]
 +
* [http://blog.begriffs.com/2012/09/bespoke-vim.html Bespoke Vim]
 +
* [http://www.jackkinsella.ie/2011/09/05/textmate-to-vim.html Textmate to Vim] - how to reproduce over 110 commands from Textmate in VIM.
  
Had syntax issue errors. Rumtime path also should include distro base config..; http://www.linuxquestions.org/questions/linux-software-2/vim-syntax-highlight-fails-after-debian-upgrade-378073/
 
  
=== Packages and support ===
+
* [https://web.archive.org/web/20160304020136/http://therandymon.com/papers/vimforwriters.pdf The Woodnotes Guide to Vim for Writers] - Randall Wood
* http://packages.debian.org/search?keywords=vim
+
* [http://alols.github.com/2012/11/07/writing-prose-with-vim/ Writing Prose with Vim]
 +
* [http://gabekoss.com/notes/writing_with_vim/ Writing with Vim]
 +
* [https://github.com/davidbeckingsale/writegood.vim Writegood.vim] - Writegood is a plugin to highlight common writing problems. The plugin uses the Error group to highlight errors, so I assume it will work on both gvim and terminal vim. Detects duplicate words (even over newlines). Highlights use of passive voice. Highlights common "weasel words"
  
* http://wiki.dreamhost.com/Vim
+
* [http://timotheepoisot.fr/2014/01/01/vim-writing-environment Using Vim as a writing environment] [https://news.ycombinator.com/item?id=7647599]
  
=== Building ===
 
* http://vim.wikia.com/wiki/Building_Vim
 
  
=== Debugging ===
+
* [http://blog.sanctum.geek.nz/vim-koans/ Vim Koans]
 +
* [https://blog.samwhited.com/2015/04/the-dharma-of-vi/ The Dharma of Vi]
  
:map ;
+
* [https://statico.github.io/vim.html Vim After 11 Years] [http://news.ycombinator.com/item?id=5244752]
  what is ; mapped to
 
 
:verbose  map ;
 
  include where ; is mapped from
 
  
== Modes ==
 
* [http://www.vim.org/scripts/script.php?script_id=2467 submode : Create your own submodes]
 
  
=== Normal ===
+
* [http://haldean.org/vim-problems/ The problem with Vim] [https://news.ycombinator.com/item?id=6247849]
  
[http://vimdoc.sourceforge.net/htmldoc/vimindex.html#normal-index :help Normal-mode]
 
  
=== Insert ===
+
* [https://thevaluable.dev/vim-advanced/ A Vim Guide for Advanced Users] - [https://news.ycombinator.com/item?id=26284618]
:help Insert-mode
 
  
i
 
  enter insert mode from normal mode
 
 
r
 
  enter replace mode - deletes selected character, enters insert then returns to normal after a new character has been entered
 
  
Ctrl-o
+
* [https://groups.google.com/g/vim_announce/c/tWahca9zkt4 Message from the family of Bram Moolenaar] [https://news.ycombinator.com/item?id=37011324]
  perform normal mode command in insert mode
+
* [https://j11g.com/2023/08/07/the-legacy-of-bram-moolenaar/ The Legacy of Bram Moolenaar - Jan van den Berg]
 +
* [https://neovim.io/news/2023/08 Vim Boss - Neovim] [https://news.ycombinator.com/item?id=37078719]
  
Ctrl-Y
+
* [https://groups.google.com/g/vim_dev/c/dq9Wu5jqVTw The future of the Vim project] [https://news.ycombinator.com/item?id=37074452]
  copy character from line above
 
 
Ctrl-E
 
  copy character from line below
 
 
=== Visual ===
 
:help Visual-mode
 
  
v
 
  enter visual mode from normal mode
 
V
 
  enter visual linewise mode
 
Ctrl+v
 
  enter visual block mode
 
  
 +
* https://github.com/wikitopian/hardmode - Hard Mode is a plugin which disables the arrow keys, the hjkl keys, the page up/down keys, and a handful of other keys which allow one to rely on character-wise navigation. The philosophy behind Hard Mode is that you'll never master Vim's advanced motion and search functionality if you can fall back on the anti-pattern of fumbling around your code with the arrow keys.
  
 +
==== VimGolf ====
 +
* [http://vimgolf.com/ VimGolf] - Real Vim ninjas count every keystroke - do you? Head on over to vimgolf.com, pick a challenge, and show us what you've got! Each challenge provides an input file, and an output file. Your goal is to modify the input file such that it matches the output. Once you install the vimgolf CLI, pick a challenge, open a prompt and put away! When you launch a challenge from the command line, it will be downloaded from the site and a local Vim session will be launched, which will log every keystroke you make. Once you're done, simply :wq (write and quit) the session and we will score your input and upload it back to the site!
  
* https://github.com/thinca/vim-visualstar - provides a star (*) feature for Visual-mode. In other words, you can search your selection text in Visual-mode.
+
gem install vimgolf
 +
vimgolf setup
 +
vimgolf put [challenge ID]
  
* https://github.com/terryma/vim-expand-region - allows you to visually select increasingly larger regions of text using the same key combination.
+
* [http://udioica.blogspot.com/2013/11/stairs-indenting.html VimGolf GIFs: Stairs Indenting] -
  
 +
=== Packages and support ===
 +
* http://packages.debian.org/search?keywords=vim
  
* https://github.com/thoughtstream/Damian-Conway-s-Vim-Setup/blob/master/plugin/dragvisuals.vim - Vim global plugin for dragging virtual blocks
+
* http://wiki.dreamhost.com/Vim
  
=== Select ===
+
=== Building ===
:help Select-mode
+
* http://vim.wikia.com/wiki/Building_Vim
  
like the visual mode but with more CUA like behavior. if you type a single character it replaces the selection. you lose access to all one key operations on selections.
 
  
This mode is usually activated by:
+
=== Debugging ===
  
  :behave mswin
+
  :map ;
   activate select mode (default for MS-Windows installations)
+
   what is ; mapped to
 +
 +
:verbose  map ;
 +
  include where ; is mapped from
  
:behave xterm
+
== Modes ==
  return to normal mode
+
* [http://www.vim.org/scripts/script.php?script_id=2467 submode : Create your own submodes]
  
=== Command-line ===
 
:help Command-line-mode
 
  
:
+
* [https://www.eduardobautista.com/escape-key-alternatives-in-vim/ Escape key alternatives in Vim]
  enter command-line mode
+
 
  
=== Ex ===
+
* https://github.com/mawkler/modicator.nvim - Cursor line number mode indicator. A small Neovim plugin that changes the color of your cursor's line number based on the current Vim mode.
:help Ex-mode
 
  
Q
 
  enter :Ex mode
 
 
:visual
 
  exit :Ex mode
 
  
Ctrl-B
+
=== Normal ===
  beginning of line
 
 
Ctrl-E
 
  end of line
 
  
  :%!markdown
+
  [http://vimdoc.sourceforge.net/htmldoc/vimindex.html#normal-index :help Normal-mode]
  # % = all lines, ! = external command, markdown = a md2html app
 
  
== File operations ==
+
=== Insert ===
=== Command line ===
+
  :help Insert-mode
  vim filename
 
  edit file (or create a buffer if file doesn't exist)
 
  
If you want to start vim with several files in a splitted window, just type;
+
i
  vim -o a b c
+
  enter insert mode from normal mode
for the horizontal split, and
+
   
vim -O a b c
+
r
for the vertical split.
+
  enter replace mode - deletes selected character, enters insert then returns to normal after a new character has been entered
  
* https://github.com/c00kiemon5ter/v - z for vim. uses viminfo's list of recently edited files to open one quickly no matter where you are in the filesystem. by default, it will open the most recently edited file matching all of the provided regular expressions.
+
Ctrl-o
 +
  perform normal mode command in insert mode
  
=== In Vim ===
+
Ctrl-Y
  :e filename
+
  copy character from line above
   open filename in vim
+
 +
  Ctrl-E
 +
   copy character from line below
 
   
 
   
:w
+
=== Visual ===
  save
+
  :help Visual-mode
  :w filename
+
 
  save as
+
  v
  :q
+
   enter visual mode from normal mode
   quit if saved
+
  V
  :x
+
   enter visual linewise mode
   save if changed and quit, same as :wq
+
  Ctrl+v
ZZ
+
   enter visual block mode
  save as above
 
ZQ
 
  even if not saved (also :q!)
 
 
  :ex .
 
   explore files in file directory. opens in split pans if file modified.
 
:Sex
 
  as above but forces split
 
:Vex
 
  as above but vertical split
 
:Tex
 
  as above but in new tab
 
 
<enter>
 
  open file
 
o
 
  open file in new split buffer
 
  
* http://www.vim.org/scripts/script.php?script_id=729
 
  
* http://vim.wikia.com/wiki/Get_the_name_of_the_current_file
 
  
display;
+
* https://github.com/thinca/vim-visualstar - provides a star (*) feature for Visual-mode. In other words, you can search your selection text in Visual-mode.
:echo @%
 
  directory/name of file
 
:echo expand('%:t')
 
  name of file ('tail')
 
:echo expand('%:p')
 
  full path
 
:echo expand('%:p:h')
 
  directory containing file ('head')
 
  
=== File navigation ===
+
* https://github.com/terryma/vim-expand-region - allows you to visually select increasingly larger regions of text using the same key combination.
* http://vim.wikia.com/wiki/File_explorer
 
  
* [http://vimdoc.sourceforge.net/htmldoc/pi_netrw.html#netrw netrw documentation]
 
  
:e .
+
* https://github.com/thoughtstream/Damian-Conway-s-Vim-Setup/blob/master/plugin/dragvisuals.vim - Vim global plugin for dragging virtual blocks
:Explore
 
  # bring up internal netrw file browser
 
 
gh
 
  # toggle hidden files
 
a
 
  # cycle between types of files hidden
 
 
~
 
  # jump to home folder
 
  
* https://www.reddit.com/r/vim/comments/22ztqp/why_does_nerdtree_exist_whats_wrong_with_netrw/
+
=== Select ===
 +
:help Select-mode
  
-
+
like the visual mode but with more CUA like behavior. if you type a single character it replaces the selection. you lose access to all one key operations on selections.
* [http://vimcasts.org/blog/2013/01/oil-and-vinegar-split-windows-and-project-drawer/ Oil and vinegar - split windows and the project drawer] - "Split windows and the project drawer go together like oil and vinegar. I don't mean to say that you can combine them to create a delicious salad dressing. I mean that they don't mix well!" -Drew Neil
 
  
 +
This mode is usually activated by:
  
* https://github.com/tpope/vim-vinegar - enhances netrw, partially in an attempt to mitigate the need for more disruptive "project drawer" style plugins. Some of the behaviors added by vinegar.vim would make excellent upstream additions. Many, the author would probably reject. Others are a bit too wild to even consider.
+
:behave mswin
 +
  activate select mode (default for MS-Windows installations)
  
* https://github.com/dhruvasagar/vim-vinegar - fork of vinegar.vim works with NERDTree instead for a better user experience.
+
:behave xterm
 +
  return to normal mode
  
 +
=== Command-line ===
 +
:help Command-line-mode
  
* https://github.com/scrooloose/nerdtree - a file system explorer for the Vim editor. Using this plugin, users can visually browse complex directory hierarchies, quickly open files for reading or editing, and perform basic file system operations.
+
:
** http://usevim.com/2012/07/18/nerdtree
+
  enter command-line mode
  
* https://github.com/jistr/vim-nerdtree-tabs
+
=== Ex ===
 +
:help Ex-mode
  
* https://github.com/Xuyuanp/nerdtree-git-plugin - plugin of NERDTree showing git status flags. Works with the LATEST version of NERDTree.
+
Q
 +
  enter :Ex mode
 +
 +
:visual
 +
  exit :Ex mode
  
 +
Ctrl-B
 +
  beginning of line
 +
 +
Ctrl-E
 +
  end of line
  
* https://github.com/Shougo/vimfiler.vim - A powerful file explorer implemented in Vim script
+
:%!markdown
 
+
  # % = all lines, ! = external command, markdown = a md2html app
  
* https://github.com/justinmk/vim-gtfo - Opens the file manager or terminal at the directory of the current file in Vim.
+
== File operations ==
 +
=== Command line ===
 +
vim filename
 +
  edit file (or create a buffer if file doesn't exist)
  
 +
If you want to start vim with several files in a splitted window, just type;
 +
vim -o a b c
 +
for the horizontal split, and
 +
vim -O a b c
 +
for the vertical split.
  
* http://robots.thoughtbot.com/replacing-nerdtree-with-ctrl-p
+
* https://github.com/c00kiemon5ter/v - z for vim. uses viminfo's list of recently edited files to open one quickly no matter where you are in the filesystem. by default, it will open the most recently edited file matching all of the provided regular expressions.
  
== Cursor ==
+
=== In Vim ===
* http://vim.wikia.com/wiki/Highlight_current_line
+
:e filename
  :set cursorline
+
  open filename in vim
 
+
   
 
+
:w
* http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes
+
  save
 +
:w filename
 +
  save as
 +
:q
 +
  quit if saved
 +
:x
 +
  save if changed and quit, same as :wq
 +
ZZ
 +
  save as above
 +
ZQ
 +
  even if not saved (also :q!)
  
 +
* https://github.com/hakluke/how-to-exit-vim/blob/master/README.md [https://news.ycombinator.com/item?id=21988968]
  
* https://github.com/ntpeters/vim-airline-colornum - Sets the cursor line number to the same color as the current mode in the statusline set by the Vim Airline plugin.
+
:ex .
 +
  explore files in file directory. opens in split pans if file modified.
 +
:Sex
 +
  as above but forces split
 +
:Vex
 +
  as above but vertical split
 +
:Tex
 +
  as above but in new tab
 +
 +
<enter>
 +
  open file
 +
o
 +
  open file in new split buffer
  
 +
* http://www.vim.org/scripts/script.php?script_id=729
  
* https://github.com/terryma/vim-multiple-cursors - True Sublime Text style multiple selections for Vim
+
* http://vim.wikia.com/wiki/Get_the_name_of_the_current_file
  
== Motion ==
+
display;
  gg
+
  :echo @%
   start of file
+
   directory/name of file
  G
+
  :echo expand('%:t')
   end of file
+
   name of file ('tail')
   
+
  :echo expand('%:p')
123G
+
   full path
   move to line 123
+
  :echo expand('%:p:h')
  :123
+
   directory containing file ('head')
   move to line 123 (easier imo)
 
  
0
+
=== File navigation ===
  line beginning
+
* http://vim.wikia.com/wiki/File_explorer
^
 
  first non-whitespace character
 
$
 
  line end
 
  
  w
+
* [http://vimdoc.sourceforge.net/htmldoc/pi_netrw.html#netrw netrw documentation]
  forward to start next word
+
 
  W
+
  :e .
   forward to start of next WORD (ignoring hyphens, etc.)
+
  :Explore
 +
   # bring up internal netrw file browser
 
   
 
   
  e
+
  gh
   forward to end of word
+
   # toggle hidden files
  E
+
  a
   forward to end of WORD (ignoring hyphens, etc.)
+
   # cycle between types of files hidden
 
   
 
   
  b
+
  ~
   backward word
+
   # jump to home folder
B
 
  backward WORD
 
 
ge
 
  backward to the end of word [count] |inclusive|.
 
gE
 
  backward to the end of WORD [count] |inclusive|. [http://stackoverflow.com/questions/5125270/in-vim-vi-how-do-you-move-the-cursor-to-the-end-of-the-previous-word]
 
  
(
+
* https://www.reddit.com/r/vim/comments/22ztqp/why_does_nerdtree_exist_whats_wrong_with_netrw/
  beginning of previous sentence
 
)
 
  next sentence
 
%
 
  current brace
 
  
  {
+
  -
  beginning of previous
+
* [http://vimcasts.org/blog/2013/01/oil-and-vinegar-split-windows-and-project-drawer/ Oil and vinegar - split windows and the project drawer] - "Split windows and the project drawer go together like oil and vinegar. I don't mean to say that you can combine them to create a delicious salad dressing. I mean that they don't mix well!" -Drew Neil
}
 
  next paragraph
 
  
* https://github.com/justinmk/vim-ipmotion
 
  
H
+
* https://github.com/tpope/vim-vinegar - enhances netrw, partially in an attempt to mitigate the need for more disruptive "project drawer" style plugins. Some of the behaviors added by vinegar.vim would make excellent upstream additions. Many, the author would probably reject. Others are a bit too wild to even consider.
  cursor to top of screen (high)
 
M
 
  cursor to middle of screen (middle)
 
L
 
  cursor to bottom of screen (low)
 
Ctrl-D
 
  move cursor down half-page
 
Ctrl-U
 
  move cursor up half-page
 
 
ma
 
  mark cursor position 'a'
 
'a
 
  move to mark position 'a'
 
  
 +
* https://github.com/dhruvasagar/vim-vinegar - fork of vinegar.vim works with NERDTree instead for a better user experience.
  
*  http://vim.wikia.com/wiki/Jumping_to_previously_visited_locations
 
  
:jumps
+
* https://github.com/scrooloose/nerdtree - a file system explorer for the Vim editor. Using this plugin, users can visually browse complex directory hierarchies, quickly open files for reading or editing, and perform basic file system operations.
  Display the jump list for the current window with:
+
** http://usevim.com/2012/07/18/nerdtree
 +
 
 +
* https://github.com/jistr/vim-nerdtree-tabs
  
Ctrl-o
+
* https://github.com/Xuyuanp/nerdtree-git-plugin - plugin of NERDTree showing git status flags. Works with the LATEST version of NERDTree.
  move back location
 
Ctrl-i
 
  move forward location
 
  
g;
 
  
* http://vim.runpaint.org/display/working-with-long-lines/
+
* https://github.com/Shougo/vimfiler.vim - A powerful file explorer implemented in Vim script
gj
 
  move down a soft linebreak line
 
 
g,
 
  move back one edit list location
 
g,
 
  move forward one edit list location
 
  
  
zz
+
* https://github.com/justinmk/vim-gtfo - Opens the file manager or terminal at the directory of the current file in Vim.
  centre screen on cursor
 
zt
 
  move screen top to cursor
 
zb
 
  move screen bottom to cursor
 
  
Ctrl-e
 
  Moves screen up one line
 
Ctrl-y
 
  Moves screen down one line
 
Ctrl-u
 
  Moves screen up ½ page
 
Ctrl-d
 
  Moves screen down ½ page
 
Ctrl-b
 
  Moves screen up one page
 
Ctrl-f
 
  Moves screen down one page [http://stackoverflow.com/questions/3458689/how-to-move-screen-without-moving-cursor-in-vim]
 
  
 +
* http://robots.thoughtbot.com/replacing-nerdtree-with-ctrl-p
  
  
* https://github.com/tpope/vim-rsi - You know Readline key bindings? Of course you do, they're in your shell, your REPL, and perhaps even the GUI for your OS. They're similar to Emacs key bindings (C-a for home), but with several concessions for UNIX (C-w for delete word). With rsi.vim, I've taken that same concession philosophy and extended it to Vim. Get the most useful of the ubiquitous key bindings without blindly overriding built-in Vim functionality.
+
* https://www.reddit.com/r/vim/comments/i1p3s9/fernvim_a_modern_asynchronous_file_manager_for_vim
  
  
 +
* https://github.com/justinmk/vim-dirvish - Path navigator designed to work with Vim's built-in mechanisms and complementary plugins.
  
* https://github.com/prendradjaja/vim-vertigo [http://www.reddit.com/r/vim/comments/1jbnpr/vertigo_a_better_way_to_move_vertically/]
+
== Cursor ==
 +
* http://vim.wikia.com/wiki/Highlight_current_line
 +
:set cursorline
  
* https://github.com/rbong/vim-vertical
 
  
* https://github.com/justinmk/vim-sneak
+
* http://vim.wikia.com/wiki/Change_cursor_shape_in_different_modes
  
* https://github.com/machakann/vim-columnmove
 
  
 +
* https://github.com/farmergreg/vim-lastplace - A vim / nvim plugin that intelligently reopens files at your last edit position.
  
  
* https://github.com/robmiller/vim-movar - a Vim plugin that adds a couple of movements that make working with variables easier.
+
* https://github.com/ntpeters/vim-airline-colornum - Sets the cursor line number to the same color as the current mode in the statusline set by the Vim Airline plugin.
  
* https://github.com/bkad/CamelCaseMotion - a Vim script to provide CamelCase motion through words
 
  
 +
* https://github.com/terryma/vim-multiple-cursors - True Sublime Text style multiple selections for Vim
  
* [http://vim.sourceforge.net/scripts/script.php?script_id=2174 repmo.vim] - repeat motions for which a count was given
+
== Motion ==
 
+
gg
 +
  start of file
 +
G
 +
  end of file
 +
 +
123G
 +
  move to line 123
 +
:123
 +
  move to line 123 (easier imo)
  
* https://github.com/tpope/vim-repeat - remaps . in a way that plugins can tap into it.
+
0
 
+
  line beginning
 
+
^
* https://github.com/PeterRincker/vim-argumentative - Argumentative aids with manipulating and moving between function arguments. Shifting arguments with <, and >, Moving between argument boundaries with [, and ], New text objects a, and i,
+
  first non-whitespace character
 
+
$
 
+
  line end
* https://github.com/AndrewRadev/sideways.vim - move function arguments (and other delimited-by-something items) left and right.
 
  
 +
w
 +
  forward to start next word
 +
W
 +
  forward to start of next WORD (ignoring hyphens, etc.)
 +
 +
e
 +
  forward to end of word
 +
E
 +
  forward to end of WORD (ignoring hyphens, etc.)
 +
 +
b
 +
  backward word
 +
B
 +
  backward WORD
 +
 +
ge
 +
  backward to the end of word [count] |inclusive|.
 +
gE
 +
  backward to the end of WORD [count] |inclusive|. [http://stackoverflow.com/questions/5125270/in-vim-vi-how-do-you-move-the-cursor-to-the-end-of-the-previous-word]
  
 +
(
 +
  beginning of previous sentence
 +
)
 +
  next sentence
 +
%
 +
  current brace
  
=== Finding things ===
+
{
 +
  beginning of previous
 +
}
 +
  next paragraph
  
/
+
* https://github.com/justinmk/vim-ipmotion - Improved paragraph motion
  search for text
 
  
* https://github.com/google/vim-searchindex - shows how many times does a search pattern occur in the current buffer. After each search, it displays total number of matches, as well as the index of a current match, in the command line:
 
  
* https://github.com/henrik/vim-indexed-search - Show "Match 123 of 456 /search term/" in Vim searches.
+
H
 +
  cursor to top of screen (high)
 +
M
 +
  cursor to middle of screen (middle)
 +
L
 +
  cursor to bottom of screen (low)
  
  *
+
 
   search for text under cursor
+
Ctrl-e
 +
  Moves screen up one line
 +
Ctrl-y
 +
  Moves screen down one line
 +
 +
Ctrl-u
 +
  Moves screen up ½ page
 +
  Ctrl-d
 +
   Moves screen down ½ page
 
   
 
   
  n
+
  Ctrl-b
   repeat search forwards
+
   Moves screen up one page
  N
+
  Ctrl-f
   repeat search backwards
+
   Moves screen down one page [http://stackoverflow.com/questions/3458689/how-to-move-screen-without-moving-cursor-in-vim]
  
* https://github.com/jceb/vim-shootingstar - Like the magic * but start matching at the cursor position
 
  
 
+
  ma
fX
+
   mark cursor position 'a'
  move to next X on same line
+
  'a
+
   move to mark position 'a'
  3FX
 
   move to third last X on same line
 
 
tX
 
  move to character before next X on same line
 
   
 
T2X
 
   move to second previous X on same line
 
 
;
 
  repeat find/to movement command
 
,
 
  repeat find/to movement in opposite direction
 
 
* http://stackoverflow.com/questions/26553239/vim-repeat-previous-motion
 
  
  
* https://github.com/svermeulen/vim-extended-ft - adds the following behaviour to the default behaviour of the f, F, t, and T commands: Multiline - Can search across multiple lines or continue searching across multiple lines using ; and , keys, Smart Case - When the search character is lower case it matches both lower and upper case, and when the character is uppercase it matches only upper case. Allow repeating t and T commands using ; or , commands. Highlighting - Which is disabled automatically when moving your cursor afterwards. It's also worth noting that it only adds the new position to the jumplist if you've changed lines.
+
* http://vim.wikia.com/wiki/Jumping_to_previously_visited_locations
  
* https://github.com/dahu/vim-fanfingtastic - a Vim plugin that enhances the builtin F f , T t and ; keys by allowing them to wrap over lines with the full gamut of normal, visual and operator pending mode supported. This is all the default configuration of Fanf,ingTastic; provides, however the following enhanced functionality can be enabled through configuration options: Case insensitivity: Fanf,ingTastic; is case sensitive by default but can be set to ignore case so that fx will match either x'' or X''. Aliases: Fanf,ingTastic; allows you to create aliases which specify a set of characters that will be scanned for when FfTt;, is used on that alias
+
:jumps
 +
  Display the jump list for the current window with:
  
 +
Ctrl-o
 +
  move back location
 +
Ctrl-i
 +
  move forward location
  
* https://github.com/goldfeld/vim-seek - aims to make inline navigation effortless. The motion seek, summoned with s by default, is similar to f, but instead of one it expects two characters.
+
g;
 
 
  
* [http://www.vim.org/scripts/script.php?script_id=1803 compview] - find string, with interactive search window
+
* http://vim.runpaint.org/display/working-with-long-lines/
** http://juan.boxfi.com/vim-plugins/#compview
+
gj
 +
  move down a soft linebreak line
 +
 +
g,
 +
  move back one edit list location
 +
g,
 +
  move forward one edit list location
  
* https://github.com/Lokaltog/vim-easymotion - provides a much simpler way to use some motions in vim. It takes the <number> out of <number>w or <number>f{char} by highlighting all possible choices and allowing you to press one key to jump directly to the target.
 
  
* [https://gist.github.com/gfixler/3167301 ACEJUMP] - Based on emacs' AceJump feature (http://www.emacswiki.org/emacs/AceJump). AceJump based on these Vim plugins: EasyMotion (http://www.vim.org/scripts/script.php?script_id=3526), PreciseJump (http://www.vim.org/scripts/script.php?script_id=3437) [http://www.reddit.com/r/vim/comments/wy9v0/easyjumpprecisemotionace/] - Type AJ mapping, followed by a lower or uppercase letter. All words on the screen starting with that letter will have their first letters replaced with a sequential character. Type this character to jump to that word.
+
zz
 +
  centre screen on cursor
 +
z.
 +
  centre screen on cursor, cursor to first non-whitespace character
 +
 +
zt
 +
  move screen top to cursor
 +
z<CR>
 +
  move screen top to cursor, cursor to first non-whitespace character
 
   
 
   
 +
zb
 +
    move screen bottom to cursor
 +
z-
 +
    move screen bottom to cursor, cursor to first non-whitespace characterx
  
  
* [http://www.vim.org/scripts/script.php?script_id=2255 buffergrep] - Grep buffers, not files
 
  
* [https://robots.thoughtbot.com/faster-grepping-in-vim Faster Grepping in Vim]
+
* https://github.com/tpope/vim-rsi - You know Readline key bindings? Of course you do, they're in your shell, your REPL, and perhaps even the GUI for your OS. They're similar to Emacs key bindings (C-a for home), but with several concessions for UNIX (C-w for delete word). With rsi.vim, I've taken that same concession philosophy and extended it to Vim. Get the most useful of the ubiquitous key bindings without blindly overriding built-in Vim functionality.
  
  
  
* [https://wincent.com/products/command-t Command-T] - plug-in for VIM provides an extremely fast, intuitive mechanism for opening files with a minimal number of keystrokes. It's named "Command-T" because it is inspired by the "Go to File" window bound to Command-T in TextMate. Files are selected by typing characters that appear in their paths, and are ordered by an algorithm which knows that characters that appear in certain locations (for example, immediately after a path separator) should be given more weight. [https://wincent.com/products/command-t]
+
* https://github.com/prendradjaja/vim-vertigo [http://www.reddit.com/r/vim/comments/1jbnpr/vertigo_a_better_way_to_move_vertically/]
  
* [http://www.vim.org/scripts/script.php?script_id=1984 FuzzyFinder] - FuzzyFinder provides convenient ways to quickly reach the
+
* https://github.com/rbong/vim-vertical
buffer/file/command/bookmark/tag you want. FuzzyFinder searches with the fuzzy/partial pattern to which it converted an entered pattern.
 
  
 +
* https://github.com/justinmk/vim-sneak
  
* https://github.com/dyng/ctrlsf.vim
+
* https://github.com/machakann/vim-columnmove
  
* [https://github.com/kien/ctrlp.vim ctrlp.vim] - Full path fuzzy file, buffer, mru, tag, ... finder for Vim.
 
  
* https://github.com/wincent/ferret - Enhanced multi-file search for Vim
 
  
=== Line numbers ===
+
* https://github.com/robmiller/vim-movar - a Vim plugin that adds a couple of movements that make working with variables easier.
* https://github.com/jeffkreeftmeijer/vim-numbertoggle
 
** http://jeffkreeftmeijer.com/2012/relative-line-numbers-in-vim-for-super-fast-movement/
 
  
* http://myusuf3.github.com/numbers.vim - requires vim 7.3, not in debian squeeze backports and some shared hosting. compile latest instead..
+
* https://github.com/bkad/CamelCaseMotion - a Vim script to provide CamelCase motion through words
  
* https://github.com/vim-scripts/RelOps [http://www.reddit.com/r/vimplugins/comments/zsh9n/relative_line_numbers_for_pending_operations/]
 
  
== Operations ==
+
* [http://vim.sourceforge.net/scripts/script.php?script_id=2174 repmo.vim] - repeat motions for which a count was given
.
 
  repeat last change. doesn't work with plugin actions without script.
 
  
i
 
  insert at cursor
 
I
 
  insert at line beginning
 
  
a
+
* https://github.com/tpope/vim-repeat - remaps . in a way that plugins can tap into it.
  append after the cursor
 
A
 
  append at the end of the line
 
  
o
 
  add ('open') line below and insert
 
O
 
  add line above and insert
 
  
x
+
* https://github.com/PeterRincker/vim-argumentative - Argumentative aids with manipulating and moving between function arguments. Shifting arguments with <, and >, Moving between argument boundaries with [, and ], New text objects a, and i,
  delete character under cursor
 
X
 
  delete character before cursor
 
  
s
 
  change one character and insert
 
  
* https://github.com/wellle/targets.vim
+
* https://github.com/AndrewRadev/sideways.vim - move function arguments (and other delimited-by-something items) left and right.
  
=== Delete, yank and paste ===
 
Cut, copy, paste.
 
  
* http://benmccormick.org/2014/07/28/learning-vim-in-2014-copy-and-paste-the-vim-way/
+
* https://github.com/AlphaMycelium/pathfinder.vim - calculate the most efficient movement between two cursor positions
* http://vimcasts.org/blog/2013/11/registers-the-good-the-bad-and-the-ugly-parts/
 
  
y
 
  yank (copy) current text
 
yy
 
  yank current line
 
"+yy
 
  yank current line to system clipboard
 
 
:%y+
 
  yank all lines to clipboard [http://stackoverflow.com/questions/1620018/vi-editor-copy-all-the-lines-to-clipboard]
 
  
* http://vim.wikia.com/wiki/Replace_a_word_with_yanked_text
+
* https://github.com/unblevable/quick-scope -  Lightning fast left-right movement in Vim
  
* https://github.com/sunaku/vim-highlightedyank
 
  
 +
* https://github.com/andymass/vim-matchup - navigate and highlight matching words
  
d
+
 
  delete and yank (cut)
+
=== Finding things ===
  df*
+
 
   delete to (find) and including *
+
  /
dl
+
   search for text
  delete character (alias: "x")
+
 
dd
+
* https://github.com/google/vim-searchindex - shows how many times does a search pattern occur in the current buffer. After each search, it displays total number of matches, as well as the index of a current match, in the command line:
  delete current line including linebreak
+
 
dw
+
* https://github.com/henrik/vim-indexed-search - Show "Match 123 of 456 /search term/" in Vim searches.
  delete to end of word from cursor including space
+
 
dE
+
  *
  delete to end of word from cursor leaving spae
+
   search for text under cursor
  d$
 
   delete to end of line from cursor
 
 
   
 
   
  diw
+
  n
   delete inner word
+
   repeat search forwards
  diW
+
  N
   delete inner WORD
+
   repeat search backwards
daw
 
  delete word, up to delimiter
 
daW
 
  delete WORD, including previous space
 
dis
 
  delete inner sentence
 
das
 
  delete a sentence
 
dib
 
  delete inner '(' ')' block
 
dab
 
  delete a '(' ')' block
 
dip
 
  delete inner paragraph
 
dap
 
  delete a paragraph
 
diB
 
  delete inner '{' '}' block
 
daB
 
  delete a '{' '}' block
 
  
3dk would delete 4 lines in the upward direction
+
* https://github.com/jceb/vim-shootingstar - Like the magic * but start matching at the cursor position
  
  "add
+
 
   delete line, yank to 'a' register
+
  fX
"Add
+
   move to next X on same line
  delete line, append yank to 'a' register
 
 
   
 
   
  "_d
+
  3FX
   delete line to blackhole register (no yank)
+
   move to third last X on same line
 
 
p
 
  paste yanked text after cursor/line
 
P
 
  paste yanked text before cursor/line
 
 
   
 
   
  "ap
+
  tX
   paste 'a' register
+
   move to character before next X on same line
"0p
 
  paste last yanked (not deleted) item
 
 
 
=== Change ===
 
c - change (delete and insert)
 
 
   
 
   
  cc
+
  T2X
   delete current line including linebreak, insert
+
   move to second previous X on same line
cw
 
  delete to end of word from cursor, insert
 
c$
 
  delete to end of line from cursor, insert
 
ciw
 
  delete inner word, insert
 
ci"
 
  change inner quoted string
 
ci(
 
  change inner brackets
 
ci[
 
  change inner contents of [].. ci], ci) for insert on closing bracket
 
caw
 
  change an object
 
caW
 
  change an object, including space
 
cit
 
  change contents between opening and closing angle bracket tags
 
etc.
 
 
 
=== Visual ===
 
Selection highlighting.
 
 
 
v
 
  visual select text
 
 
   
 
   
  viw
+
  ;
   visual inner word
+
   repeat find/to movement command
  viw~
+
  ,
  visual inner word, toggle case
+
   repeat find/to movement in opposite direction
vip
 
  visual inner paragraph
 
vec
 
   visual, end of word, change highlighted
 
 
   
 
   
V
+
* http://stackoverflow.com/questions/26553239/vim-repeat-previous-motion
  visual select lines
+
 
Ctrl-v
+
 
  visual select a block
 
  
Vim now supports incrementing numbers in Visual mode. You can increment numbers by pressing CTRL-A, and decrement with CTRL-X. [https://medium.com/usevim/visual-mode-increment-cce60c8743dc]
+
* https://github.com/svermeulen/vim-extended-ft - adds the following behaviour to the default behaviour of the f, F, t, and T commands: Multiline - Can search across multiple lines or continue searching across multiple lines using ; and , keys, Smart Case - When the search character is lower case it matches both lower and upper case, and when the character is uppercase it matches only upper case. Allow repeating t and T commands using ; or , commands. Highlighting - Which is disabled automatically when moving your cursor afterwards. It's also worth noting that it only adds the new position to the jumplist if you've changed lines.
  
=== Indentation ===
 
>
 
  # indent right
 
 
<
 
  # indent left
 
  
=
+
* https://github.com/dahu/vim-fanfingtastic - a Vim plugin that enhances the builtin F f , T t and ; keys by allowing them to wrap over lines with the full gamut of normal, visual and operator pending mode supported. This is all the default configuration of Fanf,ingTastic; provides, however the following enhanced functionality can be enabled through configuration options: Case insensitivity: Fanf,ingTastic; is case sensitive by default but can be set to ignore case so that fx will match either x'' or X''. Aliases: Fanf,ingTastic; allows you to create aliases which specify a set of characters that will be scanned for when FfTt;, is used on that alias
  # fix indentation for selection
 
 
==
 
  # fix indentation for one line
 
 
V=
 
  # visual select lines, then reformat with =
 
  
  
* https://github.com/dodie/vim-disapprove-deep-indentation [https://news.ycombinator.com/item?id=13807631]
+
* https://github.com/rhysd/clever-f.vim - extends f, F, t and T mappings for more convenience. Instead of ;, f is available to repeat after you type f{char} or F{char}. F after f{char} and F{char} is also available to undo a jump. t{char} and T{char} are ditto. This extension makes a repeat easier and makes you forget the existence of ;. You can use ; for other key mapping. In addition, this extension provides many convenient features like target character highlighting, smart case matching and so on.
  
" If you select one or more lines, you can use < and > for sihifting them sidewards. Unfortunately you immediately lose the selection afterwards. You can use gv to reselect the last selection (see :h gv), thus you can work around it like this in your config:
 
  xnoremap <  <gv
 
  xnoremap >  >gv
 
  
* https://github.com/nathanaelkane/vim-indent-guides
 
  
 +
* https://github.com/goldfeld/vim-seek - aims to make inline navigation effortless. The motion seek, summoned with s by default, is similar to f, but instead of one it expects two characters.
  
* http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
 
  
=== Search and replace ===
+
* [http://www.vim.org/scripts/script.php?script_id=1803 compview] - find string, with interactive search window
* http://vim.wikia.com/wiki/Search_and_replace
+
** http://juan.boxfi.com/vim-plugins/#compview
  
:s/foo/bar/ - search and replace first occurrence
+
* https://github.com/Lokaltog/vim-easymotion - provides a much simpler way to use some motions in vim. It takes the <number> out of <number>w or <number>f{char} by highlighting all possible choices and allowing you to press one key to jump directly to the target.
:s/foo/bar/s - search and replace, global current line
 
:%s/foo/bar/g - search and replace, global whole file
 
:%s/foo/bar/gc - search and replace, with confirm
 
  
* http://vim.wikia.com/wiki/Search_and_replace_in_multiple_buffers
+
* [https://gist.github.com/gfixler/3167301 ACEJUMP] - Based on emacs' AceJump feature (http://www.emacswiki.org/emacs/AceJump). AceJump based on these Vim plugins: EasyMotion (http://www.vim.org/scripts/script.php?script_id=3526), PreciseJump (http://www.vim.org/scripts/script.php?script_id=3437) [http://www.reddit.com/r/vim/comments/wy9v0/easyjumpprecisemotionace/] - Type AJ mapping, followed by a lower or uppercase letter. All words on the screen starting with that letter will have their first letters replaced with a sequential character. Type this character to jump to that word.
 +
  
  
 +
* [http://www.vim.org/scripts/script.php?script_id=2255 buffergrep] - Grep buffers, not files
  
* https://github.com/henrik/vim-indexed-search
+
* [https://robots.thoughtbot.com/faster-grepping-in-vim Faster Grepping in Vim]
  
=== Global action ===
 
* http://vim.wikia.com/wiki/Power_of_g
 
  
:[range]g/pattern/cmd
 
  
:g/LinesThatMatchThisRegex/ExecuteThisCommand
+
* [https://wincent.com/products/command-t Command-T] - plug-in for VIM provides an extremely fast, intuitive mechanism for opening files with a minimal number of keystrokes. It's named "Command-T" because it is inspired by the "Go to File" window bound to Command-T in TextMate. Files are selected by typing characters that appear in their paths, and are ordered by an algorithm which knows that characters that appear in certain locations (for example, immediately after a path separator) should be given more weight. [https://wincent.com/products/command-t]
 +
 
 +
* [http://www.vim.org/scripts/script.php?script_id=1984 FuzzyFinder] - FuzzyFinder provides convenient ways to quickly reach the
 +
buffer/file/command/bookmark/tag you want. FuzzyFinder searches with the fuzzy/partial pattern to which it converted an entered pattern.
 +
 
  
 +
* https://github.com/dyng/ctrlsf.vim
  
:g/text string/d
+
* [https://github.com/kien/ctrlp.vim ctrlp.vim] - Full path fuzzy file, buffer, mru, tag, ... finder for Vim.
  delete all lines with text string
 
 
:!g/text string/d
 
  delete all lines without text string [http://vim.wikia.com/wiki/Delete_all_lines_containing_a_pattern]
 
 
:g/pattern/d_
 
  fast delete
 
  
:g!/^\s*#/d
+
* https://github.com/wincent/ferret - Enhanced multi-file search for Vim
  delete all lines without a #
 
  
  
qaq:g/pattern/y A
+
* https://github.com/liuchengxu/vim-clap - clap Modern performant generic finder and dispatcher for Vim and NeoVim
  Explanation qaq is a trick to clear register a (qa starts recording a macro to register a, then q stops recording, leaving a empty). y A is an Ex command (:help :y). It yanks the current line into register A (append to register a).
 
  
  
* https://github.com/takac/vim-commandcaps
+
* https://github.com/chimay/wheel - Quick navigation framework for Vim and Neovim : buffer groups, mru, locate, find, grep, outline, yank, ...
  
=== Macros ===
+
=== Line numbers ===
qa - start recording macro 'a', q - stop recording
+
* https://github.com/jeffkreeftmeijer/vim-numbertoggle
qA - start appending to macro 'a'
+
** http://jeffkreeftmeijer.com/2012/relative-line-numbers-in-vim-for-super-fast-movement/
@a - play macro a
 
@@ - execute again
 
3@a - play macro 3 thrice
 
 
:let @a='macrogoeshere' - write macro manually
 
Ctrl-R Ctrl-R a - insert mode
 
:let @a='Ctrl-R Ctrl-R a - edit existing macro
 
  
(macros are saved in registers)
+
* http://myusuf3.github.com/numbers.vim - requires vim 7.3, not in debian squeeze backports and some shared hosting. compile latest instead..
  
* https://www.hillelwayne.com/post/vim-macro-trickz [https://lobste.rs/s/y1ebsy/vim_macro_trickz]
+
* https://github.com/vim-scripts/RelOps [http://www.reddit.com/r/vimplugins/comments/zsh9n/relative_line_numbers_for_pending_operations/]
  
* https://www.reddit.com/r/vim/comments/8obazk/proving_vim_macros_are_turingcomplete_using/
+
== Operations ==
 +
.
 +
  repeat last change. doesn't work with plugin actions without script.
  
* https://www.reddit.com/r/programminghorror/comments/8oqq0g/i_thought_documenting_was_cool_back_when_i_first/e05qxhc/
+
i
 +
  insert at cursor
 +
I
 +
  insert at line beginning
  
=== Registers ===
+
a
* http://stackoverflow.com/questions/1497958/how-to-use-vim-registers
+
  append after the cursor
 +
A
 +
  append at the end of the line
  
  "adw
+
  o
   delete word into the a register
+
   add ('open') line below and insert
  "_dw
+
  O
   delete word into no register
+
   add line above and insert
 
"*
 
  system clipboard
 
  
* [http://blog.sanctum.geek.nz/advanced-vim-registers/ Advanced Vim registers]
+
x
 +
  delete character under cursor
 +
X
 +
  delete character before cursor
  
=== Sorting ===
+
s
* http://vim.wikia.com/wiki/Sort_lines
+
  change one character and insert
  
== Spaces ==
+
* https://github.com/wellle/targets.vim
* [http://blog.sanctum.geek.nz/buffers-windows-tabs/ Buffers, windows, and tabs]
 
  
=== Buffers ===
+
=== Delete, yank and paste ===
* http://vim.wikia.com/wiki/Buffers
+
Cut, copy, paste.
  
An area of Vim's memory used to hold text read from a file. In addition, an empty buffer with no associated file can be created to allow the entry of text.
+
* http://benmccormick.org/2014/07/28/learning-vim-in-2014-copy-and-paste-the-vim-way/
 +
* http://vimcasts.org/blog/2013/11/registers-the-good-the-bad-and-the-ugly-parts/
  
  :b [buffer number of any part of name]
+
y
   switch to a buffer
+
  yank (copy) current text
 +
yy
 +
  yank current line
 +
"+yy
 +
  yank current line to system clipboard
 +
 +
  :%y+
 +
   yank all lines to clipboard [http://stackoverflow.com/questions/1620018/vi-editor-copy-all-the-lines-to-clipboard]
  
set wildchar=<Tab> wildmenu wildmode=full
+
* http://vim.wikia.com/wiki/Replace_a_word_with_yanked_text
  with this, :b [tab] gives a menu
 
  
 +
* https://github.com/sunaku/vim-highlightedyank
  
:bd
 
  close buffer
 
 
* https://github.com/qpkorr/vim-bufkill - provides :BD for close buffer but leave split window open
 
  
 +
d
 +
  delete and yank (cut)
 +
df*
 +
  delete to (find) and including *
 +
dl
 +
  delete character (alias: "x")
 +
dd
 +
  delete current line including linebreak
 +
dw
 +
  delete to end of word from cursor including space
 +
dE
 +
  delete to end of word from cursor leaving spae
 +
d$
 +
  delete to end of line from cursor
 +
 +
diw
 +
  delete inner word
 +
diW
 +
  delete inner WORD
 +
daw
 +
  delete word, up to delimiter
 +
daW
 +
  delete WORD, including previous space
 +
dis
 +
  delete inner sentence
 +
das
 +
  delete a sentence
 +
dib
 +
  delete inner '(' ')' block
 +
dab
 +
  delete a '(' ')' block
 +
dip
 +
  delete inner paragraph
 +
dap
 +
  delete a paragraph
 +
diB
 +
  delete inner '{' '}' block
 +
daB
 +
  delete a '{' '}' block
  
 +
3dk would delete 4 lines in the upward direction
  
* http://vim.wikia.com/wiki/Easier_buffer_switching
+
  "add
 
+
   delete line, yank to 'a' register
* [http://www.vim.org/scripts/script.php?script_id=2050 LustyJuggler] [https://github.com/sjbach/lusty]
+
  "Add
 
+
   delete line, append yank to 'a' register
* [http://www.vim.org/scripts/script.php?script_id=2877 spinner.vim] : fast buffer/file/tab/window switching plugin with only 3 keys.
+
   
 
+
  "_d
* https://github.com/chrisbra/NrrwRgn
+
   delete line to blackhole register (no yank)
 
 
* https://github.com/danro/rename.vim
 
 
 
=== Windows ===
 
* [http://vimdoc.sourceforge.net/htmldoc/windows.html Vim documentation: windows]
 
 
 
Windows are like tmux panes, awesome clients, i3 windows, etc. Windows can hold file buffers or plugins like Nerdtree, which are browsable via searches, etc.
 
 
 
  :sp [filename]
 
   open file in new split window
 
 
 
  Ctrl-W w
 
   move forward window
 
  Ctrl-W W
 
  move backwards window
 
 
 
  Ctrl-W then h, j, k, l
 
   move window focus to left, below, above, right
 
 
 
Ctrl-W then H, J, K, L
 
  move window in the direction of left, below, above, right
 
  
  Ctrl-W x
+
  p
   switch windows around
+
   paste yanked text after cursor/line
 
+
  P
  Ctrl-W =
+
   paste yanked text before cursor/line
   balance window splits
 
 
   
 
   
  Ctrl-W _
+
  "ap
   maximize focused window horizontally
+
   paste 'a' register
  Ctrl-W |
+
  "0p
   maximize focused window vertically
+
   paste last yanked (not deleted) item
  
:qall
 
  quit all buffer windows on current tab
 
  
  
* http://vim.wikia.com/wiki/Fast_window_resizing_with_plus/minus_keys
+
* https://github.com/sickill/vim-pasta - Pasting in Vim with indentation adjusted to destination context.
  
  
* https://github.com/fabi1cazenave/suckless.vim - old
+
* https://github.com/roxma/vim-paste-easy - Automatically set paste for you
  
  
* [http://www.vim.org/scripts/script.php?script_id=3690 golden-ratio] - Resize windows automatically using the Golden Ratio
+
* https://github.com/machakann/vim-swap - Reorder delimited items.
  
  
* https://zhaocai.github.io/GoldenView.Vim
+
I<c-w><esc>
 +
  switch to insert, position the cursor on the first non-whitespace character, delete to the beginning of the line
  
  
* https://github.com/ccakes/stack.vim
+
* https://github.com/inkarkat/vim-UnconditionalPaste - Force character-/line-/block-wise paste, regardless of how it was yanked.
  
 
+
=== Change ===
* https://github.com/vim-scripts/zoomwintab.vim - doesn't work with dwm.vim
+
  c - change (delete and insert)
 
 
==== dwm.vim ====
 
* https://github.com/spolu/dwm.vim [http://news.ycombinator.com/item?id=4419530]
 
 
 
map <silent> <C-J> <C-W>w
 
map <silent> <C-K> <C-W>W
 
map <silent> <C-,> :call DWM_Rotate(0)<CR>
 
  map <silent> <C-.> :call DWM_Rotate(1)<CR>
 
 
   
 
   
  map <silent> <C-N> :call DWM_New()<CR>
+
  cc
  map <silent> <C-C> :call DWM_Close()<CR>
+
  delete current line including linebreak, insert
  map <silent> <C-Space> :call DWM_Focus()<CR>
+
cw
  map <silent> <C-@> :call DWM_Focus()<CR>
+
  delete to end of word from cursor, insert
   
+
c$
  map <silent> <C-H> :call DWM_GrowMaster()<CR>
+
  delete to end of line from cursor, insert
  map <silent> <C-L> :call DWM_ShrinkMaster()<CR>
+
ciw
 +
  delete inner word, insert
 +
ci"
 +
  change inner quoted string
 +
  ci(
 +
  change inner brackets
 +
  ci[
 +
  change inner contents of [].. ci], ci) for insert on closing bracket
 +
  caw
 +
  change an object
 +
  caW
 +
  change an object, including space
 +
  cit
 +
  change contents between opening and closing angle bracket tags
 +
  etc.
  
=== Tabs ===
+
=== Visual ===
* http://vim.wikia.com/wiki/Using_tab_pages
+
Selection highlighting.
  
* http://vim.wikia.com/wiki/Quick_tips_for_using_tab_pages
+
v
 
+
  visual select text
 
+
* http://vimcasts.org/episodes/working-with-tabs/
+
viw
 +
  visual inner word
 +
viw~
 +
  visual inner word, toggle case
 +
vip
 +
  visual inner paragraph
 +
vec
 +
  visual, end of word, change highlighted
 +
 +
V
 +
  visual select lines
 +
Ctrl-v
 +
  visual select a block
 +
 
 +
Vim now supports incrementing numbers in Visual mode. You can increment numbers by pressing CTRL-A, and decrement with CTRL-X. [https://medium.com/usevim/visual-mode-increment-cce60c8743dc]
 +
 
 +
=== Undo ===
 +
* http://vim.wikia.com/wiki/Undo_and_Redo
 +
 
 +
* http://vim.wikia.com/wiki/Using_undo_branches
  
* https://stackoverflow.com/questions/102384/using-vims-tabs-like-buffers - advice is generally not to go down that path
+
u
 +
  undo last change
 +
Ctrl-u
 +
  undo whilst in insert mode
 +
U
 +
  undo all changes to current line
 +
Ctrl-r
 +
  redo
  
 +
Ctrl-g
 +
  create new undo point
  
:tab new
 
  or
 
:tabe
 
  create new tab
 
 
:tabc
 
  close tab
 
  
:tabs
+
* https://github.com/chrisbra/histwin.vim - for browsing the undo tree
  list existing tabs
 
  
gt
+
* http://sjl.bitbucket.org/gundo.vim - a plugin to make browsing the undo tree less painful.
  go to next tab
 
gT
 
  go to previous tab
 
{i}gt
 
  go to tab in position i
 
  
:tab drop {file}
+
* https://github.com/mbbill/undotree - The ultimate undo history visualizer for VIM
  open {file} in a new tab, or jump to a window/tab containing the file if there is one
 
:tab split
 
  copy the current window to a new tab of its own
 
 
:tabm [n]
 
  move tab to nth position
 
:tabm
 
  move tab to last
 
:tab ball
 
  split all buffers into tabs
 
:tab help
 
  open a new help window in its own tab page
 
  
:bufdo qall
+
* https://github.com/sharpsaw/vim-dots/blob/master/.vim/plugin/betterdefaults.vim
  send qall command to all tabs
 
:wqall!
 
:xall!
 
  to check
 
  
 +
* https://github.com/jaxbot/selective-undo.vim
  
* https://github.com/kien/tabman.vim
 
  
* https://github.com/fholgado/minibufexpl.vim - a fork of Bindu Wavell's MiniBufExpl plugin for Vim.
+
* https://github.com/simnalamburt/vim-mundo?tab=readme-ov-file - Vim undo tree visualizer, a fork of Gundo, and it has bunch of improvements.
* [http://www.vim.org/scripts/script.php?script_id=1338 TabBar] - derived from miniBufExplorer [https://github.com/vim-scripts/TabBar]
 
  
* https://github.com/gcmt/taboo.vim - tab names
+
=== Indentation ===
* https://github.com/maxmeyer/vim-tabreorder
+
>
* https://github.com/kana/vim-tabpagecd
+
  # indent right
* https://github.com/benatkin/vim-move-between-tabs
+
 +
<
 +
  # indent left
  
* [http://www.vim.org/scripts/script.php?script_id=4432 zoomwintab.vim] - zoomwintab.vim is a simple zoom window plugin
+
=
 +
  # fix indentation for selection
 +
 +
==
 +
  # fix indentation for one line
 +
 +
V=
 +
  # visual select lines, then reformat with =
  
== Client/server ==
 
* http://vim.wikia.com/wiki/Enable_servername_capability_in_vim/xterm
 
* http://www.rohanjain.in/yet-another-vim-productivity-post-server-client/
 
* http://ajayfromiiit.wordpress.com/2009/10/21/server-and-client-mode-in-vim/
 
  
== Sessions ==
+
* https://github.com/dodie/vim-disapprove-deep-indentation [https://news.ycombinator.com/item?id=13807631]
* http://vimdoc.sourceforge.net/htmldoc/starting.html#views-sessions
 
  
:mks sessionsave.file
+
" If you select one or more lines, you can use < and > for shifting them sidewards. Unfortunately you immediately lose the selection afterwards. You can use gv to reselect the last selection (see :h gv), thus you can work around it like this in your config:
  save session
+
  xnoremap < <gv
   
+
  xnoremap > >gv
  vim -S sessionsave.file
 
  load session from cli
 
  
  
* https://github.com/xolox/vim-session - improves upon Vim's built-in :mksession command by enabling you to easily and (if you want) automatically persist and restore your Vim editing sessions. It works by generating a Vim script that restores your current settings and the arrangement of tab pages and/or split windows and the files they contain.
+
* https://github.com/nathanaelkane/vim-indent-guides - a plugin for visually displaying indent levels
** http://peterodding.com/code/vim/session
 
  
  
* https://github.com/tpope/vim-obsession - Vim features a :mksession command to write a file containing the current state of Vim: window positions, open folds, stuff like that. For most of my existence, I found the interface way too awkward and manual to be useful, but I've recently discovered that the only thing standing between me and simple, no-hassle Vim sessions is a few tweaks: Instead of making me remember to capture the session immediately before exiting Vim, allow me to do it at any time, and automatically re-invoke :mksession immediately before exit. Also invoke :mksession whenever the layout changes (in particular, on BufEnter), so that even if Vim exits abnormally, I'm good to go. If I load an existing session, automatically keep it updated as above. If I try to create a new session on top of an existing session, don't refuse to overwrite it. Just do what I mean. If I pass in a directory rather than a file name, just create a Session.vim inside of it. Don't capture options and maps. Options are sometimes mutilated and maps just interfere with updating plugins.
+
* https://github.com/Yggdroot/indentLine - A vim plugin to display the indention levels with thin vertical lines
  
  
* https://github.com/mhinz/vim-startify - provides dynamically created headers or footers and uses configurable lists to show recently used or bookmarked files and persistent sessions. All of this can be accessed in a simple to use menu that even allows to open multiple entries at once.
+
* http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste
  
== Coding ==
 
  
* https://vim.fandom.com/wiki/Use_Vim_like_an_IDE
+
* https://github.com/vim-scripts/Smart-Tabs - Use tabs for indent, spaces for alignment
 +
** http://www.emacswiki.org/emacs/SmartTabs
  
 +
=== Search and replace ===
 +
* http://vim.wikia.com/wiki/Search_and_replace
  
* https://github.com/AndrewRadev/inline_edit.vim - Edit code that's embedded within other code in a new buffer.
+
:s/foo/bar/ - search and replace first occurrence
 +
:s/foo/bar/s - search and replace, global current line
 +
:%s/foo/bar/g - search and replace, global whole file
 +
:%s/foo/bar/gc - search and replace, with confirm
  
 +
* http://vim.wikia.com/wiki/Search_and_replace_in_multiple_buffers
  
  
* [http://cdated.com/drawing-lambdas/ Drawing Lambdas] - "when I said I wanted to see lambdas in my code I didn’t mean inside of string literals, I meant actual lambdas as keywords."
 
  
 +
* https://github.com/henrik/vim-indexed-search
  
* https://github.com/kana/vim-arpeggio - Mappings for simultaneously pressed keys
+
=== Global action ===
 +
* http://vim.wikia.com/wiki/Power_of_g
  
 +
:[range]g/pattern/cmd
  
=== Highlighting ===
+
:g/LinesThatMatchThisRegex/ExecuteThisCommand
* [https://jordanelver.co.uk/blog/2015/05/27/working-with-vim-colorschemes/ Working with Vim highlight groups]
 
  
:so $VIMRUNTIME/syntax/hitest.vim
 
  # output all highlight groups
 
=== Text objects ===
 
* https://github.com/paradigm/TextObjectify  - a Vim plugin which improves text-objects
 
  
* https://github.com/coderifous/textobj-word-column.vim - word-based column text-object makes operating on columns of code conceptually simpler and reduces keystrokes.
+
:g/text string/d
 +
  delete all lines with text string
 +
 +
:!g/text string/d
 +
  delete all lines without text string [http://vim.wikia.com/wiki/Delete_all_lines_containing_a_pattern]
 +
 +
:g/pattern/d_
 +
  fast delete
  
 +
:g!/^\s*#/d
 +
  delete all lines without a #
  
=== Pasting ===
 
* https://github.com/sickill/vim-pasta - Pasting in Vim with indentation adjusted to destination context.
 
  
 +
qaq:g/pattern/y A
 +
  Explanation qaq is a trick to clear register a (qa starts recording a macro to register a, then q stops recording, leaving a empty). y A is an Ex command (:help :y). It yanks the current line into register A (append to register a).
  
* https://github.com/roxma/vim-paste-easy
 
  
 +
* https://github.com/takac/vim-commandcaps
  
=== Folds ===
+
=== Macros ===
Folds are sections of text reduced to one line (based on brackets, indentation, etc.). Folding is on by default. I have the foldlevel dialed up to 20 to avoid them.
+
qa - start recording macro 'a', q - stop recording
 +
qA - start appending to macro 'a'
 +
@a - play macro a
 +
@@ - execute again
 +
3@a - play macro 3 thrice
 +
 +
:let @a='macrogoeshere' - write macro manually
 +
Ctrl-R Ctrl-R a - insert mode
 +
:let @a='Ctrl-R Ctrl-R a - edit existing macro
  
zo - open fold
+
(macros are saved in registers)
zO - open fold recursively
+
 
zc - close fold
+
* https://www.hillelwayne.com/post/vim-macro-trickz [https://lobste.rs/s/y1ebsy/vim_macro_trickz]
zC - close fold resursive
 
zR - open all folds
 
zM - close all
 
zj - go down and up a fold
 
zk - go up a fold
 
  
=== Alignment ===
+
* https://www.reddit.com/r/vim/comments/8obazk/proving_vim_macros_are_turingcomplete_using/
  
* https://github.com/godlygeek/tabular - Vim script for text filtering and alignment
+
* https://www.reddit.com/r/programminghorror/comments/8oqq0g/i_thought_documenting_was_cool_back_when_i_first/e05qxhc/
  
 +
=== Registers ===
 +
* http://stackoverflow.com/questions/1497958/how-to-use-vim-registers
  
=== Completion ===
+
:reg
  [http://vimdoc.sourceforge.net/htmldoc/insert.html#compl-generic Ctrl-n]
+
  # list register contents
   # autocomplete keyword forwards
+
 +
  "adw
 +
  # delete word into the a register
 +
"_dw
 +
  # delete word into no register
 +
 +
"*
 +
   # system clipboard
 
   
 
   
  Ctrl-p
+
  "/
   # autocomplete keyword backwards
+
  # last search
 +
<C-r>/
 +
   # paste last search
 +
 
 +
* [http://blog.sanctum.geek.nz/advanced-vim-registers/ Advanced Vim registers]
  
[http://vimdoc.sourceforge.net/htmldoc/insert.html#ins-completion Ctrl-x]
 
  # completion mode
 
  
[http://vimdoc.sourceforge.net/htmldoc/insert.html#i_CTRL-X_CTRL-F Ctrl-x Ctrl-f]
+
* https://github.com/vim-scripts/clipbrd - Clipboard and other register content editor.
  # filepath completion mode
 
  
  
* [http://valloric.github.io/YouCompleteMe/ YouCompleteMe] - a fast, as-you-type, fuzzy-search code completion engine for Vim. It has several completion engines: an identifier-based engine that works with every programming language, a semantic, Clang-based engine that provides native semantic code completion for C/C++/Objective-C/Objective-C++ (from now on referred to as "the C-family languages"), a Jedi-based completion engine for Python and an omnifunc-based completer that uses data from Vim's omnicomplete system to provide semantic completions for many other languages (Ruby, PHP etc.).[http://news.ycombinator.com/item?id=5169062]
+
* https://github.com/junegunn/vim-peekaboo - extends " and @ in normal mode and <CTRL-R> in insert mode so you can see the contents of the registers.
  
  
* https://github.com/Shougo/neocomplcache - the abbreviation of "neo-completion with cache". It provides keyword completion system by maintaining a cache of keywords in the current buffer. neocomplcache could be customized easily and has a lot more features than the Vim's standard completion feature.
 
  
 +
https://github.com/vim-scripts/YankRing.vim - allows the user to configure the number of yanked, deleted and changed text.  A split window can be used to choose which element(s) from the yankring you wish to paste.  Alternately after text has been pasted (using p), it can be replaced with a previous value from the yankring with a single key stroke.
  
* https://github.com/Shougo/deoplete.nvim - Dark powered asynchronous completion framework for neovim/Vim8
+
* https://github.com/maxbrunsfeld/vim-yankstack - a lightweight implementation of the Emacs 'kill ring' for Vim. It allows you to yank and delete things without worrying about losing the text that you yanked previously. It effectively turns your default register into a stack, and lets you cycle through the items in the stack after doing a paste. This plugin is intended to be a simpler alternative to the yankring plugin. It has a fairly complete test suite based on rspec and vimbot.
  
  
* https://github.com/ervandew/supertab - allows you to use <Tab> for all your insert completion needs (:help ins-completion).
+
* https://github.com/vim-scripts/EasyClip - redirecting all change and delete operations to the black hole register and introducing a new operator, 'cut' (by default this is mapped to the m key for 'move').
  
 +
=== Sorting ===
 +
* http://vim.wikia.com/wiki/Sort_lines
  
* https://github.com/lifepillar/vim-mucomplete - Chained completion that works the way you want!
+
== Spaces ==
 +
* [http://blog.sanctum.geek.nz/buffers-windows-tabs/ Buffers, windows, and tabs]
  
 +
=== Buffers ===
 +
* http://vim.wikia.com/wiki/Buffers
  
* https://github.com/neoclide/coc.nvim - Intellisense engine for vim8 & neovim, full language server protocol support as VSCode [https://news.ycombinator.com/item?id=19529557]
+
An area of Vim's memory used to hold text read from a file. In addition, an empty buffer with no associated file can be created to allow the entry of text.
  
 +
:buffers
 +
:ls
 +
  # display open buffers
 +
 +
:buffer
 +
:bu
 +
:b [buffer number of any part of name]
 +
  # switch to a buffer
  
 +
set wildchar=<Tab> wildmenu wildmode=full
 +
  with this, :b [tab] gives a menu
  
* https://github.com/tpope/vim-surround - all about "surroundings": parentheses, brackets, quotes, XML tags, and more. The plugin provides mappings to easily delete, change and add such surroundings in pairs.
+
:bd
 +
  close buffer
  
* https://github.com/tpope/vim-unimpaired - pairs of handy bracket mappings
 
  
* https://github.com/Raimondi/delimitMate - provides insert mode auto-completion for quotes, parens, brackets, etc.
+
* https://github.com/qpkorr/vim-bufkill - provides :BD for close buffer but leave split window open
  
* https://github.com/kurkale6ka/vim-pairs - Punctuation text objects: ci/ da; vi@ yiq da<space> ...
 
  
  
=== Interface ===
+
* http://vim.wikia.com/wiki/Easier_buffer_switching
* https://github.com/laktek/distraction-free-writing-vim - Collection of configurations I use to for my distraction free editing environment in Vim
 
  
  
* [http://fmoralesc.github.com/vim-pad/ vim-pad] - A quick notetaking plugin for vim.
+
* [http://www.vim.org/scripts/script.php?script_id=2050 LustyJuggler] [https://github.com/sjbach/lusty]
  
  
* [http://projects.mikewest.org/vimroom vimroom] - Simulating a vaguely WriteRoom-like environment in Vim.
+
* [http://www.vim.org/scripts/script.php?script_id=2877 spinner.vim] : fast buffer/file/tab/window switching plugin with only 3 keys.
  
  
* [http://www.vim.org/scripts/script.php?script_id=664 scratch.vim] - Plugin to create and use a scratch Vim buffer
+
* https://github.com/danro/rename.vim
  
  
* http://vim-voom.github.io/ - outliner pane
+
* https://github.com/chrisbra/NrrwRgn - inspired by the Narrowing feature of Emacs and means to focus on a selected region while making the rest inaccessible. You simply select the region, call :NR and the selected part will open in a new split window while the rest of the buffer will be protected. Once you are finished, simply write the narrowed window (:w) and all the changes will be moved back to the original buffer.
  
 +
=== Windows ===
 +
* [http://vimdoc.sourceforge.net/htmldoc/windows.html Vim documentation: windows]
  
* http://stackoverflow.com/questions/563616/vim-and-ctags-tips-and-tricks
+
Windows are like tmux panes, awesome clients, i3 windows, etc. Windows can hold file buffers or plugins like Nerdtree, which are browsable via searches, etc.
  
 +
:sp [filename]
 +
  open file in new split window
  
* https://github.com/junegunn/goyo.vim - Distraction-free writing in Vim.
+
Ctrl-W w
 +
  move forward window
 +
Ctrl-W W
 +
  move backwards window
  
 +
Ctrl-W then h, j, k, l
 +
  move window focus to left, below, above, right
  
* https://github.com/junegunn/limelight.vim - different font colors for the paragraph in which the cursor is operating and the other paragraphs. Normally it works the way that the paragraph with the cursor (in which I am writing) maintains the normal font color while the other paragraphs turn into a grey that does not raise attention anymore.
+
Ctrl-W then H, J, K, L
 +
  move window in the direction of left, below, above, right
  
 +
Ctrl-W x
 +
  switch windows around
  
* https://github.com/amix/vim-zenroom2 - A Vim extension that emulates iA Writer environment when editing Markdown, reStructuredText or text files. It requires goyo.vim and it works by setting global Goyo callbacks that triggers special setup for Markdown, reStructuredText and text files.
+
Ctrl-W =
 +
  balance window splits
 +
 +
Ctrl-W _
 +
  maximize focused window horizontally
 +
Ctrl-W |
 +
  maximize focused window vertically
 +
 
 +
:qall
 +
  quit all buffer windows on current tab
  
  
=== Git ===
+
* http://vim.wikia.com/wiki/Fast_window_resizing_with_plus/minus_keys
* https://github.com/tpope/vim-fugitive - bestest gitwrapper
+
 
  
:Gwrite - git add file
+
* https://github.com/fabi1cazenave/suckless.vim - old
:Gread - git checkout (revert) open to staged version
 
:Gremove - git rm and close buffer
 
:Gmove - git mv file. with /, relative to git root; without, relative to file
 
:Gcommit - git commit, opens message buffer
 
:Gblame - open split window with git blame details
 
:Gbrowse - open Github, else git instaweb for local sevrer
 
  
<c-w>h<c-w>c
 
  exit :Gdiff mode
 
  
[[vim#diff]] resolution:
+
* [http://www.vim.org/scripts/script.php?script_id=3690 golden-ratio] - Resize windows automatically using the Golden Ratio
:diffget [buffer] - get diff from another buffer
 
:diffput [buffer] - put diff into another buffer
 
:diffupdate - update diff colouring
 
dg - get from other buffer pane (only 2 pane)
 
dp - put to other buffer pane (works in 3 pane)
 
[c - jump to previous changeset
 
]c - jump to next changeset
 
:only - close buffers other than active
 
  
  
* https://github.com/airblade/vim-gitgutter - shows a git diff in the 'gutter' (sign column). It shows whether each line has been added, modified, and where lines have been removed. breaks vim on script load on server side git repos for me.
+
* https://zhaocai.github.io/GoldenView.Vim
  
* https://github.com/mhinz/vim-signify - Sy sgitgutter.vim]hows all added, deleted and modified lines since the last commit via Vim its sign column. It supports several version control systems.
 
  
 +
* https://github.com/ccakes/stack.vim
  
* https://github.com/gregsexton/gitv - a ‘gitk clone’ plugin for the text editor Vim. The goal is to give you a similar set of functionality as a repository viewer. Using this plugin you can view a repository’s history including branching and merging, you can see which commits refs point to. You can quickly and easily view what changed to which files and when. You can perform arbitrary diffs (using Vim’s excellent built in diff functionality) and you can easily check out whole commits and branches or just individual files if need be.
 
  
* https://github.com/wting/gitsessions.vim - Automatically saves and loads sessions based on the current working directory and git branch name after the first manual save.
+
* https://github.com/vim-scripts/zoomwintab.vim - doesn't work with dwm.vim
  
 +
==== dwm.vim ====
 +
* https://github.com/spolu/dwm.vim [http://news.ycombinator.com/item?id=4419530]
  
 +
map <silent> <C-J> <C-W>w
 +
map <silent> <C-K> <C-W>W
 +
map <silent> <C-,> :call DWM_Rotate(0)<CR>
 +
map <silent> <C-.> :call DWM_Rotate(1)<CR>
 +
 +
map <silent> <C-N> :call DWM_New()<CR>
 +
map <silent> <C-C> :call DWM_Close()<CR>
 +
map <silent> <C-Space> :call DWM_Focus()<CR>
 +
map <silent> <C-@> :call DWM_Focus()<CR>
 +
 +
map <silent> <C-H> :call DWM_GrowMaster()<CR>
 +
map <silent> <C-L> :call DWM_ShrinkMaster()<CR>
  
* https://github.com/rhysd/committia.vim - When you type git commit, Vim starts and opens a commit buffer. This plugin improves the commit buffer. committia.vim splits the buffer into 3 windows; edit window, status window and diff window. You no longer need to repeat moving to another window, scrolling and backing to the former position in order to see a long commit diff.
+
=== Tabs ===
 +
* http://vim.wikia.com/wiki/Using_tab_pages
  
 +
* http://vim.wikia.com/wiki/Quick_tips_for_using_tab_pages
  
=== Linting ===
 
* https://github.com/w0rp/ale - Asynchronous Lint Engine, is a plugin for providing linting in NeoVim and Vim 8 while you edit your text files.
 
  
 +
* http://vimcasts.org/episodes/working-with-tabs/
  
=== Debugging ===
+
* https://stackoverflow.com/questions/102384/using-vims-tabs-like-buffers - advice is generally not to go down that path
* https://github.com/skibyte/gdb-from-vim - A plugin to debug program with gdb by using vim
 
  
== Syntax ==
 
=== General ===
 
* https://github.com/scrooloose/syntastic - a syntax checking plugin that runs files through external syntax checkers and displays any resulting errors to the user. This can be done on demand, or automatically as files are saved. If syntax errors are detected, the user is notified and is happy because they didn't have to compile their code or execute their script to find them. At the time of this writing, syntax checking plugins exist for applescript, c, coffee, cpp, css, cucumber, cuda, docbk, erlang, eruby, fortran, gentoo_metadata, go, haml, haskell, html, javascript, json, less, lua, matlab, perl, php, puppet, python, rst, ruby, sass/scss, sh, tcl, tex, vala, xhtml, xml, xslt, yaml, zpt
 
  
 +
:tab new
 +
  or
 +
:tabe
 +
  create new tab
 +
 +
:tabc
 +
  close tab
  
* [http://www.vim.org/scripts/script.php?script_id=273 taglist.vim] - Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc)
+
:tabs
** [https://github.com/yazug/vim-taglist-plus Taglist-plus] provides excellent Javascript support via jsctags- best fork of the fork
+
  list existing tabs
  
 +
gt
 +
  go to next tab
 +
gT
 +
  go to previous tab
 +
{i}gt
 +
  go to tab in position i
  
* https://github.com/Valloric/vim-operator-highlight - A plugin that highlights operator characters for every language.
+
:tab drop {file}
 +
  open {file} in a new tab, or jump to a window/tab containing the file if there is one
 +
:tab split
 +
  copy the current window to a new tab of its own
 +
 +
:tabm [n]
 +
  move tab to nth position
 +
:tabm
 +
  move tab to last
 +
:tab ball
 +
  split all buffers into tabs
 +
:tab help
 +
  open a new help window in its own tab page
  
 +
:bufdo qall
 +
  send qall command to all tabs
 +
:wqall!
 +
:xall!
 +
  to check
  
* https://github.com/nathanaelkane/vim-indent-guides - A Vim plugin for visually displaying indent levels in code
 
  
* https://github.com/Yggdroot/indentLine - display the indention levels with thin vertical lines
+
* https://github.com/kien/tabman.vim
  
 +
* https://github.com/fholgado/minibufexpl.vim - a fork of Bindu Wavell's MiniBufExpl plugin for Vim.
 +
* [http://www.vim.org/scripts/script.php?script_id=1338 TabBar] - derived from miniBufExplorer [https://github.com/vim-scripts/TabBar]
  
* https://github.com/chrisbra/Colorizer - A plugin to color colornames and codes
+
* https://github.com/gcmt/taboo.vim - tab names
 +
* https://github.com/maxmeyer/vim-tabreorder
 +
* https://github.com/kana/vim-tabpagecd
 +
* https://github.com/benatkin/vim-move-between-tabs
  
 +
* [http://www.vim.org/scripts/script.php?script_id=4432 zoomwintab.vim] - zoomwintab.vim is a simple zoom window plugin
  
* https://github.com/luochen1990/rainbow - Rainbow Parentheses Improved, shorter code, no level limit, smooth and fast, powerful configuration.
+
=== Sessions ===
 +
* http://vimdoc.sourceforge.net/htmldoc/starting.html#views-sessions
  
=== HTML ===
+
:mks sessionsave.file
==== Highlighting ====
+
  save session
* https://github.com/othree/html5.vim
+
 +
vim -S sessionsave.file
 +
  load session from cli
  
* [https://github.com/Valloric/MatchTagAlways MatchTagAlways.vim] - highlights the XML/HTML tags that enclose your cursor location.
 
  
* http://stackoverflow.com/questions/3232518/how-to-update-vim-to-color-code-new-html-elements
+
* https://github.com/xolox/vim-session - improves upon Vim's built-in :mksession command by enabling you to easily and (if you want) automatically persist and restore your Vim editing sessions. It works by generating a Vim script that restores your current settings and the arrangement of tab pages and/or split windows and the files they contain.
 +
** http://peterodding.com/code/vim/session
  
==== Creating and editing ====
 
* [http://mattn.github.com/zencoding-vim/ zencoding-vim] vim plugins for HTML and CSS hi-speed coding.
 
** https://github.com/mattn/zencoding-vim
 
** https://raw.github.com/mattn/zencoding-vim/master/TUTORIAL
 
** http://coding.smashingmagazine.com/2013/03/26/goodbye-zen-coding-hello-emmet/
 
  
* https://github.com/rstacruz/sparkup
+
* https://github.com/tpope/vim-obsession - Vim features a :mksession command to write a file containing the current state of Vim: window positions, open folds, stuff like that. For most of my existence, I found the interface way too awkward and manual to be useful, but I've recently discovered that the only thing standing between me and simple, no-hassle Vim sessions is a few tweaks: Instead of making me remember to capture the session immediately before exiting Vim, allow me to do it at any time, and automatically re-invoke :mksession immediately before exit. Also invoke :mksession whenever the layout changes (in particular, on BufEnter), so that even if Vim exits abnormally, I'm good to go. If I load an existing session, automatically keep it updated as above. If I try to create a new session on top of an existing session, don't refuse to overwrite it. Just do what I mean. If I pass in a directory rather than a file name, just create a Session.vim inside of it. Don't capture options and maps. Options are sometimes mutilated and maps just interfere with updating plugins.
** https://github.com/tristen/vim-sparkup
 
  
* [http://www.vim.org/scripts/script.php?script_id=1397 xml.vim] : helps editing xml (and [x]html, sgml, xslt) files
 
  
=== CSS ===
+
* https://github.com/mhinz/vim-startify - provides dynamically created headers or footers and uses configurable lists to show recently used or bookmarked files and persistent sessions. All of this can be accessed in a simple to use menu that even allows to open multiple entries at once.
* https://github.com/ap/vim-css-color - underlays the hexadecimal CSS colorcodes with their real color. The foreground color is selected appositely. So #FF0000 will look as hot as a fire engine! + Highlighting multiple colors on the same line (not sure if anyone uses it though), rgb and rgba color notation for all those fancy CSS3 niceties
 
* https://github.com/gorodinskiy/vim-coloresque
 
  
* https://github.com/hail2u/vim-css3-syntax - recent
+
== Coding ==
* [http://www.vim.org/scripts/script.php?script_id=3042 css3] - css3 syntax for vim
 
  
* https://github.com/vim-scripts/CSS-one-line--multi-line-folding
+
* https://vim.fandom.com/wiki/Use_Vim_like_an_IDE
 +
 
 +
 
 +
* https://github.com/AndrewRadev/inline_edit.vim - Edit code that's embedded within other code in a new buffer.
  
* https://github.com/ChrisYip/Better-CSS-Syntax-for-Vim - has vendor prefixes. breaks with scss [https://github.com/ChrisYip/Better-CSS-Syntax-for-Vim/issues/9] :/
 
  
=== SCSS ===
 
* https://github.com/cakebaker/scss-syntax.vim
 
  
=== JavaScript ===
+
* [http://cdated.com/drawing-lambdas/ Drawing Lambdas] - "when I said I wanted to see lambdas in my code I didn’t mean inside of string literals, I meant actual lambdas as keywords."
* https://github.com/pangloss/vim-javascript
 
  
* https://github.com/hallettj/jslint.vim
 
  
* https://github.com/sleistner/vim-jshint
+
* https://github.com/kana/vim-arpeggio - Mappings for simultaneously pressed keys
  
*https://github.com/othree/javascript-libraries-syntax.vim
 
  
* https://github.com/juvenn/mustache.vim
+
=== Text objects ===
 +
* https://github.com/paradigm/TextObjectify  - a Vim plugin which improves text-objects
  
=== PHP ===
+
* https://github.com/coderifous/textobj-word-column.vim - word-based column text-object makes operating on columns of code conceptually simpler and reduces keystrokes.
* https://github.com/StanAngeloff/php.vim
 
  
=== Other ===
 
* https://github.com/xolox/vim-lua-inspect
 
  
* https://github.com/tpope/vim-haml
+
=== Folds ===
 +
Folds are sections of text reduced to one line (based on brackets, indentation, etc.). Folding is on by default. I have the foldlevel dialed up to 20 to avoid them.
  
* http://drupal.org/node/1303122 - drupal .info/make/build
+
zo - open fold
 +
zO - open fold recursively
 +
zc - close fold
 +
zC - close fold resursive
 +
zR - open all folds
 +
zM - close all
 +
zj - go down and up a fold
 +
zk - go up a fold
  
* https://github.com/chase/nginx.vim
+
=== Text alignment ===
  
 +
* https://github.com/godlygeek/tabular - Vim script for text filtering and alignment
 +
** raw.github.com/godlygeek/tabular/master/doc/Tabular.txt
  
* https://github.com/Firef0x/PKGBUILD.vim - Vim plugin to help editing and working with PKGBUILD files
+
=== Auto-closing ===
  
=== Comments ===
+
* https://github.com/tpope/vim-surround - all about "surroundings": parentheses, brackets, quotes, XML tags, and more. The plugin provides mappings to easily delete, change and add such surroundings in pairs.
* https://github.com/tomtom/tcomment_vim - comment add/remove
 
Doesn't work with some languages
 
gc{motion}
 
  toggle comments (for small comments)
 
gcc
 
  toggle comment for the current line
 
gC{motion}
 
  comment region
 
gCc
 
  comment the current line
 
  
* https://github.com/scrooloose/nerdcommenter
 
  
* https://github.com/glts/vim-textobj-comment
+
* https://github.com/tpope/vim-unimpaired - pairs of handy bracket mappings
  
== Modeline ==
 
* [https://www.cs.swarthmore.edu/help/vim/modelines.html vim tips and tricks: modelines] - modelines allow you to set variables specific to a file. By default, the first and last five lines are read by vim for variable settings. For example, if you put the following in the last line of a C program, you would get a textwidth of 60 chars when editing that file:
 
  
/* vim: tw=60 ts=2: */
+
* https://github.com/Raimondi/delimitMate - provides insert mode auto-completion for quotes, parens, brackets, etc.
The modelines variable sets the number of lines (at the beginning and end of each file) vim checks for initializations.
 
  
  
* http://vim.wikia.com/wiki/Modeline_magic
+
* https://github.com/kurkale6ka/vim-pairs - Punctuation text objects: ci/ da; vi@ yiq da<space> ...
  
== Arrow keys ==
 
* http://codingfearlessly.com/2012/08/21/vim-putting-arrows-to-use/
 
  
== Config ==
+
* https://github.com/jiangmiao/auto-pairs - Insert or delete brackets, parens, quotes in pair.
* http://yoursachet.com/ - create config
 
  
* http://vimbits.com/ - config snippets
 
  
* http://vim.wikia.com/wiki/Understanding_VIMRUNTIME
+
* https://github.com/tpope/vim-endwise - wisely add "end" in ruby, endfunction/endif/more in vim script, etc
* http://vim.wikia.com/wiki/Set_VIMRUNTIME_within_vimrc
 
  
I chose /usr/share/config/vim
 
  
/usr/local/share/vim is a default $VIMRUNTIME though
+
* https://github.com/rstacruz/vim-closer - Perfect companion to vim-endwise. Basically, a more conservative version of auto-pairs that only works when you press Enter.
  
* https://github.com/milkmiruku/dotvim/blob/master/vimrc
 
  
 +
* https://github.com/cohama/lexima.vim - Auto close parentheses and repeat by dot dot dot...
  
If you're editing .vimrc, you can reload it with:
 
  
:so %
+
* https://github.com/LucHermitte/lh-brackets - provides various commands and functions to help design smart and advanced mappings dedicated to text insertion.
  
% stands for current file name (see :h current-file) and :so is short for :source, which reads the content of the specified file and treats it as Vim code. [http://superuser.com/questions/132029/how-do-you-reload-your-vimrc-file-without-restarting-vim]
 
  
In general, to re-load the currently active .vimrc, use the following (see Daily Vim):
 
  
:so $MYVIMRC
 
  
 +
* https://github.com/kylechui/nvim-surround - Add/change/delete surrounding delimiter pairs with ease. Written with ❤️ in Lua
  
* [https://vimways.org/2018/from-vimrc-to-vim/ Vimways ~ From .vimrc to .vim] - Attack of the 5,000-line vimrc [https://lobste.rs/s/35jaob/from_vimrc_vim]
+
=== Completion ===
  
== Vimscripts ==
+
[http://vimdoc.sourceforge.net/htmldoc/insert.html#compl-generic Ctrl-n]
* [http://vimawesome.com/ Vim Awesome] - a directory of Vim plugins sourced from GitHub, Vim.org, and user submissions. Plugin usage data is extracted from dotfiles repos on GitHub. [https://news.ycombinator.com/item?id=7951020]
+
  # autocomplete keyword forwards
 +
 +
Ctrl-p
 +
  # autocomplete keyword backwards
  
 +
[http://vimdoc.sourceforge.net/htmldoc/insert.html#ins-completion Ctrl-x]
 +
  # completion mode
  
* [http://learnvimscriptthehardway.stevelosh.com/ Learn Vimscript the Hard Way]
+
[http://vimdoc.sourceforge.net/htmldoc/insert.html#i_CTRL-X_CTRL-F Ctrl-x Ctrl-f]
 +
  # filepath completion mode
  
* [http://andrewscala.com/vimscript/ Five Minute Vimscript]
 
  
* https://devhints.io/vimscript
+
* https://github.com/Shougo/neocomplcache - the abbreviation of "neo-completion with cache". It provides keyword completion system by maintaining a cache of keywords in the current buffer. neocomplcache could be customized easily and has a lot more features than the Vim's standard completion feature.
  
  
* [http://www.vimpusher.com/plugins Vimpusher] - Vim setup sharing
+
* https://github.com/Shougo/deoplete.nvim - Dark powered asynchronous completion framework for neovim/Vim8
  
  
* http://vimcasts.org/episodes/profiling-vimscript-performance/
+
* https://github.com/ervandew/supertab - allows you to use <Tab> for all your insert completion needs (:help ins-completion).
  
* http://usevim.com/2012/04/18/startuptime/
 
  
* https://stackoverflow.com/questions/7642746/is-there-any-way-to-view-the-currently-mapped-keys-in-vim
+
* https://github.com/lifepillar/vim-mucomplete - Chained completion that works the way you want!
  
=== Script management ===
 
* [https://github.com/tpope/vim-pathogen pathogen.vim] - Manage your 'runtimepath' with ease. In practical terms, pathogen.vim makes it super easy to install plugins and runtime files in their own private directories.
 
** [http://vimcasts.org/episodes/synchronizing-plugins-with-git-submodules-and-pathogen/ vimcasts.org: Synchronizing plugins with git submodules and pathogen]
 
  
* [https://github.com/gmarik/vundle/ Vundle] is short for Vim bundle. Like pathogen but can install/update
+
* [http://valloric.github.io/YouCompleteMe/ YouCompleteMe] - a fast, as-you-type, fuzzy-search code completion engine for Vim. It has several completion engines: an identifier-based engine that works with every programming language, a semantic, Clang-based engine that provides native semantic code completion for C/C++/Objective-C/Objective-C++ (from now on referred to as "the C-family languages"), a Jedi-based completion engine for Python and an omnifunc-based completer that uses data from Vim's omnicomplete system to provide semantic completions for many other languages (Ruby, PHP etc.).[http://news.ycombinator.com/item?id=5169062]
** http://www.rousette.org.uk/blog/archives/vim-and-the-wonder-of-vundle/
 
** http://lepture.com/work/vundle-vs-pathogen/
 
  
* [https://github.com/Shougo/neobundle.vim NeoBundle] is Vim plugin manager based on Vundle.
+
* https://github.com/rdnetto/YCM-Generator - a script which generates a list of compiler flags from a project with an arbitrary build system. This plugin is in maintenance mode.
  
* https://github.com/Shougo/dein.vim - replaces NeoBundle
 
  
* [https://github.com/MarcWeber/vim-addon-manager VAM] - the short name for vim-addon-manager. You declare a set of plugins. VAM will fetch & activate them at startup or runtime depending on your needs. Activating means handling runtimepath and making sure all .vim file get sourced.
+
* https://github.com/JBakamovic/cxxd - C/C++ language server implemented on top of Clang frontend.
  
* [https://github.com/junegunn/vim-plug vim-plug] - A single-file Vim plugin manager. Somewhere between Pathogen and Vundle, but with faster parallel installer. [https://news.ycombinator.com/item?id=8312392]
 
  
 +
* https://github.com/JBakamovic/cxxd-vim - Vim frontend implementation for cxxd server.
  
  
* https://shapeshed.com/vim-packages/ [https://news.ycombinator.com/item?id=12760059]
+
* https://github.com/prabirshrestha/asyncomplete.vim - Async autocompletion for Vim 8 and Neovim with |timers|.This is inspired by nvim-complete-manager but written in pure Vim Script.
  
* http://vimhelp.appspot.com/repeat.txt.html#packages
 
  
* https://github.com/Carpetsmoker/packman.vim - simple Vim plugin/package manager. The ".vim" part of the name is a bit misleading, as it's really just a shell script. As the name hints, it relies on Vim's packages feature. At the time of writing, this is a relatively new feature that may not be available on your Vim. Use :echo has('packages') to find out. You can use pathogen to simulate this feature if your Vim is missing it.
+
* https://github.com/ajh17/VimCompletesMe - A super simple, super minimal, super light-weight tab-completion plugin for Vim.
  
  
=== Dashboard ===
+
==== Coc ====
* https://github.com/mhinz/vim-startify - If you start Vim without giving any filenames to it (or pipe stuff to it so it reads from STDIN), startify will show a small but pretty start screen which shows recently used files (using viminfo) and sessions by default. Additionally, you can define bookmarks, thus entries for files that always should be available in the start screen. It also eases handling of loading and saving sessions by only working with a certain directory.
+
* https://github.com/neoclide/coc.nvim - Intellisense engine for vim8 & neovim, full language server protocol support as VSCode [https://news.ycombinator.com/item?id=19529557]
  
=== Gist ===
+
* https://github.com/neoclide/coc-pairs - Auto pairs extension for coc.nvim
* https://github.com/mattn/gist-vim - for creating [http://gist.github.com gists]
 
  
* https://github.com/keith/gist.vim
+
=== Tags ===
 +
* https://vim.fandom.com/wiki/Browsing_programs_with_tags
  
* https://github.com/ajh17/vim-fist
+
* [https://andrew.stwrt.ca/posts/vim-ctags/ Vim and Ctags – Andrew Stewart]
  
=== Status ===
+
* http://stackoverflow.com/questions/563616/vim-and-ctags-tips-and-tricks
* [https://github.com/Lokaltog/powerline Powerline] is a utility plugin which allows you to create better-looking, more functional Vim statuslines.
 
** https://gist.github.com/brendonrapp/5944296
 
  
* [https://github.com/molok/vim-smartusline SmartusLine] is Vim plugin that changes the color of the statusline of the focused window according with the current mode (normal/insert/replace)
 
  
* https://github.com/bling/vim-airline [https://news.ycombinator.com/item?id=6002518]
+
* [http://www.vim.org/scripts/script.php?script_id=273 taglist.vim] - Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc)
 +
** https://github.com/yazug/vim-taglist-plus - provides excellent Javascript support via jsctags- best fork of the fork
  
  
* https://github.com/edkolev/promptline.vim - Simple shell prompt generator with support for powerline symbols and airline integration
+
* https://github.com/prabirshrestha/asyncomplete-tags.vim - provides tag auto completion for asyncomplete.vim via vim tagfiles
  
=== Services ===
 
* [http://danielchoi.com/software/vmail.html Vmail] is a Vim interface to Gmail.
 
  
=== Database ===
+
* https://github.com/ludovicchabant/vim-gutentags - a plugin that takes care of the much needed management of tags files in Vim. It will (re)generate tag files as you work while staying completely out of your way. It will even do its best to keep those tag files out of your way too. It has no dependencies and just works.
  
* https://github.com/tpope/vim-dadbod - Modern database interface for Vim  
+
=== Interface ===
 +
* https://github.com/laktek/distraction-free-writing-vim - Collection of configurations I use to for my distraction free editing environment in Vim
  
=== To sort ===
+
=== Vim Pad ===
* http://bling.github.io/blog/2013/06/02/unite-dot-vim-the-plugin-you-didnt-know-you-need/
+
* [http://fmoralesc.github.com/vim-pad/ vim-pad] - A quick notetaking plugin for vim.
** https://github.com/Shougo/unite.vim - old
 
** https://github.com/h1mesuke/unite-outline
 
  
 +
=== vimroom ===
 +
* [http://projects.mikewest.org/vimroom vimroom] - Simulating a vaguely WriteRoom-like environment in Vim.
  
 +
=== scratch.vim ===
 +
* [http://www.vim.org/scripts/script.php?script_id=664 scratch.vim] - Plugin to create and use a scratch Vim buffer
  
* [http://www.vim.org/scripts/script.php?script_id=746 cmdalias.vim] - Create aliases for Vim commands. [http://stackoverflow.com/questions/3878692/aliasing-a-command-in-vim]
+
=== VOoM ===
 +
* https://vim-voom.github.io - Vim Outliner of Markups, is a plugin for text editor Vim that turns Vim into a two-pane outliner.
  
 +
=== goyo.vim ===
 +
* https://github.com/junegunn/goyo.vim - Distraction-free writing in Vim.
  
* http://hartley.io/blog/2012/07/21/search-the-web-from-vim/
+
=== limelight.vim ===
 +
* https://github.com/junegunn/limelight.vim - different font colors for the paragraph in which the cursor is operating and the other paragraphs. Normally it works the way that the paragraph with the cursor (in which I am writing) maintains the normal font color while the other paragraphs turn into a grey that does not raise attention anymore.
  
 +
=== vim-zenroom2 ===
 +
* https://github.com/amix/vim-zenroom2 - A Vim extension that emulates iA Writer environment when editing Markdown, reStructuredText or text files. It requires goyo.vim and it works by setting global Goyo callbacks that triggers special setup for Markdown, reStructuredText and text files.
  
* [http://www.vim.org/scripts/script.php?script_id=2226 vimwiki] - Personal Wiki for Vim
+
=== Git ===
** http://www.stochasticgeometry.ie/2012/11/23/vimwiki/
+
* https://github.com/tpope/vim-fugitive - bestest gitwrapper
  
 +
:Gwrite - git add file
 +
:Gread - git checkout (revert) open to staged version
 +
:Gremove - git rm and close buffer
 +
:Gmove - git mv file. with /, relative to git root; without, relative to file
 +
:Gcommit - git commit, opens message buffer
 +
:Gblame - open split window with git blame details
 +
:Gbrowse - open Github, else git instaweb for local sevrer
  
* https://github.com/xolox/vim-notes
+
<c-w>h<c-w>c
 
+
  exit :Gdiff mode
  
* https://github.com/jceb/vim-orgmode - Text outlining and task management for Vim based on Emacs’ Org-Mode
+
[[vim#diff]] resolution:
 +
:diffget [buffer] - get diff from another buffer
 +
:diffput [buffer] - put diff into another buffer
 +
:diffupdate - update diff colouring
 +
dg - get from other buffer pane (only 2 pane)
 +
dp - put to other buffer pane (works in 3 pane)
 +
[c - jump to previous changeset
 +
]c - jump to next changeset
 +
:only - close buffers other than active
  
  
 +
* https://github.com/airblade/vim-gitgutter - shows a git diff in the 'gutter' (sign column). It shows whether each line has been added, modified, and where lines have been removed. breaks vim on script load on server side git repos for me.
  
* [https://github.com/msanders/snipmate.vim snipMate.vim] aims to be a concise vim script that implements some of TextMate's snippets features in Vim
+
* https://github.com/mhinz/vim-signify - Sy sgitgutter.vim]hows all added, deleted and modified lines since the last commit via Vim its sign column. It supports several version control systems.
** [https://vimeo.com/3535418 snipMate.vim Introductory Screencast]
 
** https://github.com/blup/snippets
 
  
* https://github.com/SirVer/ultisnips
 
  
* https://github.com/Shougo/neosnippet.vim
+
* https://github.com/gregsexton/gitv - a ‘gitk clone’ plugin for the text editor Vim. The goal is to give you a similar set of functionality as a repository viewer. Using this plugin you can view a repository’s history including branching and merging, you can see which commits refs point to. You can quickly and easily view what changed to which files and when. You can perform arbitrary diffs (using Vim’s excellent built in diff functionality) and you can easily check out whole commits and branches or just individual files if need be.
  
 +
* https://github.com/wting/gitsessions.vim  - Automatically saves and loads sessions based on the current working directory and git branch name after the first manual save.
  
  
* [https://github.com/vim-scripts/ZoomWin ZoomWin] - Zoom in/out of windows (toggle between one window and multi-window)
 
  
 +
* https://github.com/rhysd/committia.vim - When you type git commit, Vim starts and opens a commit buffer. This plugin improves the commit buffer. committia.vim splits the buffer into 3 windows; edit window, status window and diff window. You no longer need to repeat moving to another window, scrolling and backing to the former position in order to see a long commit diff.
  
* [https://github.com/fatih/subvim subvim] - Vim customized to be like SublimeText
 
  
 +
=== Linting ===
 +
 +
* https://github.com/w0rp/ale - Asynchronous Lint Engine, is a plugin for providing linting in NeoVim and Vim 8 while you edit your text files.
  
* HN: [http://news.ycombinator.com/item?id=4470283 Plugins you should put in your vimrc]
 
  
 +
=== Formatting ===
  
 +
* https://github.com/sbdchd/neoformat - uses a variety of formatters for many filetypes. Currently, Neoformat will run a formatter using the current buffer data, and on success it will update the current buffer with the formatted text. On a formatter failure, Neoformat will try the next formatter defined for the filetype.
  
* http://drupal.org/project/vimrc
 
* http://reluctanthacker.rollett.org/software/drupavim - post content using blog api
 
  
=== Creating ===
+
* https://github.com/segeljakt/vim-isotope - Insert superscripts and subscripts with ease
* http://stevelosh.com/blog/2011/09/writing-vim-plugins/
 
  
* https://devhints.io/vimscript-functions
+
=== Debugging ===
 +
* https://github.com/skibyte/gdb-from-vim - A plugin to debug program with gdb by using vim
  
 +
== Syntax ==
  
* https://github.com/LimpidTech/Vimpy - allows you to write Vim plugins without writing any Vimscript. This is done by abstracting Vim commands through a Pythonic interface.
+
* https://github.com/scrooloose/syntastic - a syntax checking plugin that runs files through external syntax checkers and displays any resulting errors to the user. This can be done on demand, or automatically as files are saved. If syntax errors are detected, the user is notified and is happy because they didn't have to compile their code or execute their script to find them. At the time of this writing, syntax checking plugins exist for applescript, c, coffee, cpp, css, cucumber, cuda, docbk, erlang, eruby, fortran, gentoo_metadata, go, haml, haskell, html, javascript, json, less, lua, matlab, perl, php, puppet, python, rst, ruby, sass/scss, sh, tcl, tex, vala, xhtml, xml, xslt, yaml, zpt
  
* https://github.com/google/vroom - for testing vim[scripts].
 
  
=== System ===
+
* https://github.com/sheerun/vim-polyglot - A collection of language packs for Vim.
* https://sanctum.geek.nz/arabesque/shell-from-vi/
 
  
  
* [http://code.google.com/p/conque/ Conque] is a Vim plugin which allows you to run interactive programs, such as bash on linux or powershell.exe on Windows, inside a Vim buffer. In other words it is a terminal emulator which uses a Vim buffer to display the program output.
+
* https://github.com/chrisbra/Colorizer - A plugin to color colornames and codes
** https://github.com/vim-scripts/Conque-Shell - not latest version
 
  
:ConqueTerm zsh
 
 
:ConqueTermSplit <command>
 
:ConqueTermVSplit <command>
 
:ConqueTermTab <command>
 
  
* https://github.com/tarruda/vim-conque-repl
 
  
 +
* [https://www.reddit.com/r/vim/wiki/where_to_put_filetype_specific_stuff where_to_put_filetype_specific_stuff - vim]
  
* https://github.com/vim-scripts/slimv.vim
 
  
* https://technotales.wordpress.com/2007/10/03/like-slime-for-vim/
+
=== Highlighting ===
** https://github.com/jpalardy/vim-slime
+
* [https://jordanelver.co.uk/blog/2015/05/27/working-with-vim-colorschemes/ Working with Vim highlight groups]
  
 +
:so $VIMRUNTIME/syntax/hitest.vim
 +
  # output all highlight groups
  
* https://github.com/Shougo/vimshell.vim
 
  
* [https://github.com/Bogdanp/browser-connect.vim browser-connect.vim] - implements a VIM interface for browser-connect-server in order to provide a live coding environment similar to the one currently available in LightTable.
+
* https://github.com/RRethy/vim-illuminate - for automatically highlighting other uses of the word under the cursor using either LSP, Tree-sitter, or regex matching.
  
* https://github.com/jaxbot/brolink.vim
 
  
* https://github.com/edkolev/promptline.vim
+
* https://github.com/bimlas/vim-high - All-in-one highlighter, highlight custom pattern like indentation, inactive window, word under the cursor
  
=== Math ===
 
  
* https://github.com/nixon/vim-vmath - Damian Conway's vmath plugin for vim as demonstrated at his OSCON 2013 "More Instantly Better Vim" presentation. Calculates the sum, average, min, and max for a visual region containing numbers.
+
* https://github.com/Valloric/vim-operator-highlight - A plugin that highlights operator characters for every language.
  
=== Frameworks ===
 
  
 +
* https://github.com/dominikduda/vim_current_word - Plugin highlighting word under cursor and all of its occurences
  
* [http://vim.spf13.com/ spf13-vim] - a distribution of vim plugins and resources for Vim, GVim and MacVim. It is a completely cross platform distribution that stays true to the feel of vim while providing modern features like a plugin management system, autocomplete, tags and tons more.
 
** https://github.com/spf13/spf13-vim
 
  
 +
* https://github.com/davits/autohighlight - Automatically highlights word under cursor after given timeout
  
* [https://spacevim.org/about/ SpaceVim] - a community-driven Vim distribution with layer feature. SpaceVim manages collections of plugins in layers. Layers make it easy for you, the user, to enable a new language or feature by grouping all the related plugins together. It got inspired by spacemacs. [https://news.ycombinator.com/item?id=19600807]
+
=== Scope ===
** https://github.com/SpaceVim/SpaceVim
+
* https://github.com/luochen1990/rainbow - Rainbow Parentheses Improved, shorter code, no level limit, smooth and fast, powerful configuration.
  
== Colours ==
 
* http://vim.wikia.com/wiki/View_all_colors_available_to_gvim
 
  
* http://choorucode.com/2011/07/29/vim-chart-of-color-names/ - image of above
+
* https://github.com/thiagoalessio/rainbow_levels.vim - highlights code by indentation level instead of language syntax.It is specially useful when dealing with deeply nested code or callback hells.
  
* https://github.com/sunaku/xterm-color-table.vim
+
=== Indentation ===
 +
* https://github.com/nathanaelkane/vim-indent-guides - A Vim plugin for visually displaying indent levels in code
  
=== Themes ===
 
  
* [http://bytefluent.com/vivify/ Vivify] - A ColorScheme Editor for Vim
+
* https://github.com/Yggdroot/indentLine - display the indention levels with thin vertical lines
  
  
* https://github.com/naquad/vim-picker - Color picker for console & GUI that can match colors.
+
* https://github.com/tweekmonster/braceless.vim - snake Text objects, folding, and more for Python and other indented languages.
  
 +
=== Comments ===
  
  
* https://github.com/molok/vim-vombato-colorscheme
+
gc{motion}
 +
  toggle comments (for small comments)
 +
gcc
 +
  toggle comment for the current line
 +
gC{motion}
 +
  comment region
 +
gCc
 +
  comment the current line
  
* https://github.com/kayaalpg/vim-sunflower
 
  
== Mouse ==
+
* https://github.com/tomtom/tcomment_vim - comment add/remove
* http://vim.wikia.com/wiki/Using_the_mouse_for_Vim_in_an_xterm
 
  
* http://superuser.com/questions/75141/mouse-wheel-scrolling-in-less-and-vim-using-urxvt
 
  
* http://tech.groups.yahoo.com/group/vimdev/message/63032
+
* https://github.com/tpope/vim-commentary - Comment stuff out. Use gcc to comment out a line (takes a count), gc to comment out the target of a motion (for example, gcap to comment out a paragraph), gc in visual mode to comment out the selection, and gc in operator pending mode to target a comment. You can also use it as a command, either with a range like :7,17Commentary, or as part of a :global invocation like with :g/TODO/Commentary. That's it.
  
== Voice ==
+
* https://github.com/numToStr/Comment.nvim - ⚡ Smart and Powerful commenting plugin for neovim ⚡
* https://github.com/AshleyF/VimSpeak
 
  
== Tmux integration ==
 
* https://github.com/benmills/vimux - Easily interact with tmux from vim.
 
  
  
* https://github.com/tpope/vim-tbone - Basic tmux support for Vim.
+
* https://github.com/scrooloose/nerdcommenter
  
  
* http://www.codeography.com/2013/06/19/navigating-vim-and-tmux-splits.html
+
* https://github.com/glts/vim-textobj-comment
  
* https://gist.github.com/mislav/5189704
+
=== HTML ===
 +
==== Highlighting ====
 +
* https://github.com/othree/html5.vim - HTML5 + inline SVG omnicomplete function, indent and syntax for Vim. Based on the default htmlcomplete.vim. Supports all new elements and attributes, SVG and MathML, microdata, RDFa, WAI-ARIA, Electron webview.
  
== Remote ==
 
* http://vim.wikia.com/wiki/Editing_remote_files_via_scp_in_vim
 
  
* [http://vimdoc.sourceforge.net/htmldoc/pi_netrw.html NETRW reference manual]
+
* https://github.com/Valloric/MatchTagAlways - highlights the XML/HTML tags that enclose your cursor location.
 +
 
  
* [http://thomer.com/howtos/netrw_ssh.html Speeding up Vim's Netrw plugin over ssh/scp]
+
* http://stackoverflow.com/questions/3232518/how-to-update-vim-to-color-code-new-html-elements
  
 +
==== Creating and editing ====
 +
* [http://mattn.github.com/zencoding-vim/ zencoding-vim] vim plugins for HTML and CSS hi-speed coding.
 +
** https://github.com/mattn/zencoding-vim
 +
** https://raw.github.com/mattn/zencoding-vim/master/TUTORIAL
 +
** http://coding.smashingmagazine.com/2013/03/26/goodbye-zen-coding-hello-emmet/
  
* [http://www.vim.org/scripts/script.php?script_id=1075 netrw.vim] : Network oriented reading, writing, and browsing
+
* https://github.com/rstacruz/sparkup
 +
** https://github.com/tristen/vim-sparkup
  
* http://sshmenu.sourceforge.net/articles/bcvi/ - open remote as local
+
* [http://www.vim.org/scripts/script.php?script_id=1397 xml.vim] : helps editing xml (and [x]html, sgml, xslt) files
  
== Collaboration ==
 
* https://github.com/FredKSchott/CoVim - Collaborative Editing for Vim (One of Vim's most requested features) is finally here! Think Google Docs for Vim.
 
  
 +
=== CSS ===
 +
* https://github.com/ap/vim-css-color -  A very fast, multi-syntax context-sensitive color name highlighter
  
* https://github.com/guyzmo/vim-etherpad - Plugin to enable collaborative edition on etherpad with the best editor
 
  
== Encryption ==
+
* https://github.com/gorodinskiy/vim-coloresque - css/less/sass/html color preview for vim
* http://vim.wikia.com/wiki/Edit_gpg_encrypted_files
 
  
* http://blogs.operationaldynamics.com/andrew/software/gnome-desktop/vim-gpg-integration
 
  
 +
* https://github.com/hail2u/vim-css3-syntax - CSS3 syntax (and syntax defined in some foreign specifications) support for Vim’s built-in syntax/css.vim
  
* [http://www.vim.org/scripts/script.php?script_id=3645 gnupg.vim] - Plugin for transparent editing of gpg encrypted files.
 
** https://github.com/jamessan/vim-gnupg
 
  
== Handy ==
+
* https://github.com/rstacruz/vim-hyperstyle - Type faster by shorthand that will auto-expand as you type. Supports less, sass, scss, stylus, and plain CSS.
:e scp://root@example.com/~user/folder/.config
+
 
  open remote file
+
 
$ vim scp://root@example.com/~user/folder/.config
+
* https://github.com/vim-scripts/CSS-one-line--multi-line-folding - sets you up so you edit and save multi-line CSS, but when you turn folding on, everything´s compressed on one line so you can scan through it easier.
 +
 
 +
=== SCSS ===
 +
* https://github.com/cakebaker/scss-syntax.vim
  
:reg
 
  list register contents
 
K
 
  in normal mode, run man for current word (opens "man word" in shell)
 
  
 +
=== JavaScript ===
 +
* https://github.com/pangloss/vim-javascript - Vastly improved Javascript indentation and syntax support in Vim.
  
* stackoverflow: [http://stackoverflow.com/questions/3997078/how-to-paste-text-into-vim-command-line/3997110#3997110 How to paste text into Vim command line]
 
  
 +
* https://github.com/sleistner/vim-jshint - A vim plugin that automatically run jshint on the current buffer. Old.
  
* https://github.com/mhinz/vim-startify - provides dynamically created headers or footers and uses configurable lists to show recently used or bookmarked files and persistent sessions. All of this can be accessed in a simple to use menu that even allows to open multiple entries at once. Startify doesn't get in your way and works out-of-the-box, but provides many options for fine-grained customization.
 
  
 +
* https://github.com/mxw/vim-jsx - Syntax highlighting and indenting for JSX. JSX is a JavaScript syntax transformer which translates inline XML document fragments into JavaScript objects. It was developed by Facebook alongside React
  
* https://github.com/vim-scripts/DrawIt - a plugin which allows one to draw lines left, right, up, down, and along both slants. Optionally one may "cap" the lines with arrowheads.  One may change the horizontal, vertical, slant, and crossing characters to whichever characters one wishes.
 
  
 +
* https://github.com/othree/javascript-libraries-syntax.vim - Syntax file for JavaScript libraries. Supports JavaScript libraries I am using (patches welcome).
  
* https://github.com/hsitz/VimOrganizer - like OrgMode
 
  
 +
* https://github.com/mustache/vim-mustache-handlebars - mustache and handlebars mode for vim
  
* http://vimcasts.org/blog/2013/05/vimprint---a-vim-keystroke-parser/ - parses Vim keystrokes and prints them prettily.
+
=== TypeScript ===
** https://github.com/nelstrom/vimprint
+
* https://github.com/HerringtonDarkholme/yats.vim - Yet Another TypeScript Syntax: The most advanced TypeScript Syntax Highlighting in Vim
  
== Vim everywhere ==
 
* http://stackoverflow.com/questions/826208/making-vim-ubiquitous
 
  
 +
=== PHP ===
 +
* https://github.com/StanAngeloff/php.vim -
 +
An up-to-date Vim syntax for PHP (7.x supported)
  
=== vim-anywhere ===
 
* https://github.com/cknadler/vim-anywhere - Once invoked, vim-anywhere will open a buffer. Close it and its contents are copied to your clipboard and your previous application is refocused.
 
  
 +
=== C / C++ ===
 +
* https://github.com/jeaye/color_coded - A vim plugin for libclang-based highlighting of C, C++, ObjC
  
=== File management ===
 
* http://vifm.sourceforge.net - Vi like hotkeys
 
  
 +
=== Lua ===
  
=== Shell integration ===
+
* https://github.com/xolox/vim-lua-inspect
* https://github.com/ardagnir/athame - Athame patches your shell to add full Vim support by routing your keystrokes through an actual Vim process. Athame can currently be used to patch readline (used by bash, gdb, python, etc) and/or zsh (which doesn't use readline). Don't most shells already come with a vi-mode? Yes, and if you're fine with basic vi imitations designed by a bunch of Emacs users, feel free to use them. ...but for the true Vim fanatics who sacrifice goats to the modal gods, Athame gives you the full power of Vim. [https://news.ycombinator.com/item?id=9340440]
 
  
* https://github.com/rkitover/vimpager - use vim as a pager
 
  
  
=== Browser navigation ===
+
* https://github.com/marcuscf/vim-lua - Lua syntax highlighting and indentation files for Vim
* [https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb Vimium] - a Chrome extension that provides keyboard-based navigation and control of the web in the spirit of the Vim editor.
 
** https://github.com/philc/vimium
 
  
 +
=== HAML ===
 +
* https://github.com/tpope/vim-haml
  
* https://github.com/ueokande/vim-vixen - Vim Vixen is a Firefox add-on which allows you to navigate with keyboard on the browser. Firefox started to support WebExtensions API and will stop supporting add-ons using legacy APIs from version 57. For this reason, many legacy add-ons do not work on Firefox 57. Vim Vixen is a new choice for Vim users since Vim Vixen uses the WebExtensions API.
+
=== Nginx ===
 
+
* https://github.com/chase/nginx.vim
 
+
 
* [https://chrome.google.com/webstore/detail/cvim/ihlenndgcmojhcghmfjfneahoeklbjjh?hl=en cVim - Chrome Web Store]
+
=== PKGBUILD ===
** https://github.com/1995eaton/chromium-vim
+
* https://github.com/Firef0x/PKGBUILD.vim - Vim plugin to help editing and working with PKGBUILD files
 
+
 
=== Browser textarea ===
+
=== GraphQL ===
* [https://chrome.google.com/webstore/detail/wasavi/dgogifpkoilgiofhhhodbodcfgomelhe wasavi] - an extension for Chrome, Opera and Firefox. wasavi transforms TEXTAREA element of any page into a VI editor, so you can edit the text in VI. wasavi supports almost all VI commands and some ex commands. wasavi is under development. Any bug report or feature request is welcome.
+
* https://github.com/jparise/vim-graphql - A Vim plugin that provides GraphQL file detection, syntax highlighting, and indentation.
** https://github.com/akahuku/wasavi
+
 
 
+
== Modeline ==
* https://github.com/ardagnir/pterosaur - Firefox textarea
+
* [https://www.cs.swarthmore.edu/help/vim/modelines.html vim tips and tricks: modelines] - modelines allow you to set variables specific to a file. By default, the first and last five lines are read by vim for variable settings. For example, if you put the following in the last line of a C program, you would get a textwidth of 60 chars when editing that file:
 
+
 
* [https://chrome.google.com/webstore/detail/ppoadiihggafnhokfkpphojggcdigllp textaid] - Chrome extension. As Chrome can't spawn child processes, text is passed to a local server which launches Vim.
+
/* vim: tw=60 ts=2: */
** http://gfxmonk.net/dist/0install/edit-server.xml
+
The modelines variable sets the number of lines (at the beginning and end of each file) vim checks for initializations.
** http://gfxmonk.net/2010/09/24/a-new-edit-server-for-textaid-and-friends.html
+
 
 +
 
 +
* http://vim.wikia.com/wiki/Modeline_magic
 +
 
 +
== Arrow keys ==
 +
* http://codingfearlessly.com/2012/08/21/vim-putting-arrows-to-use/
 +
 
 +
== Config ==
 +
* http://yoursachet.com/ - create config
 +
 
 +
* http://vimbits.com/ - config snippets
 +
 
 +
* http://vim.wikia.com/wiki/Understanding_VIMRUNTIME
 +
* http://vim.wikia.com/wiki/Set_VIMRUNTIME_within_vimrc
 +
 
 +
I chose /usr/share/config/vim
 +
 
 +
/usr/local/share/vim is a default $VIMRUNTIME though
 +
 
 +
* https://github.com/milkmiruku/dotvim/blob/master/vimrc
 +
 
 +
 
 +
If you're editing .vimrc, you can reload it with:
 +
 
 +
:so %
 +
 
 +
% stands for current file name (see :h current-file) and :so is short for :source, which reads the content of the specified file and treats it as Vim code. [http://superuser.com/questions/132029/how-do-you-reload-your-vimrc-file-without-restarting-vim]
 +
 
 +
In general, to re-load the currently active .vimrc, use the following (see Daily Vim):
 +
 
 +
:so $MYVIMRC
 +
 
 +
 
 +
* [https://vimways.org/2018/from-vimrc-to-vim/ Vimways ~ From .vimrc to .vim] - Attack of the 5,000-line vimrc [https://lobste.rs/s/35jaob/from_vimrc_vim]
 +
 
 +
 
 +
 
 +
 
 +
 
 +
* https://gist.github.com/johnnymillergh/a45b557af27fcbf8880172c3ece81726#file-vim-cheatsheet-md
 +
 
 +
== Vimscripts ==
 +
* [http://vimawesome.com/ Vim Awesome] - a directory of Vim plugins sourced from GitHub, Vim.org, and user submissions. Plugin usage data is extracted from dotfiles repos on GitHub. [https://news.ycombinator.com/item?id=7951020]
 +
 
 +
 
 +
* [http://learnvimscriptthehardway.stevelosh.com/ Learn Vimscript the Hard Way]
 +
 
 +
* [http://andrewscala.com/vimscript/ Five Minute Vimscript]
 +
 
 +
* https://devhints.io/vimscript
 +
 
 +
 
 +
* [http://www.vimpusher.com/plugins Vimpusher] - Vim setup sharing
 +
 
 +
 
 +
* http://vimcasts.org/episodes/profiling-vimscript-performance/
 +
 
 +
* http://usevim.com/2012/04/18/startuptime/
 +
 
 +
* https://stackoverflow.com/questions/7642746/is-there-any-way-to-view-the-currently-mapped-keys-in-vim
 +
 
 +
 
 +
* https://github.com/tpope/vim-sensible - Think of sensible.vim as one step above 'nocompatible' mode: a universal set of defaults that (hopefully) everyone can agree on.
 +
 
 +
 
 +
=== Script management ===
 +
* [https://github.com/tpope/vim-pathogen pathogen.vim] - Manage your 'runtimepath' with ease. In practical terms, pathogen.vim makes it super easy to install plugins and runtime files in their own private directories.
 +
** [http://vimcasts.org/episodes/synchronizing-plugins-with-git-submodules-and-pathogen/ vimcasts.org: Synchronizing plugins with git submodules and pathogen]
 +
 
 +
* [https://github.com/gmarik/vundle/ Vundle] is short for Vim bundle. Like pathogen but can install/update
 +
** http://www.rousette.org.uk/blog/archives/vim-and-the-wonder-of-vundle/
 +
** http://lepture.com/work/vundle-vs-pathogen/
 +
 
 +
* [https://github.com/Shougo/neobundle.vim NeoBundle] is Vim plugin manager based on Vundle.
 +
 
 +
* https://github.com/Shougo/dein.vim - replaces NeoBundle
 +
 
 +
* [https://github.com/MarcWeber/vim-addon-manager VAM] - the short name for vim-addon-manager. You declare a set of plugins. VAM will fetch & activate them at startup or runtime depending on your needs. Activating means handling runtimepath and making sure all .vim file get sourced.
 +
 
 +
* [https://github.com/junegunn/vim-plug vim-plug] - A single-file Vim plugin manager. Somewhere between Pathogen and Vundle, but with faster parallel installer. [https://news.ycombinator.com/item?id=8312392]
 +
 
 +
 
 +
 
 +
* https://shapeshed.com/vim-packages/ [https://news.ycombinator.com/item?id=12760059]
 +
 
 +
* http://vimhelp.appspot.com/repeat.txt.html#packages
 +
 
 +
* https://github.com/Carpetsmoker/packman.vim - simple Vim plugin/package manager. The ".vim" part of the name is a bit misleading, as it's really just a shell script. As the name hints, it relies on Vim's packages feature. At the time of writing, this is a relatively new feature that may not be available on your Vim. Use :echo has('packages') to find out. You can use pathogen to simulate this feature if your Vim is missing it.
 +
 
 +
 
 +
=== Dashboard ===
 +
* https://github.com/mhinz/vim-startify - If you start Vim without giving any filenames to it (or pipe stuff to it so it reads from STDIN), startify will show a small but pretty start screen which shows recently used files (using viminfo) and sessions by default. Additionally, you can define bookmarks, thus entries for files that always should be available in the start screen. It also eases handling of loading and saving sessions by only working with a certain directory.
 +
 
 +
 
 +
* https://github.com/junegunn/vim-github-dashboard - Browse GitHub events (user dashboard, user/repo activity) in Vim.
 +
 
 +
=== Gist ===
 +
* https://github.com/mattn/gist-vim - for creating [http://gist.github.com gists]
 +
 
 +
* https://github.com/keith/gist.vim
 +
 
 +
* https://github.com/ajh17/vim-fist
 +
 
 +
=== Status ===
 +
* [https://github.com/Lokaltog/powerline Powerline] is a utility plugin which allows you to create better-looking, more functional Vim statuslines.
 +
** https://gist.github.com/brendonrapp/5944296
 +
 
 +
* [https://github.com/molok/vim-smartusline SmartusLine] is Vim plugin that changes the color of the statusline of the focused window according with the current mode (normal/insert/replace)
 +
 
 +
* https://github.com/bling/vim-airline [https://news.ycombinator.com/item?id=6002518]
 +
 
 +
 
 +
* https://github.com/edkolev/promptline.vim - Simple shell prompt generator with support for powerline symbols and airline integration
 +
 
 +
=== Services ===
 +
* [http://danielchoi.com/software/vmail.html Vmail] is a Vim interface to Gmail.
 +
 
 +
=== Database ===
 +
 
 +
* https://github.com/tpope/vim-dadbod - Modern database interface for Vim
 +
 
 +
=== To sort ===
 +
* http://bling.github.io/blog/2013/06/02/unite-dot-vim-the-plugin-you-didnt-know-you-need/
 +
** https://github.com/Shougo/unite.vim - old
 +
** https://github.com/h1mesuke/unite-outline
 +
 
 +
 
 +
 
 +
* [http://www.vim.org/scripts/script.php?script_id=746 cmdalias.vim] - Create aliases for Vim commands. [http://stackoverflow.com/questions/3878692/aliasing-a-command-in-vim]
 +
 
 +
 
 +
* http://hartley.io/blog/2012/07/21/search-the-web-from-vim/
 +
 
 +
 
 +
* [http://www.vim.org/scripts/script.php?script_id=2226 vimwiki] - Personal Wiki for Vim
 +
** http://www.stochasticgeometry.ie/2012/11/23/vimwiki/
 +
 
 +
 
 +
* https://github.com/xolox/vim-notes
 +
 
 +
 
 +
* https://github.com/jceb/vim-orgmode - Text outlining and task management for Vim based on Emacs’ Org-Mode
 +
 
 +
 
 +
* https://github.com/alok/notational-fzf-vim - a note-taking script where searching for a note and creating one are the same operation. You search for a query, and if no note matches, it creates a new note with that query as the title.
 +
 
 +
 
 +
* [https://github.com/msanders/snipmate.vim snipMate.vim] aims to be a concise vim script that implements some of TextMate's snippets features in Vim
 +
** [https://vimeo.com/3535418 snipMate.vim Introductory Screencast]
 +
** https://github.com/blup/snippets
 +
 
 +
* https://github.com/SirVer/ultisnips
 +
 
 +
* https://github.com/Shougo/neosnippet.vim
 +
 
 +
 
 +
 
 +
* [https://github.com/vim-scripts/ZoomWin ZoomWin] - Zoom in/out of windows (toggle between one window and multi-window)
 +
 
 +
 
 +
* [https://github.com/fatih/subvim subvim] - Vim customized to be like SublimeText
 +
 
 +
 
 +
* HN: [http://news.ycombinator.com/item?id=4470283 Plugins you should put in your vimrc]
 +
 
 +
 
 +
 
 +
* http://drupal.org/project/vimrc
 +
* http://reluctanthacker.rollett.org/software/drupavim - post content using blog api
 +
 
 +
 
 +
* https://github.com/mattn/vim-brain -  Neural Networks written in Vim script
 +
 
 +
 
 +
 
 +
* https://github.com/Zeioth/vim-doxygen - automatically creates a doxyfile for your project, and regenerates the Doxygen documentation on save. It also has keybindings to open the Doxygen documentation quickly when you are coding. All this behaviors can be customized.
 +
 
 +
=== Creating ===
 +
* http://stevelosh.com/blog/2011/09/writing-vim-plugins/
 +
 
 +
* https://devhints.io/vimscript-functions
 +
 
 +
 
 +
* https://github.com/LimpidTech/Vimpy - allows you to write Vim plugins without writing any Vimscript. This is done by abstracting Vim commands through a Pythonic interface.
 +
 
 +
* https://github.com/google/vroom - for testing vim[scripts].
 +
 
 +
=== System ===
 +
* https://sanctum.geek.nz/arabesque/shell-from-vi/
 +
 
 +
 
 +
* [http://code.google.com/p/conque/ Conque] is a Vim plugin which allows you to run interactive programs, such as bash on linux or powershell.exe on Windows, inside a Vim buffer. In other words it is a terminal emulator which uses a Vim buffer to display the program output.
 +
** https://github.com/vim-scripts/Conque-Shell - not latest version
 +
 
 +
:ConqueTerm zsh
 +
 +
:ConqueTermSplit <command>
 +
:ConqueTermVSplit <command>
 +
:ConqueTermTab <command>
 +
 
 +
* https://github.com/tarruda/vim-conque-repl
 +
 
 +
 
 +
* https://github.com/vim-scripts/slimv.vim
 +
 
 +
* https://technotales.wordpress.com/2007/10/03/like-slime-for-vim/
 +
** https://github.com/jpalardy/vim-slime
 +
 
 +
 
 +
* https://github.com/Shougo/vimshell.vim
 +
 
 +
* [https://github.com/Bogdanp/browser-connect.vim browser-connect.vim] - implements a VIM interface for browser-connect-server in order to provide a live coding environment similar to the one currently available in LightTable.
 +
 
 +
* https://github.com/jaxbot/brolink.vim
 +
 
 +
* https://github.com/edkolev/promptline.vim
 +
 
 +
 
 +
* https://github.com/erietz/vim-terminator - Run your code in an output buffer or a vim terminal conveniently
 +
 
 +
 
 +
* https://github.com/sillybun/vim-repl - Best REPL environment for Vim
 +
 
 +
=== Math ===
 +
 
 +
* https://github.com/nixon/vim-vmath - Damian Conway's vmath plugin for vim as demonstrated at his OSCON 2013 "More Instantly Better Vim" presentation. Calculates the sum, average, min, and max for a visual region containing numbers.
 +
 
 +
=== Distributions ===
 +
 
 +
 
 +
* [http://vim.spf13.com/ spf13-vim] - a distribution of vim plugins and resources for Vim, GVim and MacVim. It is a completely cross platform distribution that stays true to the feel of vim while providing modern features like a plugin management system, autocomplete, tags and tons more.
 +
** https://github.com/spf13/spf13-vim
 +
 
 +
 
 +
* [https://spacevim.org/about/ SpaceVim] - a community-driven Vim distribution with layer feature. SpaceVim manages collections of plugins in layers. Layers make it easy for you, the user, to enable a new language or feature by grouping all the related plugins together. It got inspired by spacemacs. [https://news.ycombinator.com/item?id=19600807]
 +
** https://github.com/SpaceVim/SpaceVim
 +
 
 +
 
 +
* https://github.com/aeuveritas/clate - VIM as C/C++ & Python IDE on Docker
 +
 
 +
== Colours ==
 +
* http://vim.wikia.com/wiki/View_all_colors_available_to_gvim
 +
 
 +
* http://choorucode.com/2011/07/29/vim-chart-of-color-names/ - image of above
 +
 
 +
* https://github.com/sunaku/xterm-color-table.vim
 +
 
 +
=== Themes ===
 +
 
 +
* [http://bytefluent.com/vivify/ Vivify] - A ColorScheme Editor for Vim
 +
 
 +
 
 +
* https://github.com/naquad/vim-picker - Color picker for console & GUI that can match colors.
 +
 
 +
 
 +
 
 +
* https://github.com/chxuan/change-colorscheme
 +
 
 +
 
 +
* https://github.com/molok/vim-vombato-colorscheme
 +
 
 +
 
 +
* https://github.com/kayaalpg/vim-sunflower
 +
 
 +
 
 +
* https://gitlab.com/yorickpeterse/vim-paper - A personal light theme for (Neo)Vim, based on the color of paper as found in various notebooks.
 +
 
 +
== Mouse ==
 +
* http://vim.wikia.com/wiki/Using_the_mouse_for_Vim_in_an_xterm
 +
 
 +
* http://superuser.com/questions/75141/mouse-wheel-scrolling-in-less-and-vim-using-urxvt
 +
 
 +
* http://tech.groups.yahoo.com/group/vimdev/message/63032
 +
 
 +
== Voice ==
 +
* https://github.com/AshleyF/VimSpeak - lets you control Vim with your voice using speech recognition. For instance, you can say “select three words” to type v3w or “change surrounding brackets to parens” to type cs]) or crazy things like “change occurrences of ‘foo’ into ‘bar’, globally, ignore case, confirm” to type :%s/foo/bar/gic. Of course in insert mode you may dictate whatever you like. To learn the grammar, have a look at the unit tests and the code (“use the source, Luke”). It’s quite declarative and easy to follow.
 +
 
 +
 
 +
* https://github.com/ddevault/vimspeak - a plugin for connecting vim to espeak. It overrides the default behavior of the s and S keybindings. The former, when combined with a motion, will read the implicated text aloud - for example, s} will read the next paragraph, sw will read the next word, and ss will read the current line.
 +
 
 +
== Tmux integration ==
 +
* https://github.com/benmills/vimux - Easily interact with tmux from vim.
 +
 
 +
 
 +
* https://github.com/tpope/vim-tbone - Basic tmux support for Vim.
 +
 
 +
 
 +
* http://www.codeography.com/2013/06/19/navigating-vim-and-tmux-splits.html
 +
 
 +
* https://gist.github.com/mislav/5189704
 +
 
 +
== Remote ==
 +
* http://vim.wikia.com/wiki/Editing_remote_files_via_scp_in_vim
 +
 
 +
* [http://vimdoc.sourceforge.net/htmldoc/pi_netrw.html NETRW reference manual]
 +
 
 +
* [http://thomer.com/howtos/netrw_ssh.html Speeding up Vim's Netrw plugin over ssh/scp]
 +
 
 +
 
 +
* [http://www.vim.org/scripts/script.php?script_id=1075 netrw.vim] : Network oriented reading, writing, and browsing
 +
 
 +
* http://sshmenu.sourceforge.net/articles/bcvi/ - open remote as local
 +
 
 +
 
 +
* https://github.com/m-pilia/vim-mediawiki - plugin to help editing pages of a MediaWiki site from vim/neovim. It provides: filetype detection; improved syntax highlighting; page preview; semantic auto-completion of links and templates with a coc.nvim source; UltiSnips snippets; <plug> mappings for text objects; matching pairs for matchit.vim; integration with vim-surround
 +
 
 +
=== Client/server ===
 +
* [http://vimdoc.sourceforge.net/htmldoc/remote.html Vim documentation: remote]
 +
 
 +
* http://vim.wikia.com/wiki/Enable_servername_capability_in_vim/xterm
 +
 
 +
* http://www.rohanjain.in/yet-another-vim-productivity-post-server-client/
 +
 
 +
* http://ajayfromiiit.wordpress.com/2009/10/21/server-and-client-mode-in-vim/
 +
 
 +
== Collaboration ==
 +
* https://github.com/FredKSchott/CoVim - Collaborative Editing for Vim (One of Vim's most requested features) is finally here! Think Google Docs for Vim.
 +
 
 +
 
 +
* https://github.com/guyzmo/vim-etherpad - Plugin to enable collaborative edition on etherpad with the best editor
 +
 
 +
== Encryption ==
 +
* http://vim.wikia.com/wiki/Edit_gpg_encrypted_files
 +
 
 +
* http://blogs.operationaldynamics.com/andrew/software/gnome-desktop/vim-gpg-integration
 +
 
 +
 
 +
* [http://www.vim.org/scripts/script.php?script_id=3645 gnupg.vim] - Plugin for transparent editing of gpg encrypted files.
 +
** https://github.com/jamessan/vim-gnupg
 +
 
 +
== Handy ==
 +
:e scp://root@example.com/~user/folder/.config
 +
  open remote file
 +
$ vim scp://root@example.com/~user/folder/.config
 +
 
 +
K
 +
  in normal mode, run man for current word (opens "man word" in shell)
 +
 
 +
 
 +
* stackoverflow: [http://stackoverflow.com/questions/3997078/how-to-paste-text-into-vim-command-line/3997110#3997110 How to paste text into Vim command line]
 +
 
 +
 
 +
* https://github.com/mhinz/vim-startify - provides dynamically created headers or footers and uses configurable lists to show recently used or bookmarked files and persistent sessions. All of this can be accessed in a simple to use menu that even allows to open multiple entries at once. Startify doesn't get in your way and works out-of-the-box, but provides many options for fine-grained customization.
 +
 
 +
 
 +
* https://github.com/vim-scripts/DrawIt - a plugin which allows one to draw lines left, right, up, down, and along both slants. Optionally one may "cap" the lines with arrowheads.  One may change the horizontal, vertical, slant, and crossing characters to whichever characters one wishes.
 +
 
 +
 
 +
* https://github.com/hsitz/VimOrganizer - like OrgMode
 +
 
 +
 
 +
* http://vimcasts.org/blog/2013/05/vimprint---a-vim-keystroke-parser/ - parses Vim keystrokes and prints them prettily.
 +
** https://github.com/nelstrom/vimprint
 +
 
 +
== Neovim ==
 +
 
 +
* [http://neovim.org/ Neovim] - a refactor, and sometimes redactor, in the tradition of Vim (which itself derives from Stevie). It is not a rewrite but a continuation and extension of Vim. Many clones and derivatives exist, some very clever—but none are Vim. Neovim is built for users who want the good parts of Vim, and more. [https://news.ycombinator.com/item?id=7278214]
 +
** https://github.com/neovim/neovim
 +
** [https://neovim.io/news/2014/july/ Newsletter #2 - Perchance to Dream - Neovim] [https://news.ycombinator.com/item?id=7991967]
 +
 
 +
* [https://neovim.io/doc/ Documentation - Neovim]
 +
 
 +
* [https://neovim.io/doc/user/vim_diff.html Vim_diff - Neovim docs]
 +
 
 +
 
 +
* https://github.com/rockerBOO/awesome-neovim - Collections of awesome neovim plugins.
 +
 
 +
 
 +
 
 +
* [https://oli.me.uk/neovim-configuration-and-plugins-in-fennel-lisp/ Neovim configuration and plugins in Fennel (Lisp)] [https://news.ycombinator.com/item?id=21676606]
 +
 
 +
 
 +
 
 +
=== Collections / frameworks ===
 +
 
 +
* https://github.com/echasnovski/mini.nvim - Library of 20+ independent Lua modules improving overall Neovim (version 0.6 and higher, experience with minimal effort. They all share same configuration approaches and general design principles. Think about this project as "Swiss Army knife" among Neovim plugins: it has many different independent tools (modules) suitable for most common tasks. Each module can be used separately without any startup and usage overhead.
 +
 
 +
 
 +
* [https://www.lunarvim.org/ LunarVim] - An IDE layer for Neovim with sane defaults. Completely free and community driven.
 +
** https://github.com/lunarvim/lunarvim
 +
 
 +
=== GUIs ===
 +
* https://github.com/rohit-px2/nvui - A modern frontend for Neovim.
 +
 
 +
 
 +
* https://github.com/vhakulinen/gnvim - GNvim, Neovim GUI aiming for rich code editing experience without any unnecessary web bloat.
 +
 
 +
 
 +
=== Plugins ===
 +
* https://github.com/lewis6991/pckr.nvim
 +
 
 +
 
 +
* https://github.com/folke/lazy.nvim - a modern plugin manager for Neovim.
 +
 
 +
* [https://www.lazyvim.org LazyVim] - a Neovim setup powered by 💤 lazy.nvim to make it easy to customize and extend your config.
 +
** https://github.com/LazyVim/LazyVim
 +
 
 +
 
 +
=== Files ===
 +
* https://github.com/luukvbaal/nnn.nvim - File manager for Neovim powered by nnn.
 +
 
 +
* https://github.com/nvim-tree/nvim-tree.lua - A file explorer tree for neovim written in lua
 +
 
 +
=== LSP ===
 +
 
 +
* https://github.com/neovim/nvim-lspconfig/tree/master - Quickstart configs for Nvim LSP
 +
 
 +
=== Completion ===
 +
* https://github.com/hrsh7th/nvim-cmp - A completion plugin for neovim coded in Lua.
 +
 
 +
=== Comments ===
 +
 
 +
* https://github.com/numToStr/Comment.nvim - Smart and powerful comment plugin for neovim. Supports treesitter, dot repeat, left-right/up-down motions, hooks, and more
 +
 
 +
* https://github.com/JoosepAlviste/nvim-ts-context-commentstring - A Neovim plugin for setting the commentstring option based on the cursor location in the file. The location is checked via treesitter queries.
 +
 
 +
 
 +
=== Syntax ===
 +
 
 +
* https://github.com/nvim-treesitter/nvim-treesitter - Nvim Treesitter configurations and abstraction layer
 +
 
 +
 
 +
=== Cursor ===
 +
* https://github.com/sontungexpt/stcursorword - A concise, precise, and high-performance cursor word highlighting plugin for Neovim, implemented in Lua.
 +
 
 +
 
 +
* https://github.com/Rentib/cliff.nvim - Plugin that moves the cursor up/down until it almost falls off the cliff. The principle is very simple. If the cursor is positioned at position (row, column), then after calling cliff.go_down or cliff.go_up the cursor will move to the furthest row such that every line in between either is of length greater than column or every line is shorter than column.
 +
 
 +
=== FZF ===
 +
 
 +
 
 +
* https://github.com/junegunn/fzf.vim - Things you can do with fzf and Vim. fzf itself is not a Vim plugin, and the official repository only provides the basic wrapper function for Vim. It's up to the users to write their own Vim commands with it. However, I've learned that many users of fzf are not familiar with Vimscript and are looking for the "default" implementation of the features they can find in the alternative Vim plugins.
 +
 
 +
 
 +
* https://github.com/vijaymarupudi/nvim-fzf - An asynchronous Lua API for using fzf in Neovim (>= 0.5). Allows for full asynchronicity for UI speed and usability.
 +
 
 +
* https://github.com/vijaymarupudi/nvim-fzf-commands - Assorted commands using nvim-fzf
 +
 
 +
* https://github.com/ibhagwan/fzf-lua - Improved fzf.vim written in lua
 +
 
 +
 
 +
 
 +
== Vim everywhere ==
 +
 
 +
* https://github.com/erikw/vim-keybindings-everywhere-the-ultimate-list - The ultimate list of which programs support Vim-like keybindings natively, or how they can be added with extensions. A collaborative project.
 +
 
 +
 
 +
* http://stackoverflow.com/questions/826208/making-vim-ubiquitous
 +
 
 +
* [https://vim.reversed.top/ Big Pile of Vim-like] - Items of this type are applications that are intentionally created to be Vim-like in some respect (possibly disabled by default). Less Vim-like applications are in "Configurable" section. [https://news.ycombinator.com/item?id=21692418]
 +
 
 +
 
 +
=== vim-anywhere ===
 +
* https://github.com/cknadler/vim-anywhere - Once invoked, vim-anywhere will open a buffer. Close it and its contents are copied to your clipboard and your previous application is refocused.
 +
 
 +
 
 +
=== File management ===
 +
* http://vifm.sourceforge.net - Vi like hotkeys
 +
 
 +
 
 +
=== Other integration ===
 +
* https://github.com/ardagnir/athame - Athame patches your shell to add full Vim support by routing your keystrokes through an actual Vim process. Athame can currently be used to patch readline (used by bash, gdb, python, etc) and/or zsh (which doesn't use readline). Don't most shells already come with a vi-mode? Yes, and if you're fine with basic vi imitations designed by a bunch of Emacs users, feel free to use them. ...but for the true Vim fanatics who sacrifice goats to the modal gods, Athame gives you the full power of Vim. [https://news.ycombinator.com/item?id=9340440]
 +
 
 +
 
 +
* https://github.com/rkitover/vimpager - use vim as a pager
 +
 
 +
 
 +
* https://github.com/makerj/vim-pdf - helps VIM to read PDF files in text format using pdftotext utility.
 +
 
 +
 
 +
* https://github.com/ardagnir/vimbed - Vimbed is a Vim plugin for embedding Vim in other programs. Run Vim in the background using Vimbed to ease communication with external processes.
 +
 
 +
=== Browser navigation ===
 +
* [https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb Vimium] - a Chrome extension that provides keyboard-based navigation and control of the web in the spirit of the Vim editor.
 +
** https://github.com/philc/vimium
 +
 
 +
 
 +
* https://github.com/ueokande/vim-vixen - Vim Vixen is a Firefox add-on which allows you to navigate with keyboard on the browser. Firefox started to support WebExtensions API and will stop supporting add-ons using legacy APIs from version 57. For this reason, many legacy add-ons do not work on Firefox 57. Vim Vixen is a new choice for Vim users since Vim Vixen uses the WebExtensions API.
 +
 
 +
 
 +
* [https://chrome.google.com/webstore/detail/cvim/ihlenndgcmojhcghmfjfneahoeklbjjh?hl=en cVim - Chrome Web Store]
 +
** https://github.com/1995eaton/chromium-vim
 +
 
 +
=== Browser textarea ===
 +
* [https://chrome.google.com/webstore/detail/wasavi/dgogifpkoilgiofhhhodbodcfgomelhe wasavi] - an extension for Chrome, Opera and Firefox. wasavi transforms TEXTAREA element of any page into a VI editor, so you can edit the text in VI. wasavi supports almost all VI commands and some ex commands. wasavi is under development. Any bug report or feature request is welcome.
 +
** https://github.com/akahuku/wasavi
 +
 
 +
* https://github.com/ardagnir/pterosaur - Firefox textarea
 +
 
 +
* [https://chrome.google.com/webstore/detail/ppoadiihggafnhokfkpphojggcdigllp textaid] - Chrome extension. As Chrome can't spawn child processes, text is passed to a local server which launches Vim.
 +
** http://gfxmonk.net/dist/0install/edit-server.xml
 +
** http://gfxmonk.net/2010/09/24/a-new-edit-server-for-textaid-and-friends.html
 +
 
 +
* [https://github.com/GhostText/GhostText GhostText 👻] - Use your text editor to write in your browser. Everything you type in the editor will be instantly updated in the browser (and vice versa).
 +
 
 +
 
 +
* https://github.com/stsquad/emacs_chrome - A Chromium "clone" of It's All Text for spawning an editor to edit text areas in browsers. Based on David Hilley's original Chromium extension.
 +
 
 +
=== Javascript ===
 +
hmm.
 +
 
 +
* http://gpl.internetconnection.net/vi/
 +
* http://www.migniot.com/jsvim/
 +
* http://codemirror.net/demo/vim.html
 +
 
 +
* http://coolwanglu.github.io/vim.js/web/vim.html [https://news.ycombinator.com/item?id=6899072]
 +
 
 +
=== wasm ===
 +
 
 +
* [https://rhysd.github.io/vim.wasm/ Vim.Wasm]
 +
** https://github.com/rhysd/vim.wasm - Vim editor ported to WebAssembly [https://www.reddit.com/r/vim/comments/8x9ro3/vimwasm_vim_editor_ported_to_webassembly/] [https://news.ycombinator.com/item?id=19742599]
 +
 
 +
=== Live editing ===
 +
* https://github.com/jaxbot/brolink.vim - Browserlink is very simple. The plugin itself hooks autocommands for file changes (and other things) to the provided functions. The functions connect through HTTP to a node.js backend, which your webpage connects also to. The entire process happens extremely fast.
  
* [https://github.com/GhostText/GhostText GhostText 👻] - Use your text editor to write in your browser. Everything you type in the editor will be instantly updated in the browser (and vice versa).
+
=== Vim Online Editor ===
 +
* [https://www.vimonlineeditor.com/ tryit.js (~) - VIM] - Vim Online Editor (beta)
 +
** https://github.com/programmerhat/vim-online-editor -
  
 +
== Onivim ==
 +
* [https://www.onivim.io/ Onivim 2] - Onivim is a brand-new code editor — combining the modal ergonomics of Vim, the quick and responsive feel of a native app, and the vast extension ecosystem of VS Code.
 +
** https://github.com/onivim/oni
  
* https://github.com/stsquad/emacs_chrome - A Chromium "clone" of It's All Text for spawning an editor to edit text areas in browsers. Based on David Hilley's original Chromium extension.
+
== Etc ==
  
=== Javascript ===
+
* https://github.com/iqxd/vim-mine-sweeping -  mine sweeping game in vim and neovim
hmm.
 
 
 
* http://gpl.internetconnection.net/vi/
 
* http://www.migniot.com/jsvim/
 
* http://codemirror.net/demo/vim.html
 
  
* http://coolwanglu.github.io/vim.js/web/vim.html [https://news.ycombinator.com/item?id=6899072]
 
  
=== wasm ===
+
* https://github.com/skywind3000/vim-keysound - wine_glass Play typewriter sound in Vim when you are typing a letter
  
* https://github.com/rhysd/vim.wasm - Vim editor ported to WebAssembly [https://www.reddit.com/r/vim/comments/8x9ro3/vimwasm_vim_editor_ported_to_webassembly/]
 
  
=== Live editing ===
+
* https://github.com/oakes/vim_cubed - Most people use vim in two stupid dimensions. But not me. I use it in three. Vim rendered on a cube for no reason
* https://github.com/jaxbot/brolink.vim - Browserlink is very simple. The plugin itself hooks autocommands for file changes (and other things) to the provided functions. The functions connect through HTTP to a node.js backend, which your webpage connects also to. The entire process happens extremely fast.
 
  
== Neovim ==
 
  
* [http://neovim.org/ Neovim] - a refactor, and sometimes redactor, in the tradition of Vim (which itself derives from Stevie). It is not a rewrite but a continuation and extension of Vim. Many clones and derivatives exist, some very clever—but none are Vim. Neovim is built for users who want the good parts of Vim, and more.
+
* [https://www.vem-editor.org/ Vem Text Editor] - an alternative command layout for the Vim text editor. It provides full keyboard control over the editor while trying to be as simple and intuitive as possible. [https://www.reddit.com/r/vim/comments/ig8lfv/vem_an_alternative_command_layout_for_vim/]
** https://news.ycombinator.com/item?id=7278214
 
** https://news.ycombinator.com/item?id=7991967
 
  
  
* https://www.onivim.io
+
* https://github.com/Eandrju/cellular-automaton.nvim - A useless plugin that might help you cope with stubbornly broken tests or overall lack of sense in life. It lets you execute aesthetically pleasing, cellular automaton animations based on the content of neovim buffer.
** https://github.com/onivim/oni/
 

Latest revision as of 23:20, 2 April 2025

General

  • Vim - a highly configurable text editor for efficiently creating and changing any kind of text. It is included as "vi" with most UNIX systems and with Apple OS X. Vim is rock stable and is continuously being developed to become even better. Among its features are: persistent, multi-level undo tree; extensive plugin system; support for hundreds of programming languages and file formats powerful search and replace; integrates with many tools

Keystrokes can be chained together to combine actions, movements and selections into coolness. Folk using Vim 20 years still don't know it all. See also Emacs (though take care of your wrists).


  • Vim: help.txt - an HTML version of the Vim help pages, current as of Vim 8.1.1170. They are kept up-to-date automatically from the Vim source repository. Also included is the Vim FAQ, kept up to date from its github repository.


F1
  # open vim help in a split window




Reference










  • https://github.com/lifepillar/vim-cheat40 - a foldable extensible 40-column cheat sheet that you may open in Vim by pressing <leader>? (the mapping is customizable, of course). Mappings and commands are organized like the menus of a GUI app: there is a File section, an Edit section, a View section, and so on. For each item the description comes first, because one typically wants to find how to execute a task, not what the meaning of a key sequence is (there is Vim's help for that). Syntax coloring and the use of conceal keep the cheat sheet clutter-free and easy to read.




Images

  • Shortcut layout - a sample of movement/selection, layed out in their direction

Training

  • OpenVim - a web-based project to let people quickly have a taste what kind of an editor Vim is. Vim is considered to be very useful but can feel devastatingly opaque at first. Hopefully this tutorial makes people feel more comfortable to give it a chance. OpenVim is based on a custom engine that interprets vim commands. Fun fact: the engine operates directly on the dom but can be easily refactored to a model that is not view-dependent.



  • Vim Genius - Increase your speed and improve your muscle memory with Vim Genius, a timed flashcard-style game designed to make you faster in Vim. It’s free and you don’t need to sign up.


  • Snake Vim Trainer - Hone your vim navigation skillz. Make your Vim snake eat the food to increase your score. You can only eat food while INSERT mode is on. You cannot change direction while INSERT mode is on



  • Vim Master - Android app that was created in order to master the operation of vim editor. You can learn a vim operations in quiz format. There are three types of difficulty, Easy, Normal, and Hard. There are 150 questions in total. There are explanations for all questions. You can browse the history of the answered results of yours and other players. You can register your name as Vim Masters for the top grades. This app supports English and Japanese.

Video


  • YouTube: 7 Habits For Effective Text Editing 2.0 - "A large percentage of time behind the computer screen is spent on editing text. Investing a little time in learning more efficient ways to use a text editor pays itself back fairly quickly. This presentation will give an overview of the large number of ways of using Vim in a smart way to edit programs, structured text and documentation. Examples will be used to make clear how learning a limited number of habits will avoid wasting time and lower the number of mistakes. Bram Moolenaar is mostly known for being the benevolent dictator of the text editor Vim."





Articles











  • https://github.com/wikitopian/hardmode - Hard Mode is a plugin which disables the arrow keys, the hjkl keys, the page up/down keys, and a handful of other keys which allow one to rely on character-wise navigation. The philosophy behind Hard Mode is that you'll never master Vim's advanced motion and search functionality if you can fall back on the anti-pattern of fumbling around your code with the arrow keys.

VimGolf

  • VimGolf - Real Vim ninjas count every keystroke - do you? Head on over to vimgolf.com, pick a challenge, and show us what you've got! Each challenge provides an input file, and an output file. Your goal is to modify the input file such that it matches the output. Once you install the vimgolf CLI, pick a challenge, open a prompt and put away! When you launch a challenge from the command line, it will be downloaded from the site and a local Vim session will be launched, which will log every keystroke you make. Once you're done, simply :wq (write and quit) the session and we will score your input and upload it back to the site!
gem install vimgolf
vimgolf setup
vimgolf put [challenge ID]

Packages and support

Building


Debugging

:map ;
  what is ; mapped to

:verbose  map ;
  include where ; is mapped from

Modes




Normal

:help Normal-mode

Insert

:help Insert-mode
i
  enter insert mode from normal mode

r
  enter replace mode - deletes selected character, enters insert then returns to normal after a new character has been entered
Ctrl-o
  perform normal mode command in insert mode
Ctrl-Y
  copy character from line above

Ctrl-E
  copy character from line below

Visual

:help Visual-mode
v
  enter visual mode from normal mode
V
  enter visual linewise mode
Ctrl+v
  enter visual block mode



Select

:help Select-mode

like the visual mode but with more CUA like behavior. if you type a single character it replaces the selection. you lose access to all one key operations on selections.

This mode is usually activated by:

:behave mswin
  activate select mode (default for MS-Windows installations)
:behave xterm
  return to normal mode

Command-line

:help Command-line-mode
:
  enter command-line mode

Ex

:help Ex-mode
Q
  enter :Ex mode

:visual
  exit :Ex mode
Ctrl-B
  beginning of line

Ctrl-E
  end of line
:%!markdown
  # % = all lines, ! = external command, markdown = a md2html app

File operations

Command line

vim filename
  edit file (or create a buffer if file doesn't exist)

If you want to start vim with several files in a splitted window, just type;

vim -o a b c

for the horizontal split, and

vim -O a b c

for the vertical split.

  • https://github.com/c00kiemon5ter/v - z for vim. uses viminfo's list of recently edited files to open one quickly no matter where you are in the filesystem. by default, it will open the most recently edited file matching all of the provided regular expressions.

In Vim

:e filename
  open filename in vim

:w
  save
:w filename
  save as
:q
  quit if saved
:x
  save if changed and quit, same as :wq
ZZ
  save as above
ZQ
  even if not saved (also :q!)
:ex .
  explore files in file directory. opens in split pans if file modified.
:Sex
  as above but forces split
:Vex
  as above but vertical split
:Tex
  as above but in new tab

<enter>
  open file
o
  open file in new split buffer

display;

:echo @%
  directory/name of file
:echo expand('%:t')
  name of file ('tail')
:echo expand('%:p')
  full path
:echo expand('%:p:h')
  directory containing file ('head')

File navigation

:e .
:Explore
  # bring up internal netrw file browser

gh
  # toggle hidden files
a
  # cycle between types of files hidden

~
  # jump to home folder
-


  • https://github.com/tpope/vim-vinegar - enhances netrw, partially in an attempt to mitigate the need for more disruptive "project drawer" style plugins. Some of the behaviors added by vinegar.vim would make excellent upstream additions. Many, the author would probably reject. Others are a bit too wild to even consider.







Cursor

:set cursorline





Motion

gg
  start of file
G
  end of file

123G
  move to line 123
:123
  move to line 123 (easier imo)
0
  line beginning
^
  first non-whitespace character
$
  line end
w
  forward to start next word
W
  forward to start of next WORD (ignoring hyphens, etc.)

e
  forward to end of word
E
  forward to end of WORD (ignoring hyphens, etc.)

b
  backward word
B
  backward WORD

ge
  backward to the end of word [count] |inclusive|.
gE
  backward to the end of WORD [count] |inclusive|. [18]
(
  beginning of previous sentence
)
  next sentence
%
  current brace
{
  beginning of previous
}
  next paragraph


H
  cursor to top of screen (high)
M
  cursor to middle of screen (middle)
L
  cursor to bottom of screen (low)


Ctrl-e
  Moves screen up one line
Ctrl-y
  Moves screen down one line

Ctrl-u
  Moves screen up ½ page
Ctrl-d
  Moves screen down ½ page

Ctrl-b
  Moves screen up one page
Ctrl-f
  Moves screen down one page [19]


ma
  mark cursor position 'a'
'a
  move to mark position 'a'


:jumps
 Display the jump list for the current window with:
Ctrl-o
  move back location
Ctrl-i
  move forward location
g;
gj
  move down a soft linebreak line

g,
  move back one edit list location
g,
  move forward one edit list location


zz
  centre screen on cursor
z.
  centre screen on cursor, cursor to first non-whitespace character

zt
  move screen top to cursor
z<CR>
  move screen top to cursor, cursor to first non-whitespace character

zb
   move screen bottom to cursor
z-
   move screen bottom to cursor, cursor to first non-whitespace characterx


  • https://github.com/tpope/vim-rsi - You know Readline key bindings? Of course you do, they're in your shell, your REPL, and perhaps even the GUI for your OS. They're similar to Emacs key bindings (C-a for home), but with several concessions for UNIX (C-w for delete word). With rsi.vim, I've taken that same concession philosophy and extended it to Vim. Get the most useful of the ubiquitous key bindings without blindly overriding built-in Vim functionality.




  • repmo.vim - repeat motions for which a count was given








Finding things

/
  search for text
  • https://github.com/google/vim-searchindex - shows how many times does a search pattern occur in the current buffer. After each search, it displays total number of matches, as well as the index of a current match, in the command line:
*
  search for text under cursor

n
  repeat search forwards
N
  repeat search backwards


fX
  move to next X on same line

3FX
  move to third last X on same line

tX
  move to character before next X on same line

T2X
  move to second previous X on same line

;
  repeat find/to movement command
,
  repeat find/to movement in opposite direction


  • https://github.com/svermeulen/vim-extended-ft - adds the following behaviour to the default behaviour of the f, F, t, and T commands: Multiline - Can search across multiple lines or continue searching across multiple lines using ; and , keys, Smart Case - When the search character is lower case it matches both lower and upper case, and when the character is uppercase it matches only upper case. Allow repeating t and T commands using ; or , commands. Highlighting - Which is disabled automatically when moving your cursor afterwards. It's also worth noting that it only adds the new position to the jumplist if you've changed lines.


  • https://github.com/dahu/vim-fanfingtastic - a Vim plugin that enhances the builtin F f , T t and ; keys by allowing them to wrap over lines with the full gamut of normal, visual and operator pending mode supported. This is all the default configuration of Fanf,ingTastic; provides, however the following enhanced functionality can be enabled through configuration options: Case insensitivity: Fanf,ingTastic; is case sensitive by default but can be set to ignore case so that fx will match either x or X. Aliases: Fanf,ingTastic; allows you to create aliases which specify a set of characters that will be scanned for when FfTt;, is used on that alias


  • https://github.com/rhysd/clever-f.vim - extends f, F, t and T mappings for more convenience. Instead of ;, f is available to repeat after you type f{char} or F{char}. F after f{char} and F{char} is also available to undo a jump. t{char} and T{char} are ditto. This extension makes a repeat easier and makes you forget the existence of ;. You can use ; for other key mapping. In addition, this extension provides many convenient features like target character highlighting, smart case matching and so on.


  • https://github.com/goldfeld/vim-seek - aims to make inline navigation effortless. The motion seek, summoned with s by default, is similar to f, but instead of one it expects two characters.


  • https://github.com/Lokaltog/vim-easymotion - provides a much simpler way to use some motions in vim. It takes the <number> out of <number>w or <number>f{char} by highlighting all possible choices and allowing you to press one key to jump directly to the target.



  • Command-T - plug-in for VIM provides an extremely fast, intuitive mechanism for opening files with a minimal number of keystrokes. It's named "Command-T" because it is inspired by the "Go to File" window bound to Command-T in TextMate. Files are selected by typing characters that appear in their paths, and are ordered by an algorithm which knows that characters that appear in certain locations (for example, immediately after a path separator) should be given more weight. [22]
  • FuzzyFinder - FuzzyFinder provides convenient ways to quickly reach the

buffer/file/command/bookmark/tag you want. FuzzyFinder searches with the fuzzy/partial pattern to which it converted an entered pattern.


  • ctrlp.vim - Full path fuzzy file, buffer, mru, tag, ... finder for Vim.



Line numbers

Operations

.
  repeat last change. doesn't work with plugin actions without script.
i
  insert at cursor
I
  insert at line beginning
a
  append after the cursor
A
  append at the end of the line
o
  add ('open') line below and insert
O
  add line above and insert
x
  delete character under cursor
X
  delete character before cursor
s
  change one character and insert

Delete, yank and paste

Cut, copy, paste.

y
  yank (copy) current text
yy
  yank current line
"+yy
  yank current line to system clipboard

:%y+
  yank all lines to clipboard [24]


d
  delete and yank (cut)
df*
  delete to (find) and including *
dl
  delete character (alias: "x")
dd
  delete current line including linebreak
dw
  delete to end of word from cursor including space
dE
  delete to end of word from cursor leaving spae
d$
  delete to end of line from cursor

diw
  delete inner word
diW
  delete inner WORD
daw
  delete word, up to delimiter
daW
  delete WORD, including previous space
dis
  delete inner sentence
das
  delete a sentence
dib
  delete inner '(' ')' block
dab
  delete a '(' ')' block
dip
  delete inner paragraph
dap
  delete a paragraph
diB
  delete inner '{' '}' block
daB
  delete a '{' '}' block
3dk would delete 4 lines in the upward direction
"add
  delete line, yank to 'a' register
"Add
  delete line, append yank to 'a' register

"_d
  delete line to blackhole register (no yank)
p
  paste yanked text after cursor/line
P
  paste yanked text before cursor/line

"ap
  paste 'a' register
"0p
  paste last yanked (not deleted) item





I<c-w><esc>
  switch to insert, position the cursor on the first non-whitespace character, delete to the beginning of the line


Change

c - change (delete and insert)

cc
  delete current line including linebreak, insert
cw
  delete to end of word from cursor, insert
c$
  delete to end of line from cursor, insert
ciw
  delete inner word, insert
ci"
  change inner quoted string
ci(
  change inner brackets
ci[
  change inner contents of [].. ci], ci) for insert on closing bracket
caw
  change an object
caW
  change an object, including space
cit
  change contents between opening and closing angle bracket tags
etc.

Visual

Selection highlighting.

v
  visual select text

viw
  visual inner word
viw~
  visual inner word, toggle case
vip
  visual inner paragraph
vec
  visual, end of word, change highlighted

V
  visual select lines
Ctrl-v
  visual select a block

Vim now supports incrementing numbers in Visual mode. You can increment numbers by pressing CTRL-A, and decrement with CTRL-X. [25]

Undo

u
  undo last change
Ctrl-u
  undo whilst in insert mode 
U
  undo all changes to current line
Ctrl-r
  redo
Ctrl-g
  create new undo point



Indentation

>
  # indent right

<
  # indent left
=
  # fix indentation for selection

==
  # fix indentation for one line

V=
  # visual select lines, then reformat with =


" If you select one or more lines, you can use < and > for shifting them sidewards. Unfortunately you immediately lose the selection afterwards. You can use gv to reselect the last selection (see :h gv), thus you can work around it like this in your config:

 xnoremap <  <gv
 xnoremap >  >gv





Search and replace

:s/foo/bar/ - search and replace first occurrence
:s/foo/bar/s - search and replace, global current line
:%s/foo/bar/g - search and replace, global whole file
:%s/foo/bar/gc - search and replace, with confirm


Global action

:[range]g/pattern/cmd
:g/LinesThatMatchThisRegex/ExecuteThisCommand


:g/text string/d
  delete all lines with text string

:!g/text string/d
  delete all lines without text string [27]

:g/pattern/d_
  fast delete
:g!/^\s*#/d
  delete all lines without a #


qaq:g/pattern/y A
  Explanation qaq is a trick to clear register a (qa starts recording a macro to register a, then q stops recording, leaving a empty). y A is an Ex command (:help :y). It yanks the current line into register A (append to register a).


Macros

qa - start recording macro 'a', q - stop recording
qA - start appending to macro 'a'
@a - play macro a
@@ - execute again
3@a - play macro 3 thrice

:let @a='macrogoeshere' - write macro manually
Ctrl-R Ctrl-R a - insert mode
:let @a='Ctrl-R Ctrl-R a - edit existing macro

(macros are saved in registers)

Registers

:reg
  # list register contents

"adw
  # delete word into the a register
"_dw
  # delete word into no register

"*
  # system clipboard

"/
  # last search
<C-r>/
  # paste last search




https://github.com/vim-scripts/YankRing.vim - allows the user to configure the number of yanked, deleted and changed text. A split window can be used to choose which element(s) from the yankring you wish to paste. Alternately after text has been pasted (using p), it can be replaced with a previous value from the yankring with a single key stroke.

  • https://github.com/maxbrunsfeld/vim-yankstack - a lightweight implementation of the Emacs 'kill ring' for Vim. It allows you to yank and delete things without worrying about losing the text that you yanked previously. It effectively turns your default register into a stack, and lets you cycle through the items in the stack after doing a paste. This plugin is intended to be a simpler alternative to the yankring plugin. It has a fairly complete test suite based on rspec and vimbot.


  • https://github.com/vim-scripts/EasyClip - redirecting all change and delete operations to the black hole register and introducing a new operator, 'cut' (by default this is mapped to the m key for 'move').

Sorting

Spaces

Buffers

An area of Vim's memory used to hold text read from a file. In addition, an empty buffer with no associated file can be created to allow the entry of text.

:buffers
:ls
  # display open buffers

:buffer
:bu
:b [buffer number of any part of name]
  # switch to a buffer
set wildchar=<Tab> wildmenu wildmode=full
  with this, :b [tab] gives a menu
:bd
  close buffer





  • spinner.vim : fast buffer/file/tab/window switching plugin with only 3 keys.



  • https://github.com/chrisbra/NrrwRgn - inspired by the Narrowing feature of Emacs and means to focus on a selected region while making the rest inaccessible. You simply select the region, call :NR and the selected part will open in a new split window while the rest of the buffer will be protected. Once you are finished, simply write the narrowed window (:w) and all the changes will be moved back to the original buffer.

Windows

Windows are like tmux panes, awesome clients, i3 windows, etc. Windows can hold file buffers or plugins like Nerdtree, which are browsable via searches, etc.

:sp [filename]
  open file in new split window
Ctrl-W w
  move forward window
Ctrl-W W
  move backwards window
Ctrl-W then h, j, k, l
  move window focus to left, below, above, right
Ctrl-W then H, J, K, L
  move window in the direction of left, below, above, right
Ctrl-W x
  switch windows around
Ctrl-W =
  balance window splits

Ctrl-W _
  maximize focused window horizontally
Ctrl-W |
  maximize focused window vertically
:qall
  quit all buffer windows on current tab




  • golden-ratio - Resize windows automatically using the Golden Ratio




dwm.vim

map <silent> <C-J> <C-W>w
map <silent> <C-K> <C-W>W
map <silent> <C-,> :call DWM_Rotate(0)<CR>
map <silent> <C-.> :call DWM_Rotate(1)<CR>

map <silent> <C-N> :call DWM_New()<CR>
map <silent> <C-C> :call DWM_Close()<CR>
map <silent> <C-Space> :call DWM_Focus()<CR>
map <silent> <C-@> :call DWM_Focus()<CR>

map <silent> <C-H> :call DWM_GrowMaster()<CR>
map <silent> <C-L> :call DWM_ShrinkMaster()<CR>

Tabs



:tab new
  or
:tabe
  create new tab

:tabc
  close tab
:tabs
  list existing tabs
gt
  go to next tab
gT
  go to previous tab
{i}gt
  go to tab in position i
:tab drop {file}
  open {file} in a new tab, or jump to a window/tab containing the file if there is one
:tab split
  copy the current window to a new tab of its own

:tabm [n]
  move tab to nth position
:tabm
  move tab to last
:tab ball
  split all buffers into tabs
:tab help
  open a new help window in its own tab page
:bufdo qall
  send qall command to all tabs
:wqall!
:xall!
  to check


Sessions

:mks sessionsave.file
  save session

vim -S sessionsave.file
  load session from cli


  • https://github.com/xolox/vim-session - improves upon Vim's built-in :mksession command by enabling you to easily and (if you want) automatically persist and restore your Vim editing sessions. It works by generating a Vim script that restores your current settings and the arrangement of tab pages and/or split windows and the files they contain.


  • https://github.com/tpope/vim-obsession - Vim features a :mksession command to write a file containing the current state of Vim: window positions, open folds, stuff like that. For most of my existence, I found the interface way too awkward and manual to be useful, but I've recently discovered that the only thing standing between me and simple, no-hassle Vim sessions is a few tweaks: Instead of making me remember to capture the session immediately before exiting Vim, allow me to do it at any time, and automatically re-invoke :mksession immediately before exit. Also invoke :mksession whenever the layout changes (in particular, on BufEnter), so that even if Vim exits abnormally, I'm good to go. If I load an existing session, automatically keep it updated as above. If I try to create a new session on top of an existing session, don't refuse to overwrite it. Just do what I mean. If I pass in a directory rather than a file name, just create a Session.vim inside of it. Don't capture options and maps. Options are sometimes mutilated and maps just interfere with updating plugins.


  • https://github.com/mhinz/vim-startify - provides dynamically created headers or footers and uses configurable lists to show recently used or bookmarked files and persistent sessions. All of this can be accessed in a simple to use menu that even allows to open multiple entries at once.

Coding



  • Drawing Lambdas - "when I said I wanted to see lambdas in my code I didn’t mean inside of string literals, I meant actual lambdas as keywords."



Text objects


Folds

Folds are sections of text reduced to one line (based on brackets, indentation, etc.). Folding is on by default. I have the foldlevel dialed up to 20 to avoid them.

zo - open fold
zO - open fold recursively
zc - close fold
zC - close fold resursive
zR - open all folds
zM - close all
zj - go down and up a fold
zk - go up a fold

Text alignment

Auto-closing

  • https://github.com/tpope/vim-surround - all about "surroundings": parentheses, brackets, quotes, XML tags, and more. The plugin provides mappings to easily delete, change and add such surroundings in pairs.











Completion

Ctrl-n
  # autocomplete keyword forwards

Ctrl-p
  # autocomplete keyword backwards
Ctrl-x
  # completion mode
Ctrl-x Ctrl-f
  # filepath completion mode


  • https://github.com/Shougo/neocomplcache - the abbreviation of "neo-completion with cache". It provides keyword completion system by maintaining a cache of keywords in the current buffer. neocomplcache could be customized easily and has a lot more features than the Vim's standard completion feature.





  • YouCompleteMe - a fast, as-you-type, fuzzy-search code completion engine for Vim. It has several completion engines: an identifier-based engine that works with every programming language, a semantic, Clang-based engine that provides native semantic code completion for C/C++/Objective-C/Objective-C++ (from now on referred to as "the C-family languages"), a Jedi-based completion engine for Python and an omnifunc-based completer that uses data from Vim's omnicomplete system to provide semantic completions for many other languages (Ruby, PHP etc.).[32]






Coc

Tags




  • https://github.com/ludovicchabant/vim-gutentags - a plugin that takes care of the much needed management of tags files in Vim. It will (re)generate tag files as you work while staying completely out of your way. It will even do its best to keep those tag files out of your way too. It has no dependencies and just works.

Interface

Vim Pad

  • vim-pad - A quick notetaking plugin for vim.

vimroom

  • vimroom - Simulating a vaguely WriteRoom-like environment in Vim.

scratch.vim

  • scratch.vim - Plugin to create and use a scratch Vim buffer

VOoM

goyo.vim

limelight.vim

  • https://github.com/junegunn/limelight.vim - different font colors for the paragraph in which the cursor is operating and the other paragraphs. Normally it works the way that the paragraph with the cursor (in which I am writing) maintains the normal font color while the other paragraphs turn into a grey that does not raise attention anymore.

vim-zenroom2

  • https://github.com/amix/vim-zenroom2 - A Vim extension that emulates iA Writer environment when editing Markdown, reStructuredText or text files. It requires goyo.vim and it works by setting global Goyo callbacks that triggers special setup for Markdown, reStructuredText and text files.

Git

:Gwrite - git add file
:Gread - git checkout (revert) open to staged version
:Gremove - git rm and close buffer
:Gmove - git mv file. with /, relative to git root; without, relative to file
:Gcommit - git commit, opens message buffer
:Gblame - open split window with git blame details
:Gbrowse - open Github, else git instaweb for local sevrer
<c-w>h<c-w>c
  exit :Gdiff mode

vim#diff resolution:

:diffget [buffer] - get diff from another buffer
:diffput [buffer] - put diff into another buffer
:diffupdate - update diff colouring
dg - get from other buffer pane (only 2 pane)
dp - put to other buffer pane (works in 3 pane)
[c - jump to previous changeset
]c - jump to next changeset
:only - close buffers other than active


  • https://github.com/airblade/vim-gitgutter - shows a git diff in the 'gutter' (sign column). It shows whether each line has been added, modified, and where lines have been removed. breaks vim on script load on server side git repos for me.
  • https://github.com/mhinz/vim-signify - Sy sgitgutter.vim]hows all added, deleted and modified lines since the last commit via Vim its sign column. It supports several version control systems.


  • https://github.com/gregsexton/gitv - a ‘gitk clone’ plugin for the text editor Vim. The goal is to give you a similar set of functionality as a repository viewer. Using this plugin you can view a repository’s history including branching and merging, you can see which commits refs point to. You can quickly and easily view what changed to which files and when. You can perform arbitrary diffs (using Vim’s excellent built in diff functionality) and you can easily check out whole commits and branches or just individual files if need be.


  • https://github.com/rhysd/committia.vim - When you type git commit, Vim starts and opens a commit buffer. This plugin improves the commit buffer. committia.vim splits the buffer into 3 windows; edit window, status window and diff window. You no longer need to repeat moving to another window, scrolling and backing to the former position in order to see a long commit diff.


Linting

  • https://github.com/w0rp/ale - Asynchronous Lint Engine, is a plugin for providing linting in NeoVim and Vim 8 while you edit your text files.


Formatting

  • https://github.com/sbdchd/neoformat - uses a variety of formatters for many filetypes. Currently, Neoformat will run a formatter using the current buffer data, and on success it will update the current buffer with the formatted text. On a formatter failure, Neoformat will try the next formatter defined for the filetype.


Debugging

Syntax

  • https://github.com/scrooloose/syntastic - a syntax checking plugin that runs files through external syntax checkers and displays any resulting errors to the user. This can be done on demand, or automatically as files are saved. If syntax errors are detected, the user is notified and is happy because they didn't have to compile their code or execute their script to find them. At the time of this writing, syntax checking plugins exist for applescript, c, coffee, cpp, css, cucumber, cuda, docbk, erlang, eruby, fortran, gentoo_metadata, go, haml, haskell, html, javascript, json, less, lua, matlab, perl, php, puppet, python, rst, ruby, sass/scss, sh, tcl, tex, vala, xhtml, xml, xslt, yaml, zpt





Highlighting

:so $VIMRUNTIME/syntax/hitest.vim
  # output all highlight groups






Scope


Indentation



Comments

gc{motion}
  toggle comments (for small comments)
gcc
  toggle comment for the current line
gC{motion}
  comment region
gCc
  comment the current line



  • https://github.com/tpope/vim-commentary - Comment stuff out. Use gcc to comment out a line (takes a count), gc to comment out the target of a motion (for example, gcap to comment out a paragraph), gc in visual mode to comment out the selection, and gc in operator pending mode to target a comment. You can also use it as a command, either with a range like :7,17Commentary, or as part of a :global invocation like with :g/TODO/Commentary. That's it.



HTML

Highlighting

  • https://github.com/othree/html5.vim - HTML5 + inline SVG omnicomplete function, indent and syntax for Vim. Based on the default htmlcomplete.vim. Supports all new elements and attributes, SVG and MathML, microdata, RDFa, WAI-ARIA, Electron webview.



Creating and editing

  • xml.vim : helps editing xml (and [x]html, sgml, xslt) files


CSS





SCSS


JavaScript



  • https://github.com/mxw/vim-jsx - Syntax highlighting and indenting for JSX. JSX is a JavaScript syntax transformer which translates inline XML document fragments into JavaScript objects. It was developed by Facebook alongside React



TypeScript


PHP

An up-to-date Vim syntax for PHP (7.x supported)


C / C++


Lua


HAML

Nginx

PKGBUILD

GraphQL

Modeline

  • vim tips and tricks: modelines - modelines allow you to set variables specific to a file. By default, the first and last five lines are read by vim for variable settings. For example, if you put the following in the last line of a C program, you would get a textwidth of 60 chars when editing that file:
/* vim: tw=60 ts=2: */

The modelines variable sets the number of lines (at the beginning and end of each file) vim checks for initializations.


Arrow keys

Config

I chose /usr/share/config/vim

/usr/local/share/vim is a default $VIMRUNTIME though


If you're editing .vimrc, you can reload it with:

:so %

% stands for current file name (see :h current-file) and :so is short for :source, which reads the content of the specified file and treats it as Vim code. [34]

In general, to re-load the currently active .vimrc, use the following (see Daily Vim):

:so $MYVIMRC




Vimscripts

  • Vim Awesome - a directory of Vim plugins sourced from GitHub, Vim.org, and user submissions. Plugin usage data is extracted from dotfiles repos on GitHub. [36]






Script management

  • NeoBundle is Vim plugin manager based on Vundle.
  • VAM - the short name for vim-addon-manager. You declare a set of plugins. VAM will fetch & activate them at startup or runtime depending on your needs. Activating means handling runtimepath and making sure all .vim file get sourced.
  • vim-plug - A single-file Vim plugin manager. Somewhere between Pathogen and Vundle, but with faster parallel installer. [37]


  • https://github.com/Carpetsmoker/packman.vim - simple Vim plugin/package manager. The ".vim" part of the name is a bit misleading, as it's really just a shell script. As the name hints, it relies on Vim's packages feature. At the time of writing, this is a relatively new feature that may not be available on your Vim. Use :echo has('packages') to find out. You can use pathogen to simulate this feature if your Vim is missing it.


Dashboard

  • https://github.com/mhinz/vim-startify - If you start Vim without giving any filenames to it (or pipe stuff to it so it reads from STDIN), startify will show a small but pretty start screen which shows recently used files (using viminfo) and sessions by default. Additionally, you can define bookmarks, thus entries for files that always should be available in the start screen. It also eases handling of loading and saving sessions by only working with a certain directory.


Gist

Status

  • SmartusLine is Vim plugin that changes the color of the statusline of the focused window according with the current mode (normal/insert/replace)


Services

  • Vmail is a Vim interface to Gmail.

Database

To sort







  • https://github.com/alok/notational-fzf-vim - a note-taking script where searching for a note and creating one are the same operation. You search for a query, and if no note matches, it creates a new note with that query as the title.



  • ZoomWin - Zoom in/out of windows (toggle between one window and multi-window)


  • subvim - Vim customized to be like SublimeText





  • https://github.com/Zeioth/vim-doxygen - automatically creates a doxyfile for your project, and regenerates the Doxygen documentation on save. It also has keybindings to open the Doxygen documentation quickly when you are coding. All this behaviors can be customized.

Creating


System


  • Conque is a Vim plugin which allows you to run interactive programs, such as bash on linux or powershell.exe on Windows, inside a Vim buffer. In other words it is a terminal emulator which uses a Vim buffer to display the program output.
:ConqueTerm zsh

:ConqueTermSplit <command>
:ConqueTermVSplit <command>
:ConqueTermTab <command>



  • browser-connect.vim - implements a VIM interface for browser-connect-server in order to provide a live coding environment similar to the one currently available in LightTable.



Math

  • https://github.com/nixon/vim-vmath - Damian Conway's vmath plugin for vim as demonstrated at his OSCON 2013 "More Instantly Better Vim" presentation. Calculates the sum, average, min, and max for a visual region containing numbers.

Distributions

  • spf13-vim - a distribution of vim plugins and resources for Vim, GVim and MacVim. It is a completely cross platform distribution that stays true to the feel of vim while providing modern features like a plugin management system, autocomplete, tags and tons more.


  • SpaceVim - a community-driven Vim distribution with layer feature. SpaceVim manages collections of plugins in layers. Layers make it easy for you, the user, to enable a new language or feature by grouping all the related plugins together. It got inspired by spacemacs. [41]


Colours

Themes

  • Vivify - A ColorScheme Editor for Vim






Mouse

Voice

  • https://github.com/AshleyF/VimSpeak - lets you control Vim with your voice using speech recognition. For instance, you can say “select three words” to type v3w or “change surrounding brackets to parens” to type cs]) or crazy things like “change occurrences of ‘foo’ into ‘bar’, globally, ignore case, confirm” to type :%s/foo/bar/gic. Of course in insert mode you may dictate whatever you like. To learn the grammar, have a look at the unit tests and the code (“use the source, Luke”). It’s quite declarative and easy to follow.


  • https://github.com/ddevault/vimspeak - a plugin for connecting vim to espeak. It overrides the default behavior of the s and S keybindings. The former, when combined with a motion, will read the implicated text aloud - for example, s} will read the next paragraph, sw will read the next word, and ss will read the current line.

Tmux integration



Remote


  • netrw.vim : Network oriented reading, writing, and browsing


  • https://github.com/m-pilia/vim-mediawiki - plugin to help editing pages of a MediaWiki site from vim/neovim. It provides: filetype detection; improved syntax highlighting; page preview; semantic auto-completion of links and templates with a coc.nvim source; UltiSnips snippets; <plug> mappings for text objects; matching pairs for matchit.vim; integration with vim-surround

Client/server

Collaboration


Encryption


Handy

:e scp://root@example.com/~user/folder/.config
  open remote file
$ vim scp://root@example.com/~user/folder/.config
K
  in normal mode, run man for current word (opens "man word" in shell)



  • https://github.com/mhinz/vim-startify - provides dynamically created headers or footers and uses configurable lists to show recently used or bookmarked files and persistent sessions. All of this can be accessed in a simple to use menu that even allows to open multiple entries at once. Startify doesn't get in your way and works out-of-the-box, but provides many options for fine-grained customization.


  • https://github.com/vim-scripts/DrawIt - a plugin which allows one to draw lines left, right, up, down, and along both slants. Optionally one may "cap" the lines with arrowheads. One may change the horizontal, vertical, slant, and crossing characters to whichever characters one wishes.



Neovim




Collections / frameworks

  • https://github.com/echasnovski/mini.nvim - Library of 20+ independent Lua modules improving overall Neovim (version 0.6 and higher, experience with minimal effort. They all share same configuration approaches and general design principles. Think about this project as "Swiss Army knife" among Neovim plugins: it has many different independent tools (modules) suitable for most common tasks. Each module can be used separately without any startup and usage overhead.


GUIs



Plugins



Files

LSP

Completion

Comments


Syntax


Cursor


  • https://github.com/Rentib/cliff.nvim - Plugin that moves the cursor up/down until it almost falls off the cliff. The principle is very simple. If the cursor is positioned at position (row, column), then after calling cliff.go_down or cliff.go_up the cursor will move to the furthest row such that every line in between either is of length greater than column or every line is shorter than column.

FZF

  • https://github.com/junegunn/fzf.vim - Things you can do with fzf and Vim. fzf itself is not a Vim plugin, and the official repository only provides the basic wrapper function for Vim. It's up to the users to write their own Vim commands with it. However, I've learned that many users of fzf are not familiar with Vimscript and are looking for the "default" implementation of the features they can find in the alternative Vim plugins.



Vim everywhere


  • Big Pile of Vim-like - Items of this type are applications that are intentionally created to be Vim-like in some respect (possibly disabled by default). Less Vim-like applications are in "Configurable" section. [45]


vim-anywhere


File management


Other integration

  • https://github.com/ardagnir/athame - Athame patches your shell to add full Vim support by routing your keystrokes through an actual Vim process. Athame can currently be used to patch readline (used by bash, gdb, python, etc) and/or zsh (which doesn't use readline). Don't most shells already come with a vi-mode? Yes, and if you're fine with basic vi imitations designed by a bunch of Emacs users, feel free to use them. ...but for the true Vim fanatics who sacrifice goats to the modal gods, Athame gives you the full power of Vim. [46]




  • https://github.com/ardagnir/vimbed - Vimbed is a Vim plugin for embedding Vim in other programs. Run Vim in the background using Vimbed to ease communication with external processes.

Browser navigation


  • https://github.com/ueokande/vim-vixen - Vim Vixen is a Firefox add-on which allows you to navigate with keyboard on the browser. Firefox started to support WebExtensions API and will stop supporting add-ons using legacy APIs from version 57. For this reason, many legacy add-ons do not work on Firefox 57. Vim Vixen is a new choice for Vim users since Vim Vixen uses the WebExtensions API.


Browser textarea

  • wasavi - an extension for Chrome, Opera and Firefox. wasavi transforms TEXTAREA element of any page into a VI editor, so you can edit the text in VI. wasavi supports almost all VI commands and some ex commands. wasavi is under development. Any bug report or feature request is welcome.
  • GhostText 👻 - Use your text editor to write in your browser. Everything you type in the editor will be instantly updated in the browser (and vice versa).


Javascript

hmm.

wasm

Live editing

  • https://github.com/jaxbot/brolink.vim - Browserlink is very simple. The plugin itself hooks autocommands for file changes (and other things) to the provided functions. The functions connect through HTTP to a node.js backend, which your webpage connects also to. The entire process happens extremely fast.

Vim Online Editor

Onivim

  • Onivim 2 - Onivim is a brand-new code editor — combining the modal ergonomics of Vim, the quick and responsive feel of a native app, and the vast extension ecosystem of VS Code.

Etc




  • Vem Text Editor - an alternative command layout for the Vim text editor. It provides full keyboard control over the editor while trying to be as simple and intuitive as possible. [50]


  • https://github.com/Eandrju/cellular-automaton.nvim - A useless plugin that might help you cope with stubbornly broken tests or overall lack of sense in life. It lets you execute aesthetically pleasing, cellular automaton animations based on the content of neovim buffer.