Skip to content

Lean mean (Neo)Vim machine, carefully crafted with โค๏ธ Use with Neovim v0.1.5+ or Vim v7.4+

Notifications You must be signed in to change notification settings

yuzhen1024/vim-config

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Rafael Bodill's Neo/vim Config

Lean mean Neo/vim machine, 30-45ms startup time.

Best with Neovim 0.5.x or Vim 8.x and python3 enabled.

I encourage you to fork this repo and create your own experience. Learn how to tweak and change Neo/vim to the way YOU like it. This is my cultivation of years of tweaking, use it as a git remote and stay in-touch with upstream for reference or cherry-picking.

Table of Contents (๐Ÿ”Ž Click to expand/collapse)

Features

  • Fast startup time
  • Robust, yet light-weight
  • Lazy-load 95% of plugins with Shougo/dein.vim
  • Custom side-menu (try it out! Space+l)
  • Custom context-menu (try it! ;+c)
  • Modular configuration (see structure)
  • Auto-complete prabirshrestha/asyncomplete.vim extensive setup
  • Shougo/denite.nvim centric work-flow (lists)
  • Structure view with liuchengxu/vista.vim
  • Open SCM detailed URL in OS browser
  • Light-weight but informative status/tabline
  • Easy customizable theme
  • Premium color-schemes
  • Central location for tags and sessions

Screenshot

Vim screenshot

Prerequisites

  • Python 3 (brew install python)
  • Neovim or Vim (brew install neovim and/or brew install vim)

Caveat: You must have one of these tools installed: yj, yq, yaml2json, Ruby, or Python with PyYAML in-order for the YAML configuration to be parsed.

Install

1. Let's clone this repo! Clone to ~/.config/nvim, we'll also symlink it for regular Vim:

mkdir ~/.config
git clone git://github.com/PegasusWang/vim-config.git ~/.config/nvim
cd ~/.config/nvim
ln -s ~/.config/nvim ~/.vim  # For "regular" Vim
  • Note: If you set a custom $XDG_CONFIG_HOME, use that instead of ~/.config in the commands above. Neovim follows the XDG base-directories convention, Vim doesn't.

2. Install the Python 3 pynvim library. This is also needed for Vim 8 if you want to use Denite and Defx.

Neovim: ./venv.sh or pip3 install --user pynvim

Vim: pip3 install --user pynvim

3. Run make test to test your nvim/vim version and capabilities.

4. Run make to install all plugins.

5. If you are experiencing problems, run and read nvim -c checkhealth

Test Python 3 availability with :py3 print(sys.version_info)

Enjoy! ๐Ÿ˜„

Language-Server Protocol (LSP)

To leverage LSP auto-completions and other functionalities, once you open a file in Neo/vim, run :LspInstallServer <name> to use mattn/vim-lsp-settings installation feature, use Tab to list available servers.

Here are a few useful commands:

  • For example, open a .go file, and run: :LspInstallServer gopls
  • In a go file, use action :LspCodeAction source.organizeImports
  • See config/plugins/lsp.vim for special code intellisense mappings

Upgrade

cd ~/.config/nvim
make update

