NeoVim Setup for PHP and NodeJS Development

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • neovim

    Vim-fork focused on extensibility and usability

    Follow the instructions on the NeoVim installation page or use the following command:

  • Vim

    The official Vim repository

    Now, I still love VS Code, can really recommend it and I use it for example in the browser on GitHub. But since I tried Vim, I'm now using this as my primary editor.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • vim-airline

    lean & mean status/tabline for vim that's light as air

    set encoding=UTF-8 set number syntax on " set tab to 4 spaces filetype plugin indent on set tabstop=4 set shiftwidth=4 set expandtab " Tab / Shift Tab to navigate between tabs nnoremap :tabnext nnoremap :tabprevious " CoC settings set nobackup set nowritebackup set cmdheight=2 set updatetime=300 set shortmess+=c if has("nvim-0.5.0") || has("patch-8.1.1564") set signcolumn=number else set signcolumn=yes endif inoremap \ pumvisible() ? "\" : \ CheckBackspace() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction if has('nvim') inoremap coc#refresh() else inoremap coc#refresh() endif inoremap pumvisible() ? coc#_select_confirm() \: "\u\\=coc#on_enter()\" nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) nnoremap K :call ShowDocumentation() function! ShowDocumentation() if CocAction('hasProvider', 'hover') call CocActionAsync('doHover') else call feedkeys('K', 'in') endif endfunction autocmd CursorHold * silent call CocActionAsync('highlight') " VimPlug plugin manager call plug#begin() Plug 'https://github.com/vim-airline/vim-airline' Plug 'https://github.com/tpope/vim-commentary' Plug 'https://github.com/ap/vim-css-color' Plug 'https://github.com/rafi/awesome-vim-colorschemes' Plug 'https://github.com/neoclide/coc.nvim' Plug 'othree/html5.vim' Plug 'pangloss/vim-javascript' Plug 'evanleck/vim-svelte', {'branch': 'main'} call plug#end() " set the colorsheme " list: https://github.com/rafi/awesome-vim-colorschemes colorscheme minimalist

  • vim-commentary

    commentary.vim: comment stuff out

    set encoding=UTF-8 set number syntax on " set tab to 4 spaces filetype plugin indent on set tabstop=4 set shiftwidth=4 set expandtab " Tab / Shift Tab to navigate between tabs nnoremap :tabnext nnoremap :tabprevious " CoC settings set nobackup set nowritebackup set cmdheight=2 set updatetime=300 set shortmess+=c if has("nvim-0.5.0") || has("patch-8.1.1564") set signcolumn=number else set signcolumn=yes endif inoremap \ pumvisible() ? "\" : \ CheckBackspace() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction if has('nvim') inoremap coc#refresh() else inoremap coc#refresh() endif inoremap pumvisible() ? coc#_select_confirm() \: "\u\\=coc#on_enter()\" nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) nnoremap K :call ShowDocumentation() function! ShowDocumentation() if CocAction('hasProvider', 'hover') call CocActionAsync('doHover') else call feedkeys('K', 'in') endif endfunction autocmd CursorHold * silent call CocActionAsync('highlight') " VimPlug plugin manager call plug#begin() Plug 'https://github.com/vim-airline/vim-airline' Plug 'https://github.com/tpope/vim-commentary' Plug 'https://github.com/ap/vim-css-color' Plug 'https://github.com/rafi/awesome-vim-colorschemes' Plug 'https://github.com/neoclide/coc.nvim' Plug 'othree/html5.vim' Plug 'pangloss/vim-javascript' Plug 'evanleck/vim-svelte', {'branch': 'main'} call plug#end() " set the colorsheme " list: https://github.com/rafi/awesome-vim-colorschemes colorscheme minimalist

  • coc-ccls

    CCLS (C/C++) extension for coc.nvim

    set encoding=UTF-8 set number syntax on " set tab to 4 spaces filetype plugin indent on set tabstop=4 set shiftwidth=4 set expandtab " Tab / Shift Tab to navigate between tabs nnoremap :tabnext nnoremap :tabprevious " CoC settings set nobackup set nowritebackup set cmdheight=2 set updatetime=300 set shortmess+=c if has("nvim-0.5.0") || has("patch-8.1.1564") set signcolumn=number else set signcolumn=yes endif inoremap \ pumvisible() ? "\" : \ CheckBackspace() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction if has('nvim') inoremap coc#refresh() else inoremap coc#refresh() endif inoremap pumvisible() ? coc#_select_confirm() \: "\u\\=coc#on_enter()\" nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) nnoremap K :call ShowDocumentation() function! ShowDocumentation() if CocAction('hasProvider', 'hover') call CocActionAsync('doHover') else call feedkeys('K', 'in') endif endfunction autocmd CursorHold * silent call CocActionAsync('highlight') " VimPlug plugin manager call plug#begin() Plug 'https://github.com/vim-airline/vim-airline' Plug 'https://github.com/tpope/vim-commentary' Plug 'https://github.com/ap/vim-css-color' Plug 'https://github.com/rafi/awesome-vim-colorschemes' Plug 'https://github.com/neoclide/coc.nvim' Plug 'othree/html5.vim' Plug 'pangloss/vim-javascript' Plug 'evanleck/vim-svelte', {'branch': 'main'} call plug#end() " set the colorsheme " list: https://github.com/rafi/awesome-vim-colorschemes colorscheme minimalist

  • vim-css-color

    Preview colours in source code while editing

    set encoding=UTF-8 set number syntax on " set tab to 4 spaces filetype plugin indent on set tabstop=4 set shiftwidth=4 set expandtab " Tab / Shift Tab to navigate between tabs nnoremap :tabnext nnoremap :tabprevious " CoC settings set nobackup set nowritebackup set cmdheight=2 set updatetime=300 set shortmess+=c if has("nvim-0.5.0") || has("patch-8.1.1564") set signcolumn=number else set signcolumn=yes endif inoremap \ pumvisible() ? "\" : \ CheckBackspace() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction if has('nvim') inoremap coc#refresh() else inoremap coc#refresh() endif inoremap pumvisible() ? coc#_select_confirm() \: "\u\\=coc#on_enter()\" nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) nnoremap K :call ShowDocumentation() function! ShowDocumentation() if CocAction('hasProvider', 'hover') call CocActionAsync('doHover') else call feedkeys('K', 'in') endif endfunction autocmd CursorHold * silent call CocActionAsync('highlight') " VimPlug plugin manager call plug#begin() Plug 'https://github.com/vim-airline/vim-airline' Plug 'https://github.com/tpope/vim-commentary' Plug 'https://github.com/ap/vim-css-color' Plug 'https://github.com/rafi/awesome-vim-colorschemes' Plug 'https://github.com/neoclide/coc.nvim' Plug 'othree/html5.vim' Plug 'pangloss/vim-javascript' Plug 'evanleck/vim-svelte', {'branch': 'main'} call plug#end() " set the colorsheme " list: https://github.com/rafi/awesome-vim-colorschemes colorscheme minimalist

  • Visual Studio Code

    Visual Studio Code

    Until recently, I've been a big fan of Visual Studio Code and it was my primary editor for the last years. Over time, I learned more and more key bindings, started to really use the command palette and started to not do everything with the mouse - and guess what, it felt a lot faster than doing everything with the mouse.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • awesome-vim-colorschemes

    Collection of awesome color schemes for Neo/vim, merged for quick use.

    set encoding=UTF-8 set number syntax on " set tab to 4 spaces filetype plugin indent on set tabstop=4 set shiftwidth=4 set expandtab " Tab / Shift Tab to navigate between tabs nnoremap :tabnext nnoremap :tabprevious " CoC settings set nobackup set nowritebackup set cmdheight=2 set updatetime=300 set shortmess+=c if has("nvim-0.5.0") || has("patch-8.1.1564") set signcolumn=number else set signcolumn=yes endif inoremap \ pumvisible() ? "\" : \ CheckBackspace() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\" function! CheckBackspace() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction if has('nvim') inoremap coc#refresh() else inoremap coc#refresh() endif inoremap pumvisible() ? coc#_select_confirm() \: "\u\\=coc#on_enter()\" nmap [g (coc-diagnostic-prev) nmap ]g (coc-diagnostic-next) nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) nnoremap K :call ShowDocumentation() function! ShowDocumentation() if CocAction('hasProvider', 'hover') call CocActionAsync('doHover') else call feedkeys('K', 'in') endif endfunction autocmd CursorHold * silent call CocActionAsync('highlight') " VimPlug plugin manager call plug#begin() Plug 'https://github.com/vim-airline/vim-airline' Plug 'https://github.com/tpope/vim-commentary' Plug 'https://github.com/ap/vim-css-color' Plug 'https://github.com/rafi/awesome-vim-colorschemes' Plug 'https://github.com/neoclide/coc.nvim' Plug 'othree/html5.vim' Plug 'pangloss/vim-javascript' Plug 'evanleck/vim-svelte', {'branch': 'main'} call plug#end() " set the colorsheme " list: https://github.com/rafi/awesome-vim-colorschemes colorscheme minimalist

  • html5.vim

    HTML5 omnicomplete and syntax

    html5.vim: Syntax & indentation for HTML5 and SVG (required for vim-svelte)

  • vim-javascript

    Vastly improved Javascript indentation and syntax support in Vim.

    vim-javascript: Syntax & indentation for JavaScript (required for vim-svelte)

  • vim-svelte

    Vim syntax highlighting and indentation for Svelte 3 components.

    vim-svelte: Syntax & indentation for Svelte

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts