Say Web Solutions

vim

Vim Reference cheatsheet

Core Functionality (Vocabulary)

Registers

https://stackoverflow.com/questions/1497958/how-do-i-use-vim-registers

Great in depth answer about registers: https://stackoverflow.com/a/3997110

Leader Key(s)

A great explanation of leader keys: https://tuckerchapman.com/2018/06/16/how-to-use-the-vim-leader-key/

Plugin Managers

vim-plug

If vim plug is acting up; force it to download the latest version with: :PlugUpdate! fzf

Plugins

Git

Fugitive

:help fugitive

Linting

ALE - Asynchronous Lint Engine

https://github.com/w0rp/ale

Seems like it requires VIM 8.0 or greater at this point; so install vim from source or use this PPA which seems semi-legit: https://launchpad.net/~jonathonf/+archive/ubuntu/vim

Neomake

Used https://github.com/neomake/neomake but should look into using ALE instead as neomake seems a bit buggy in my experience. Instead, moved to coc.nvim

Tags

See here for good info on how to generate tags: https://github.com/shawncplus/phpcomplete.vim/wiki/Getting-better-tags

It sounds like the original ctags program is abandoned, so it's best to use https://github.com/universal-ctags/ctags or possibly https://github.com/vim-php/phpctags (obviously if you only need PHP tags). Seems like universal-ctags is a fairly active project so it seems like a good option.

universal-ctags

Available as a snap for linux: https://github.com/universal-ctags/ctags-snap though there are some caveats due to security restrictions, including the inability to generate tags for projects outside of the user's home directory.

Compiling from source https://github.com/universal-ctags/ctags/blob/master/docs/autotools.rst instead, since there isn't a good PPA or ubuntu package:

git clone https://github.com/universal-ctags/ctags.git
cd ctags
./autogen.sh 
./configure
make
sudo make install
Tips on MacOS

https://gist.github.com/nazgob/1570678

brew install ctags

Update - better yet; use universal-ctags:

brew install universal-ctags

Which leads to:

/opt/homebrew/bin/ctags --version

Universal Ctags 6.2.0, Copyright (C) 2015-2025 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Jun 12 2025, 22:31:15
  URL: https://ctags.io/
  Output version: 1.1
  Optional compiled features: +wildcards, +regex, +gnulib_fnmatch, +gnulib_regex, +iconv, +option-directory, +xpath, +json, +interactive, +yaml, +case-insensitive-filenames, +packcc, +optscript, +pcre2

Unfortunately xcode command line tools installs a conflicting older/worse ctags in /usr/bin/ctags that may have precedence on the system. To fix, make sure homebrew's intall directory is prioritized in your PATH.

vim-gutentags

Automatically regenerate tag files with https://github.com/ludovicchabant/vim-gutentags

Snippets

https://github.com/SirVer/ultisnips

Autocomplete

coc.nvim / coc.vim

https://github.com/neoclide/coc.nvim

:CocInfo to debug

:CocInstall coc-phpls for php language server

List of extensions and extension docs: https://github.com/neoclide/coc.nvim/wiki/Using-coc-extensions

coc-php-cs-fixer

PHP CS Fixer via coc-php-cs-fixer

Customize settings via adding entries to :CocConfig file, ex.:

php-cs-fixer.terminal.enableSplitRight

and run with:

:CocCommand php-cs-fixer.dryRunDiff :CocCommand php-cs-fixer.fix

Snippets Support:
:CocInstall coc-snippets

Discussion about setup for PHP / Laravel: https://github.com/neoclide/coc.nvim/issues/590

phpcomplete

https://github.com/shawncplus/phpcomplete.vim

Useful to install supertab which maps tab to the control-x + control-o hotkey that triggers omnicomplete, in a way that is compatible with snippets. Good article here on setup: https://jordaneldredge.com/blog/setting-up-php-completion-in-vim/

phpcd

Maybe a better version of phpcomplete: https://github.com/lvht/phpcd.vim

Enhanced Statusline Options

lightline

https://github.com/itchyny/lightline.vim seems like a good option.

lightline color schemes: https://github.com/itchyny/lightline.vim/blob/master/colorscheme.md

Misc.

vim-markdown

https://github.com/preservim/vim-markdown

Install it just for the :Toc command, which brings up a sidebar table of contents for the current markdown document.

Generate a table of contents and insert into document: :InsertToc

Config entries for .vimrc:

let g:vim_markdown_toc_autofit = 1 
let g:vim_markdown_folding_disabled = 1 
let g:vim_markdown_frontmatter = 1

surround.vim Plugin

Commands
Resources

PHP-Indenting-for-VIm

Official PHP indentation plugin for VIm: https://github.com/2072/PHP-Indenting-for-VIm

:help php-indent 

investigate.vim

https://github.com/keith/investigate.vim - cool plugin that launches various docs for the keyword under the cursor

Defaults to gK

eunuch.vim

Vim wrapper for UNIX shell commands:

Guides

Notable .vimrc Examples

Misc. Resources

Comments