This will run git pull --ff --ff-only and update all plugins using Shougo/dein.vim package-manager (:call dein#update()).

Recommended Fonts

On macOS with Homebrew, choose one of the Nerd Fonts, for example, to install the Hack font:

brew tap homebrew/cask-fonts
brew search nerd-font
brew cask install font-hack-nerd-font
brew cask install font-iosevka-nerd-font-mono
brew cask install font-jetbrains-mono
brew cask install font-fira-code

Recommended Linters

  • macOS with Homebrew:
brew install shellcheck jsonlint yamllint tflint ansible-lint
brew install tidy-html5 proselint write-good
  • Node.js based linters:
yarn global add eslint jshint jsxhint stylelint sass-lint
yarn global add markdownlint-cli raml-cop
  • Python based linters:
pip3 install --user vim-vint pycodestyle pyflakes flake8

Recommended Tools

User Custom Config

If you want to add your own configuration, create the config/local.vim file and add your personal vimscript there. If you'd like to install plugins by yourself, create a config/local.plugins.yaml file and manage your own plugin collection.

If you want to disable some of the plugins I use, you can overwrite them, e.g.:

- { repo: mattn/vim-lsp-settings, if: 0 }

Disable built-in statusline & tabline

You can use your local config/local.vim to disable status and tab lines:

let g:tabline_plugin_enable = 0
let g:statusline_plugin_enable = 0

Now, using config/local.plugins.yaml you can install any line plugin you want, e.g.:

# Use only one!
- repo: itchyny/lightline.vim
- repo: vim-airline/vim-airline
- repo: glepnir/galaxyline.nvim
- repo: glepnir/spaceline.vim
- repo: liuchengxu/eleline.vim

Structure

Plugin Highlights

  • Plugin management with cache and lazy loading for speed
  • Auto-completion with Language-Server Protocol (LSP)
  • Project-aware tabs and labels
  • Defx as file-manager + Git status icons
  • Extensive language extensions library

Note that 95% of the plugins are lazy-loaded.

Plugins Included

List (๐Ÿ”Ž Click to expand/collapse)

Non Lazy-Loaded Plugins

Name Description
Shougo/dein.vim Dark powered Vim/Neovim plugin manager
rafi/awesome-colorschemes Awesome color-schemes
thinca/vim-localrc Enable configuration file of each directory
romainl/vim-cool Simple plugin that makes hlsearch more useful
sgur/vim-editorconfig EditorConfig plugin written entirely in Vimscript
christoomey/tmux-navigator Seamless navigation between tmux panes and vim splits
tpope/vim-sleuth Heuristically set buffer indent options
antoinemadec/FixCursorHold.nvim Neovim CursorHold workaround
roxma/nvim-yarp Vim8 remote plugin framework for Neovim
roxma/vim-hug-neovim-rpc Vim8 compatibility layer for neovim rpc client

Lazy-Loaded Plugins

Language

Name Description
hail2u/vim-css3-syntax CSS3 syntax support to vim's built-in syntax/css.vim
othree/csscomplete.vim Updated built-in CSS complete with latest standards
cakebaker/scss-syntax.vim Syntax file for scss (Sassy CSS)
groenewege/vim-less Syntax for LESS
iloginow/vim-stylus Syntax, indentation and autocomplete for Stylus
mustache/vim-mustache-handlebars Mustache and handlebars syntax
digitaltoad/vim-pug Pug (formerly Jade) syntax and indentation
othree/html5.vim HTML5 omnicomplete and syntax
plasticboy/vim-markdown Markdown syntax highlighting
pangloss/vim-javascript Enhanced Javascript syntax
HerringtonDarkholme/yats.vim Advanced TypeScript Syntax Highlighting
MaxMEllon/vim-jsx-pretty React JSX syntax pretty highlighting
leafOfTree/vim-svelte-plugin Syntax and indent plugin for Svelte
heavenshell/vim-jsdoc Generate JSDoc to your JavaScript code
jparise/vim-graphql GraphQL file detection, syntax highlighting, and indentation
moll/vim-node Superb development with Node.js
kchmck/vim-coffee-script CoffeeScript support
elzr/vim-json Better JSON support
posva/vim-vue Syntax Highlight for Vue.js components
vim-python/python-syntax Enhanced version of the original Python syntax
Vimjas/vim-python-pep8-indent A nicer Python indentation style
vim-scripts/python_match.vim Extend the % motion for Python files
raimon49/requirements.txt.vim Python requirements file format
StanAngeloff/php.vim Up-to-date PHP syntax file (5.3 โ€“ 7.1 support)
tbastos/vim-lua Lua 5.3 syntax and indentation improved support
vim-ruby/vim-ruby Ruby support
keith/swift.vim Swift support
rust-lang/rust.vim Rust support
vim-jp/syntax-vim-ex Improved Vim syntax highlighting
chrisbra/csv.vim Handling column separated data
tpope/vim-git Git runtime files
ekalinin/Dockerfile.vim Syntax and snippets for Dockerfile
tmux-plugins/vim-tmux Plugin for tmux.conf
MTDL9/vim-log-highlighting Syntax highlighting for generic log files
cespare/vim-toml Syntax for TOML
mboughaba/i3config.vim i3 window manager config syntax
dag/vim-fish Fish shell edit support
jstrater/mpvim Macports portfile configuration files
robbles/logstash.vim Highlights logstash configuration files
lifepillar/pgsql.vim PostgreSQL syntax and indent
chr4/nginx.vim Improved nginx syntax and indent
towolf/vim-helm Syntax for Helm templates (yaml + gotmpl + sprig)
udalov/kotlin-vim Kotlin syntax and indent
reasonml-editor/vim-reason-plus Reason syntax and indent
pearofducks/ansible-vim Improved YAML support for Ansible
hashivim/vim-terraform Base Terraform integration

Commands

Name Description
Shougo/defx.nvim Dark powered file explorer implementation
kristijanhusak/defx-git Git status implementation for Defx
kristijanhusak/defx-icons Filetype icons for Defx
tyru/caw.vim Robust comment plugin with operator support
Shougo/context_filetype.vim Context filetype detection for nested code
lambdalisue/fin.vim Filter the buffer content in-place
mbbill/undotree Ultimate undo history visualizer
jreybert/vimagit Ease your git work-flow within Vim
tweekmonster/helpful.vim Display vim version numbers in docs
lambdalisue/gina.vim Asynchronously control git repositories
mhinz/vim-grepper Helps you win at grep
kana/vim-altr Switch to the alternate file without interaction
Shougo/vinarise.vim Hex editor
guns/xterm-color-table.vim Display 256 xterm colors with their RGB equivalents
cocopon/colorswatch.vim Generate a beautiful color swatch for the current buffer
dstein64/vim-startuptime Visually profile Vim's startup time
lambdalisue/suda.vim An alternative sudo.vim for Vim and Neovim
liuchengxu/vim-which-key Shows key-bindings in pop-up
brooth/far.vim Fast find and replace plugin
pechorin/any-jump.vim Jump to any definition and references without overhead
jaawerth/nrun.vim "which" and "exec" functions targeted at local node project bin
Vigemus/iron.nvim Interactive REPL over Neovim
kana/vim-niceblock Make blockwise Visual mode more useful
t9md/vim-choosewin Choose window to use, like tmux's 'display-pane'
wfxr/minimap.vim Blazing fast minimap for vim, powered by code-minimap
mzlogin/vim-markdown-toc Generate table of contents for Markdown files
reedes/vim-wordy Uncover usage problems in your writing
liuchengxu/vista.vim Viewer & Finder for LSP symbols and tags in Vim
junegunn/fzf Powerful command-line fuzzy finder
junegunn/fzf.vim Fzf integration
Ron89/thesaurus_query.vim Multi-language thesaurus query and replacement

Interface

Name Description
itchyny/vim-gitbranch Lightweight git branch detection
itchyny/vim-parenmatch Efficient alternative to the standard matchparen plugin
haya14busa/vim-asterisk Improved * motions
rhysd/accelerated-jk Up/down movement acceleration
haya14busa/vim-edgemotion Jump to the edge of block
t9md/vim-quickhl Highlight words quickly
rafi/vim-sidemenu Small side-menu useful for terminal users
machakann/vim-highlightedyank Make the yanked region apparent
itchyny/cursorword Underlines word under cursor
airblade/vim-gitgutter Show git changes at Vim gutter and un/stages hunks
kshenoy/vim-signature Display and toggle marks
nathanaelkane/vim-indent-guides Visually display indent levels in code
rhysd/committia.vim Pleasant editing on Git commit messages
junegunn/goyo Distraction-free writing
junegunn/limelight Hyperfocus-writing
itchyny/calendar.vim Calendar application
deris/vim-shot-f Highlight characters to move directly with f/t/F/T
vimwiki/vimwiki Personal Wiki for Vim
norcalli/nvim-colorizer.lua The fastest Neovim colorizer

Completion & Code-Analysis

Name Description
prabirshrestha/async.vim Normalize async job control API for Vim and Neovim
prabirshrestha/asyncomplete.vim Async-completion in pure Vimscript for Vim8 and Neovim
prabirshrestha/asyncomplete-lsp.vim Provide Language Server Protocol autocompletion source
prabirshrestha/vim-lsp Async Language Server Protocol plugin for Vim and Neovim
mattn/vim-lsp-settings Auto LSP configurations for vim-lsp
Shougo/neco-vim Completion source for Vimscript
prabirshrestha/asyncomplete-necovim.vim Provides syntax autocomplete via neco-vim
prabirshrestha/asyncomplete-buffer.vim Provides buffer autocomplete
prabirshrestha/asyncomplete-tags.vim Provides tag autocomplete via vim tagfiles
prabirshrestha/asyncomplete-file.vim Provides file autocomplete
wellle/tmux-complete.vim Completion of words in adjacent tmux panes
prabirshrestha/asyncomplete-ultisnips.vim Provides UltiSnips autocomplete
SirVer/ultisnips Ultimate snippet solution
honza/vim-snippets Community-maintained snippets for programming languages
mattn/emmet-vim Provides support for expanding abbreviations alรก emmet
ludovicchabant/vim-gutentags Manages your tag files
Raimondi/delimitMate Auto-completion for quotes, parens, brackets

Denite & Clap

Name Description
Shougo/denite.nvim Dark powered asynchronous unite all interfaces
Shougo/neomru.vim Denite plugin for MRU
Shougo/neoyank.vim Denite plugin for yank history
Shougo/junkfile.vim Denite plugin for temporary files
chemzqm/unite-location Denite location & quickfix lists
rafi/vim-denite-session Browse and open sessions
rafi/vim-denite-z Filter and browse Z (jump around) data file
liuchengxu/vim-clap Modern performant generic finder and dispatcher

Operators & Text Objects

Name Description
kana/vim-operator-user Define your own custom operators
kana/vim-operator-replace Operator to replace text with register content
machakann/vim-sandwich Search, select, and edit sandwich text objects
kana/vim-textobj-user Create your own text objects
terryma/vim-expand-region Visually select increasingly larger regions of text
AndrewRadev/sideways.vim Match function arguments
AndrewRadev/splitjoin.vim Transition code between multi-line and single-line
AndrewRadev/linediff.vim Perform diffs on blocks of code
AndrewRadev/dsf.vim Delete surrounding function call
kana/vim-textobj-function Text objects for functions

Custom Key-mappings

Note that,

  • Leader key set as ,
  • Local-Leader key set as ; and used for navigation and search (Denite and Defx)
  • Disable โ† โ†‘ โ†’ โ†“ in normal mode by enabling g:elite_mode in .vault.vim
Key-mappings (๐Ÿ”Ž Click to expand/collapse) Modes: ๐=normal ๐•=visual ๐’=select ๐ˆ=insert ๐‚=command

Navigation

Key Mode Action Plugin or Mapping
j / k ๐ ๐• Cursor moves through display-lines g j/k
g+j / k ๐ ๐• ๐’ Jump to edge upward/downward haya14busa/vim-edgemotion
gh / gl ๐ ๐• Easier line-wise movement g ^/$
Space+Space ๐ ๐• Toggle visual-line mode V / Escape
v / V ๐• Expand/reduce selection terryma/vim-expand-region
zl / zh ๐ Scroll horizontally and vertically wider z4 l/h
Ctrl+j ๐ Move to split below christoomey/tmux-navigator
Ctrl+k ๐ Move to upper split christoomey/tmux-navigator
Ctrl+h ๐ Move to left split christoomey/tmux-navigator
Ctrl+l ๐ Move to right split christoomey/tmux-navigator
Return ๐ Toggle fold za
Shift+Return ๐ Focus the current fold by closing all others zMzvzt
]q or ]q ๐ Next/previous on quickfix list :cnext / :cprev
]l or ]l ๐ Next/previous on location-list :lnext / :lprev
]w or ]w ๐ Next/previous whitespace error plugin/whitespace.vim
]g or ]g ๐ Next/previous Git hunk airblade/vim-gitgutter
]d or ]d ๐ Next/previous LSP diagnostic mattn/vim-lsp-settings
Ctrl+f ๐‚ Move cursor forwards in command Right
Ctrl+b ๐‚ Move cursor backwards in command Left
Ctrl+h ๐‚ Move cursor to the beginning in command Home
Ctrl+l ๐‚ Move cursor to the end in command End

File Operations

Key Mode Action Plugin or Mapping
Space+cd ๐ Switch to the directory of opened buffer :lcd %:p:h
gf ๐ ๐• Open file under the cursor in a vsplit :rightbelow wincmd f
Space+w ๐ ๐• ๐’ Write buffer to file :write
Ctrl+s ๐ ๐• ๐’ ๐‚ Write buffer to file :write

Edit

Key Mode Action Plugin or Mapping
Ctrl+Return ๐ˆ Expand emmet abbreviation mattn/emmet-vim
Q ๐ Start/stop macro recording q
gQ ๐ Play macro 'q' @q
Shift+Return ๐ˆ Start new line from any cursor position <C-o>o
< ๐• ๐’ Indent to left and re-select <gv
> ๐• ๐’ Indent to right and re-select `>gv
Tab ๐• ๐’ Indent to right and re-select `>gv
Shift+Tab ๐• ๐’ Indent to left and re-select <gv
gc ๐ ๐• ๐’ Caw (comments plugin) prefix tyru/caw.vim
gcc ๐ ๐• ๐’ Toggle comments tyru/caw.vim
Space+v ๐ ๐• ๐’ Toggle single-line comments tyru/caw.vim
Space+V ๐ ๐• ๐’ Toggle comment block tyru/caw.vim
Space+j or k ๐ ๐• Move lines down/up :m โ€ฆ
Space+d ๐ ๐• Duplicate line or selection
Space+cn / cN ๐ ๐• Change current word in a repeatable manner
Space+cp ๐ Duplicate paragraph yap<S-}>p
Space+cw ๐ Remove all spaces at EOL :%s/\s\+$//e
Ctrl+g g ๐ˆ Jump outside of pair Raimondi/delimitMate
sj / sk ๐ Join/split arguments AndrewRadev/splitjoin.vim
dsf / csf ๐ Delete/change surrounding function call AndrewRadev/dsf.vim

Search & Replace

Key Mode Action Plugin or Mapping
Space+f ๐ Filter lines in-place lambdalisue/fin.vim
* / # ๐ ๐• Search selection forward/backward haya14busa/vim-asterisk
g* / g# ๐ ๐• Search whole-word forward/backward haya14busa/vim-asterisk
Backspace ๐ Match bracket %
gp ๐ Select last paste
sg ๐• Replace within selected area :s/โŒด/gc
Ctrl+r ๐• Replace selection with step-by-step confirmation :%s/\V/โŒด/gc

Clipboard

Key Mode Action Plugin or Mapping
p ๐• ๐’ Paste without yank kana/vim-operator-replace
Y ๐ Yank to the end of line y$
Space+y ๐ Copy relative file-path to clipboard
Space+Y ๐ Copy absolute file-path to clipboard

Command & History

Key Mode Action Plugin or Mapping
! ๐ Shortcut for shell command :!
g! ๐ Read vim command into buffer :put=execute('โŒด')
Ctrl+n / p ๐‚ Switch history search pairs โ†“ / โ†‘
โ†“ / โ†‘ ๐‚ Switch history search pairs Ctrl n/p

Editor UI

Key Mode Action Plugin or Mapping
Space+ts ๐ Toggle spell-checker :setlocal spell!
Space+tn ๐ Toggle line numbers :setlocal nonumber!
Space+tl ๐ Toggle hidden characters :setlocal nolist!
Space+th ๐ Toggle highlighted search :set hlsearch!
Space+tw ๐ Toggle wrap :setlocal wrap! โ€ฆ
Space+ti ๐ Toggle indentation lines nathanaelkane/vim-indent-guides
g1 ๐ Go to first tab :tabfirst
g9 ๐ Go to last tab :tablast
g5 ๐ Go to previous tab :tabprevious
Ctrl+Tab ๐ Go to next tab :tabnext
Ctrl+ShiftTab ๐ Go to previous tab :tabprevious
Alt+j ๐ Go to next tab :tabnext
Alt+k ๐ Go to previous tab :tabprevious
Alt+{ ๐ Move tab backward :-tabmove
Alt+} ๐ Move tab forward :+tabmove
Space+h ๐ Show highlight groups for word

Custom Tools & Plugins

Key Mode Action Plugin or Mapping
- ๐ Choose a window to edit t9md/vim-choosewin
;+c ๐ Open context-menu plugin/actionmenu.vim
gK ๐ Open Zeal or Dash on some file-types plugin/devhelp.vim
gCtrl+o ๐ Navigate to previous file on jumplist plugin/jumpfile.vim
gCtrl+i ๐ Navigate to next file on jumplist plugin/jumpfile.vim
Space+l ๐ Open side-menu helper rafi/vim-sidemenu
Space+b ๐ Open structure window liuchengxu/vista.vim
Space+a ๐ Show nearby tag in structure window liuchengxu/vista.vim
Space+se ๐ Save current workspace session plugin/sessions.vim
Space+sl ๐ Load workspace session plugin/sessions.vim
Space+n/N ๐ Open alternative file kana/vim-altr
Space+tc ๐ Enable scroll-context window [wellle/context.vim]
Space+tp ๐ Peek scroll-context window [wellle/context.vim]
Space+S ๐ ๐• Source selection y:execute @@
Space+? ๐ Open the macOS dictionary on current word :!open dict://
Space+P ๐ Use Marked 2 for real-time Markdown preview Marked 2
Space+ml ๐ Append modeline to end of buffer config/mappings.vim
Space+mda ๐• Sequentially mark region for diff AndrewRadev/linediff.vim
Space+mdf ๐• Mark region for diff and compare if more than one AndrewRadev/linediff.vim
Space+mds ๐ Shows the comparison for all marked regions AndrewRadev/linediff.vim
Space+mdr ๐ Removes the signs denoting the diff regions AndrewRadev/linediff.vim
Space+mg ๐ Open Magit jreybert/vimagit
Space+mt ๐ ๐• Toggle highlighted word t9md/vim-quickhl
Space+- ๐ Switch editing window with selected t9md/vim-choosewin
Space+G ๐ Toggle distraction-free writing junegunn/goyo
Space+gu ๐ Open undo-tree mbbill/undotree
Space+K ๐ Thesaurus Ron89/thesaurus_query.vim
Space+W ๐ VimWiki vimwiki/vimwiki

Window Management

Key Mode Action Plugin or Mapping
q ๐ Quit window (and Vim, if last window) :quit
Ctrl+q ๐ Remap to C-w Ctrl+w
Ctrl+x ๐ Rotate window placement C-w x
sv ๐ Horizontal split :split
sg ๐ Vertical split :vsplit
st ๐ Open new tab :tabnew
so ๐ Close other windows :only
sb ๐ Previous buffer :b#
sc ๐ Close current buffer :close
sx ๐ Delete buffer, leave blank window :enew โ”‚ bdelete
sz ๐ Toggle window zoom :vertical resize โ”‚ resize
ssv ๐ Split with previous buffer :split โ”‚ wincmd p โ”‚ e#
ssg ๐ Vertical split with previous buffer :vsplit โ”‚ wincmd p โ”‚ e#
sh ๐ Toggle colorscheme background=dark/light :set background โ€ฆ
s- ๐ Lower solarized8 colorscheme contrast :colorscheme โ€ฆ
s= ๐ Raise solarized8 colorscheme contrast :colorscheme โ€ฆ

Git Version Control

Key Mode Action Plugin or Mapping
gs ๐ Preview hunk airblade/vim-gitgutter
gS ๐ ๐• ๐’ Stage hunk airblade/vim-gitgutter
Space+gr ๐ Revert hunk airblade/vim-gitgutter
Space+ga ๐ Git add current file lambdalisue/gina.vim
Space+gd ๐ Git diff lambdalisue/gina.vim
Space+gc ๐ Git branches lambdalisue/gina.vim
Space+gc ๐ Git commit lambdalisue/gina.vim
Space+gb ๐ Git blame lambdalisue/gina.vim
Space+gs ๐ Git status -s lambdalisue/gina.vim
Space+gl ๐ Git log --all lambdalisue/gina.vim
Space+gF ๐ Git fetch lambdalisue/gina.vim
Space+gp ๐ Git push lambdalisue/gina.vim
Space+go ๐ ๐• Open SCM detailed URL in browser lambdalisue/gina.vim

Plugin: Denite

Key Mode Action
;r ๐ Resumes last Denite window
;f ๐ File search
;g ๐ Grep search
;b ๐ Buffers
;i ๐ Old files
;x ๐ Most recently used files (MRU)
;d ๐ Directories and MRU
;v ๐ ๐• Yank history
;l ๐ Location list
;q ๐ Quick fix
;m ๐ Marks
;n ๐ Dein plugin list
;j ๐ Jump points and change stack
;u ๐ Junk files
;o ๐ Outline tags
;s ๐ Sessions
;t ๐ Tag list
;p ๐ Jumps
;h ๐ Help
;w ๐ Memo list
;z ๐ Z (jump around)
;; ๐ Command history
;/ ๐ Buffer lines
;* ๐ Search word under cursor with lines
Space+gt ๐ Find tags matching word under cursor
Space+gf ๐ Find files matching word under cursor
Space+gg ๐ ๐• Grep word under cursor
Within Denite window
jj or Escape ๐ˆ Leave Insert mode
i or / ๐ Enter Insert mode (filter input)
q or Escape ๐ Exit denite window
Tab or Shift+Tab ๐ˆ Next/previous candidate
Space ๐ Select candidate entry
dd ๐ Delete entry
p ๐ Preview entry
st ๐ Open in a new tab
sg ๐ Open in a vertical split
sv ๐ Open in a split
' ๐ Quick-move
r ๐ Redraw
yy ๐ Yank
Tab ๐ List and choose action

Plugin: Defx

Key Mode Action
;e ๐ Open file-explorer (toggle)
;a ๐ Focus current file in file-explorer
Within Defx window
j or k ๐ Move up and down the tree
l or Return ๐ Toggle collapse/expand directory or open file
h ๐ Collapse directory tree
t ๐ Expand directory tree recursively
. ๐ Toggle hidden files
Space ๐ Select entry
* ๐ Invert selection (select all)
& or </kbd> ๐ Change into current working directory
~ ๐ Change to user home directory
u or Backspace ๐ Change into parent directory
u 2/3/4 ๐ Change into parent directory count
st ๐ Open file in new tab
sv ๐ Open file in a horizontal split
sg ๐ Open file in a vertical split
N ๐ Create new directories and/or files
K ๐ Create new directory
c / m / p ๐ Copy, move, and paste
r ๐ Rename file or directory
dd ๐ Trash selected files and directories
y ๐ Yank path to clipboard
w ๐ Toggle window size
]g ๐ Next dirty git item
[g ๐ Previous dirty git item
x or gx ๐ Execute associated system application
gd ๐ Open git diff on selected file
gl ๐ Open terminal file explorer with tmux
gr ๐ Grep in current position
gf ๐ Find files in current position

Plugin: Clap

Key Mode Action
Within Clap window
jj or Escape ๐ˆ Leave Insert mode
i ๐ Enter Insert mode (filter input)
q or Escape ๐ Exit clap window
Tab or Shift+Tab ๐ˆ Next/previous candidate
Space or ' ๐ Select candidate entry
st ๐ Open in a new tab
sg ๐ Open in a vertical split
sv ๐ Open in a split

Plugin: Asyncomplete and Emmet

Key Mode Action
Tab / Shift-Tab ๐ˆ Navigate completion-menu
Enter ๐ˆ Select completion or expand snippet
Ctrl+j/k/d/u ๐ˆ Movement in completion pop-up
Ctrl+Return ๐ˆ Expand Emmet sequence
Ctrl+Space ๐ˆ Refresh and show candidates
Ctrl+y ๐ˆ Close pop-up
Ctrl+e ๐ˆ Cancel selection and close pop-up
Ctrl+l ๐ˆ Expand snippet at cursor
Tab / Shift-Tab ๐ˆ ๐’ Navigate snippet placeholders

Plugin: Any-Jump

Key Mode Action
Space+ii ๐ Jump to definition under cursor
Space+ii ๐• Jump to selected text in visual mode
Space+ib ๐ Open previous opened file (after jump)
Space+il ๐ Open last closed search window again

Plugin: Signature

Key Mode Action
m/ or m? ๐ Show list of buffer marks/markers
mm ๐ Toggle mark on current line
m, ๐ Place next mark
m a-z ๐ Place specific mark (Won't work for: mm, mn, mp)
dm a-z ๐ Remove specific mark (Won't work for: mm, mn, mp)
mn ๐ Jump to next mark
mp ๐ Jump to previous mark
]= ๐ Jump to next marker
[= ๐ Jump to previous marker
m- ๐ Purge all on current line
m Space ๐ Purge marks
m Backspace ๐ Purge markers

Credits & Contribution

Big thanks to the dark knight Shougo.

่งฃๅ†ณ mac tmux ไธ‹ neovim ๆ— ๆณ•ๅคๅˆถๅˆฐๅ‰ช่ดดๆฟ็š„้—ฎ้ข˜

# https://github.com/tmux/tmux/issues/543
brew install reattach-to-user-namespace
# then edit your .tmux.conf
set -g default-shell $SHELL
set -g default-command "reattach-to-user-namespace -l ${SHELL}"
# In .vimrc or ~/.config/nvim/init.vim (I use Neovim):
set clipboard=unnamed
# reload tmux config
tmux source-file ~/.tmux.conf

่งฃๅ†ณ vim gutter ไฝฟ็”จ emoji ๆ–‡ๆœฌๆธฒๆŸ“้—ฎ้ข˜

See this Vim text rendering off by one issue

ๅฆ‚ๆžœไฝ ไฝฟ็”จไบ† Iterm2 + neovim๏ผŒๅนถไธ”ๅœจ gutter ๆ ไฝฟ็”จไบ† emoji ่กจๆƒ…๏ผŒๆฏ”ๅฆ‚ vim-gitgutter, vim-ale ็ญ‰ๆ’ไปถ็š„ๆ็คบๆ˜ฏ emojiใ€‚ ่ฏทๅ‹พ้€‰ Iterm2->Profiles->Text->Use Unicode versoin 9 widths

See this issue https://stackoverflow.com/questions/43107435/emoji-display-issue-in-vim-with-tmux/52142277#52142277

ag (The Silver Searcher) ignore file ๆœ็ดขๅฟฝ็•ฅๆ–‡ไปถ

ๆœ€ๅฅฝๅœจไฝ ็š„ๆ น็›ฎๅฝ•ๆˆ–่€…้กน็›ฎ็›ฎๅฝ•ๅŠ ไธŠ ag ๆœ็ดข้œ€่ฆๅฟฝ็•ฅ็š„ๆ–‡ไปถ๏ผŒ้˜ฒๆญข denite ๆœ็ดขๅ ็”จๅคชๅคงๅ†…ๅญ˜๏ผŒๅนถไธ”ๅŠ ้€Ÿ็ญ›้€‰ๅ†…ๅฎน

add ~/.agignore file:

node_modules
.git
.ropeproject

gen-py/
gen-go/
eggs/
.tmp/
vendor/

*.swp
*.pyc

fzf.vim :Ag ๆœ็ดข็ป“ๆžœๅ‘้€ๅˆฐ quickfix ็ช—ๅฃ

ไฝฟ็”จ fzf.vim ๆœ‰ไธช :Ag ๅ‘ฝไปคๆœ็ดข็š„ๆ—ถๅ€™ๅฏไปฅๆŠŠ็ป“ๆžœๅ‘้€ๅˆฐ quickfix ็ช—ๅฃใ€‚้€šๅธธๆœ็ดข็ป“ๆžœๅฏไปฅไฝฟ็”จ ctrl+n/p ๆฅ้€‰ๆ‹ฉ

ไฝฟ็”จๆ–นๅผ๏ผš

  • :Ag ๆœ็ดข้œ€่ฆ็š„ๅ•่ฏใ€‚:Ag word
  • alt-a ๅ…จ้€‰ (ๆณจๆ„ MacOS iterm2: Settings -> Profiles -> Keys Left Option choose Esc+)
  • alt-d ๅฏไปฅๅ–ๆถˆ้€‰ๆ‹ฉ
  • Enter ๅณๅฏ๏ผŒ่ฟ™ๆ—ถๅ€™ๅฐฑๅฏไปฅๆŠŠๆœ็ดข็ป“ๆžœๅ‘้€ๅˆฐ quickfix ็ช—ๅฃ

ref: junegunn/fzf.vim#586

If you want to use coc.nvim for Golang completion, please see this article ใ€Švim as a go ideใ€‹. Now you can use coc branch for go completion(use gopls). If you use python, type CocInstall coc-python install python coc plugin.

About

Lean mean (Neo)Vim machine, carefully crafted with โค๏ธ Use with Neovim v0.1.5+ or Vim v7.4+

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vim Script 96.9%
  • Vim Snippet 1.1%
  • Other 2.0%