# vim-config **Repository Path**: dasky92/vim-config ## Basic Information - **Project Name**: vim-config - **Description**: github fork vim-cofnig - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rafael Bodill's Neo/vim Config Lean mean Neo/vim machine, 30-45ms startup time. Best with [Neovim] or [Vim8] 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](#features) * [Screenshot](#screenshot) * [Prerequisites](#prerequisites) * [Install](#install) * [Language-Server Protocol (LSP)](#language-server-protocol-lsp) * [Upgrade](#upgrade) * [Recommended Fonts](#recommended-fonts) * [Recommended Linters](#recommended-linters) * [Recommended Tools](#recommended-tools) * [User Custom Config](#user-custom-config) * [Structure](#structure) * [Plugin Highlights](#plugin-highlights) * [Plugins Included](#plugins-included) * [Non Lazy-Loaded Plugins](#non-lazy-loaded-plugins) * [Lazy-Loaded Plugins](#lazy-loaded-plugins) * [Language](#language) * [Commands](#commands) * [Interface](#interface) * [Completion & Code-Analysis](#completion--code-analysis) * [Denite](#denite) * [Operators & Text Objects](#operators--text-objects) * [Custom Key-mappings](#custom-key-mappings) * [Navigation](#navigation) * [File Operations](#file-operations) * [Edit](#edit) * [Search & Replace](#search--replace) * [Clipboard](#clipboard) * [Command & History](#command--history) * [Editor UI](#editor-ui) * [Custom Tools & Plugins](#custom-tools--plugins) * [Window Management](#window-management) * [Git Version Control](#git-version-control) * [Plugin: Denite](#plugin-denite) * [Plugin: Defx](#plugin-defx) * [Plugin: Asyncomplete and Emmet](#plugin-asyncomplete-and-emmet) * [Plugin: Signature](#plugin-signature) * [Credits & Contribution](#credits--contribution)
## 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](#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](http://rafi.io/static/img/project/vim-config/features.png) ## Prerequisites * Python 3 (`brew install python`) * Neovim or Vim (`brew install neovim` and/or `brew install vim`) ## Install **_1._** Let's clone this repo! Clone to `~/.config/nvim`, we'll also symlink it for regular Vim: ```bash 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: `./venvs.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! :smile: ## Language-Server Protocol (LSP) To leverage LSP auto-completions and other functionalities, once you open a file in Neo/vim, run `:LspInstallServer` to use [mattn/vim-lsp-settings] installation feature. ## Upgrade ```bash 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 * [Pragmata Pro] (โ‚ฌ19 โ€“ โ‚ฌ1,990): My preferred font * Any of the [Nerd Fonts] On macOS with Homebrew, choose one of the [Nerd Fonts], for example, to install the [Hack](https://sourcefoundry.org/hack/) font: ```bash 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 ``` [Pragmata Pro]: https://www.fsd.it/shop/fonts/pragmatapro/ [Nerd Fonts]: https://www.nerdfonts.com ### Recommended Linters * macOS with Homebrew: ```sh brew install shellcheck jsonlint yamllint tflint ansible-lint brew install tidy-html5 proselint write-good ``` * Node.js based linters: ```sh yarn global add eslint jshint jsxhint stylelint sass-lint yarn global add markdownlint-cli raml-cop ``` * Python based linters: ```sh pip3 install --user vim-vint pycodestyle pyflakes flake8 ``` ### Recommended Tools * **ag** [ggreer/the_silver_searcher](https://github.com/ggreer/the_silver_searcher) (macOS: `brew install the_silver_searcher`) * and/or **ripgrep**: [BurntSushi/ripgrep](https://github.com/BurntSushi/ripgrep) (macOS: `brew install rg`) * Jump around with **z**: [rupa/z](https://github.com/rupa/z) (macOS: `brew install z`) * or **z.lua**: [acme/zlua](https://github.com/skywind3000/z.lua) * **[Universal ctags](https://ctags.io/)** for syntax tokenization (macOS: `brew install universal-ctags/universal-ctags/universal-ctags`) * Fuzzy file finders: **[fzf](https://github.com/junegunn/fzf)**, **[fzy](https://github.com/jhawthorn/fzy)**, or **[peco](https://github.com/peco/peco)** (macOS: `brew install fzf`) ## 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.: ```yaml - { repo: dense-analysis/ale, if: 0 } ``` ## Structure * [config/](./config) - Configuration * [plugins/](./config/plugins) - Plugin configurations * [all.vim](./config/plugins/all.vim) - Plugin mappings * [โ€ฆ](./config/plugins) * [filetype.vim](./config/filetype.vim) - Language behavior * [general.vim](./config/general.vim) - General configuration * **local.plugins.yaml** - Custom user plugins * **local.vim** - Custom user settings * [mappings.vim](./config/mappings.vim) - Key-mappings * [plugins.yaml](./config/plugins.yaml) - My favorite _**Plugins!**_ * [terminal.vim](./config/terminal.vim) - Terminal configuration * [vimrc](./config/vimrc) - Initialization * [ftplugin/](./ftplugin) - Language specific custom settings * [plugin/](./plugin) - Customized small plugins * [snippets/](./snippets) - Personal code snippets * [themes/](./themes) - Colorscheme overrides * [filetype.vim](./filetype.vim) - Custom filetype detection ## 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 | [itchyny/vim-gitbranch] | Lightweight git branch detection | [itchyny/vim-parenmatch] | Efficient alternative to the standard matchparen plugin | [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 | [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 | [rhysd/vim-gfm-syntax] | GitHub Flavored Markdown syntax highlight extension | [pangloss/vim-javascript] | Enhanced Javascript syntax | [HerringtonDarkholme/yats.vim] | Advanced TypeScript Syntax Highlighting | [MaxMEllon/vim-jsx-pretty] | React JSX syntax pretty highlighting | [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 | [fatih/vim-go] | Go development | [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 | [IN3D/vim-raml] | Syntax and language settings for RAML | [towolf/vim-helm] | Syntax for Helm templates (yaml + gotmpl + sprig) | [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 | [liuchengxu/vim-which-key] | Shows key-bindings in pop-up | [mbbill/undotree] | Ultimate undo history visualizer | [reedes/vim-wordy] | Uncover usage problems in your writing | [brooth/far.vim] | Fast find and replace plugin | [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 | [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 | [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' | [lambdalisue/suda.vim] | An alternative sudo.vim for Vim and Neovim | [mzlogin/vim-markdown-toc] | Generate table of contents for Markdown files | [chemzqm/vim-easygit] | Git wrapper focus on simplity and usability | [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 | -------------- | ---------------------- | [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 | [hotwatermorning/auto-git-diff] | Display Git diff for interactive rebase | [rafi/vim-sidemenu] | Small side-menu useful for terminal users | [machakann/vim-highlightedyank] | Make the yanked region apparent | [wellle/context.vim] | Show context of current visible code hierarchy | [itchyny/cursorword] | Underlines word under cursor | [norcalli/nvim-colorizer.lua] | The fastest Neovim colorizer | [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 | [vimwiki/vimwiki] | Personal Wiki for Vim #### 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-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 | [dense-analysis/ale] | Check syntax asynchronously and fix files with LSP support | [mattn/emmet-vim] | Provides support for expanding abbreviations alรก emmet | [ncm2/float-preview.nvim] | Less annoying completion preview window | [ludovicchabant/vim-gutentags] | Manages your tag files | [Raimondi/delimitMate] | Auto-completion for quotes, parens, brackets #### Denite | 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 | [chemzqm/denite-git] | gitlog, gitstatus and gitchanged sources | [rafi/vim-denite-session] | Browse and open sessions | [rafi/vim-denite-z] | Filter and browse Z (jump around) data file #### 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 | [osyo-manga/vim-textobj-multiblock] | Handle bracket objects | [kana/vim-textobj-function] | Text objects for functions [Shougo/dein.vim]: https://github.com/Shougo/dein.vim [rafi/awesome-colorschemes]: https://github.com/rafi/awesome-vim-colorschemes [itchyny/vim-gitbranch]: https://github.com/itchyny/vim-gitbranch [itchyny/vim-parenmatch]: https://github.com/itchyny/vim-parenmatch [thinca/vim-localrc]: https://github.com/thinca/vim-localrc [romainl/vim-cool]: https://github.com/romainl/vim-cool [sgur/vim-editorconfig]: https://github.com/sgur/vim-editorconfig [christoomey/tmux-navigator]: https://github.com/christoomey/vim-tmux-navigator [tpope/vim-sleuth]: https://github.com/tpope/vim-sleuth [roxma/nvim-yarp]: https://github.com/roxma/nvim-yarp [roxma/vim-hug-neovim-rpc]: https://github.com/roxma/vim-hug-neovim-rpc [hail2u/vim-css3-syntax]: https://github.com/hail2u/vim-css3-syntax [othree/csscomplete.vim]: https://github.com/othree/csscomplete.vim [cakebaker/scss-syntax.vim]: https://github.com/cakebaker/scss-syntax.vim [groenewege/vim-less]: https://github.com/groenewege/vim-less [iloginow/vim-stylus]: https://github.com/iloginow/vim-stylus [mustache/vim-mustache-handlebars]: https://github.com/mustache/vim-mustache-handlebars [digitaltoad/vim-pug]: https://github.com/digitaltoad/vim-pug [othree/html5.vim]: https://github.com/othree/html5.vim [plasticboy/vim-markdown]: https://github.com/plasticboy/vim-markdown [rhysd/vim-gfm-syntax]: https://github.com/rhysd/vim-gfm-syntax [pangloss/vim-javascript]: https://github.com/pangloss/vim-javascript [HerringtonDarkholme/yats.vim]: https://github.com/HerringtonDarkholme/yats.vim [MaxMEllon/vim-jsx-pretty]: https://github.com/MaxMEllon/vim-jsx-pretty [heavenshell/vim-jsdoc]: https://github.com/heavenshell/vim-jsdoc [jparise/vim-graphql]: https://github.com/jparise/vim-graphql [moll/vim-node]: https://github.com/moll/vim-node [kchmck/vim-coffee-script]: https://github.com/kchmck/vim-coffee-script [elzr/vim-json]: https://github.com/elzr/vim-json [posva/vim-vue]: https://github.com/posva/vim-vue [fatih/vim-go]: https://github.com/fatih/vim-go [vim-python/python-syntax]: https://github.com/vim-python/python-syntax [Vimjas/vim-python-pep8-indent]: https://github.com/Vimjas/vim-python-pep8-indent [vim-scripts/python_match.vim]: https://github.com/vim-scripts/python_match.vim [raimon49/requirements.txt.vim]: https://github.com/raimon49/requirements.txt.vim [StanAngeloff/php.vim]: https://github.com/StanAngeloff/php.vim [tbastos/vim-lua]: https://github.com/tbastos/vim-lua [vim-ruby/vim-ruby]: https://github.com/vim-ruby/vim-ruby [keith/swift.vim]: https://github.com/keith/swift.vim [rust-lang/rust.vim]: https://github.com/rust-lang/rust.vim [vim-jp/syntax-vim-ex]: https://github.com/vim-jp/syntax-vim-ex [chrisbra/csv.vim]: https://github.com/chrisbra/csv.vim [tpope/vim-git]: https://github.com/tpope/vim-git [ekalinin/Dockerfile.vim]: https://github.com/ekalinin/Dockerfile.vim [tmux-plugins/vim-tmux]: https://github.com/tmux-plugins/vim-tmux [MTDL9/vim-log-highlighting]: https://github.com/MTDL9/vim-log-highlighting [cespare/vim-toml]: https://github.com/cespare/vim-toml [mboughaba/i3config.vim]: https://github.com/mboughaba/i3config.vim [dag/vim-fish]: https://github.com/dag/vim-fish [jstrater/mpvim]: https://github.com/jstrater/mpvim [robbles/logstash.vim]: https://github.com/robbles/logstash.vim [lifepillar/pgsql.vim]: https://github.com/lifepillar/pgsql.vim [chr4/nginx.vim]: https://github.com/chr4/nginx.vim [IN3D/vim-raml]: https://github.com/IN3D/vim-raml [towolf/vim-helm]: https://github.com/towolf/vim-helm [pearofducks/ansible-vim]: https://github.com/pearofducks/ansible-vim [hashivim/vim-terraform]: https://github.com/hashivim/vim-terraform [Shougo/defx.nvim]: https://github.com/Shougo/defx.nvim [kristijanhusak/defx-git]: https://github.com/kristijanhusak/defx-git [kristijanhusak/defx-icons]: https://github.com/kristijanhusak/defx-icons [tyru/caw.vim]: https://github.com/tyru/caw.vim [Shougo/context_filetype.vim]: https://github.com/Shougo/context_filetype.vim [liuchengxu/vim-which-key]: https://github.com/liuchengxu/vim-which-key [mbbill/undotree]: https://github.com/mbbill/undotree [reedes/vim-wordy]: https://github.com/reedes/vim-wordy [brooth/far.vim]: https://github.com/brooth/far.vim [jreybert/vimagit]: https://github.com/jreybert/vimagit [tweekmonster/helpful.vim]: https://github.com/tweekmonster/helpful.vim [lambdalisue/gina.vim]: https://github.com/lambdalisue/gina.vim [kana/vim-altr]: https://github.com/kana/vim-altr [Shougo/vinarise.vim]: https://github.com/Shougo/vinarise.vim [guns/xterm-color-table.vim]: https://github.com/guns/xterm-color-table.vim [cocopon/colorswatch.vim]: https://github.com/cocopon/colorswatch.vim [dstein64/vim-startuptime]: https://github.com/dstein64/vim-startuptime [jaawerth/nrun.vim]: https://github.com/jaawerth/nrun.vim [Vigemus/iron.nvim]: https://github.com/Vigemus/iron.nvim [kana/vim-niceblock]: https://github.com/kana/vim-niceblock [t9md/vim-choosewin]: https://github.com/t9md/vim-choosewin [lambdalisue/suda.vim]: https://github.com/lambdalisue/suda.vim [mzlogin/vim-markdown-toc]: https://github.com/mzlogin/vim-markdown-toc [chemzqm/vim-easygit]: https://github.com/chemzqm/vim-easygit [liuchengxu/vista.vim]: https://github.com/liuchengxu/vista.vim [junegunn/fzf]: https://github.com/junegunn/fzf [junegunn/fzf.vim]: https://github.com/junegunn/fzf.vim [Ron89/thesaurus_query.vim]: https://github.com/Ron89/thesaurus_query.vim [haya14busa/vim-asterisk]: https://github.com/haya14busa/vim-asterisk [rhysd/accelerated-jk]: https://github.com/rhysd/accelerated-jk [haya14busa/vim-edgemotion]: https://github.com/haya14busa/vim-edgemotion [t9md/vim-quickhl]: https://github.com/t9md/vim-quickhl [hotwatermorning/auto-git-diff]: https://github.com/hotwatermorning/auto-git-diff [rafi/vim-sidemenu]: https://github.com/rafi/vim-sidemenu [machakann/vim-highlightedyank]: https://github.com/machakann/vim-highlightedyank [wellle/context.vim]: https://github.com/wellle/context.vim [itchyny/cursorword]: https://github.com/itchyny/vim-cursorword [norcalli/nvim-colorizer.lua]: https://github.com/norcalli/nvim-colorizer.lua [airblade/vim-gitgutter]: https://github.com/airblade/vim-gitgutter [kshenoy/vim-signature]: https://github.com/kshenoy/vim-signature [nathanaelkane/vim-indent-guides]: https://github.com/nathanaelkane/vim-indent-guides [rhysd/committia.vim]: https://github.com/rhysd/committia.vim [junegunn/goyo]: https://github.com/junegunn/goyo.vim [junegunn/limelight]: https://github.com/junegunn/limelight.vim [itchyny/calendar.vim]: https://github.com/itchyny/calendar.vim [vimwiki/vimwiki]: https://github.com/vimwiki/vimwiki [prabirshrestha/async.vim]: https://github.com/prabirshrestha/async.vim [prabirshrestha/asyncomplete.vim]: https://github.com/prabirshrestha/asyncomplete.vim [prabirshrestha/asyncomplete-lsp.vim]: https://github.com/prabirshrestha/asyncomplete-lsp.vim [prabirshrestha/vim-lsp]: https://github.com/prabirshrestha/vim-lsp [mattn/vim-lsp-settings]: https://github.com/mattn/vim-lsp-settings [Shougo/neco-vim]: https://github.com/Shougo/neco-vim [prabirshrestha/asyncomplete-necovim.vim]: https://github.com/prabirshrestha/asyncomplete-necovim.vim [prabirshrestha/asyncomplete-tags.vim]: https://github.com/prabirshrestha/asyncomplete-tags.vim [prabirshrestha/asyncomplete-file.vim]: https://github.com/prabirshrestha/asyncomplete-file.vim [wellle/tmux-complete.vim]: https://github.com/wellle/tmux-complete.vim [prabirshrestha/asyncomplete-ultisnips.vim]: https://github.com/prabirshrestha/asyncomplete-ultisnips.vim [SirVer/ultisnips]: https://github.com/SirVer/ultisnips [honza/vim-snippets]: https://github.com/honza/vim-snippets [dense-analysis/ale]: https://github.com/dense-analysis/ale [mattn/emmet-vim]: https://github.com/mattn/emmet-vim [ncm2/float-preview.nvim]: https://github.com/ncm2/float-preview.nvim [ludovicchabant/vim-gutentags]: https://github.com/ludovicchabant/vim-gutentags [Raimondi/delimitMate]: https://github.com/Raimondi/delimitMate [Shougo/denite.nvim]: https://github.com/Shougo/denite.nvim [Shougo/neomru.vim]: https://github.com/Shougo/neomru.vim [Shougo/neoyank.vim]: https://github.com/Shougo/neoyank.vim [Shougo/junkfile.vim]: https://github.com/Shougo/junkfile.vim [chemzqm/unite-location]: https://github.com/chemzqm/unite-location [chemzqm/denite-git]: https://github.com/chemzqm/denite-git [rafi/vim-denite-session]: https://github.com/rafi/vim-denite-session [rafi/vim-denite-z]: https://github.com/rafi/vim-denite-z [kana/vim-operator-user]: https://github.com/kana/vim-operator-user [kana/vim-operator-replace]: https://github.com/kana/vim-operator-replace [machakann/vim-sandwich]: https://github.com/machakann/vim-sandwich [kana/vim-textobj-user]: https://github.com/kana/vim-textobj-user [terryma/vim-expand-region]: https://github.com/terryma/vim-expand-region [AndrewRadev/sideways.vim]: https://github.com/AndrewRadev/sideways.vim [AndrewRadev/splitjoin.vim]: https://github.com/AndrewRadev/splitjoin.vim [AndrewRadev/linediff.vim]: https://github.com/AndrewRadev/linediff.vim [AndrewRadev/dsf.vim]: https://github.com/AndrewRadev/dsf.vim [osyo-manga/vim-textobj-multiblock]: https://github.com/osyo-manga/vim-textobj-multiblock [kana/vim-textobj-function]: https://github.com/kana/vim-textobj-function
## 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] | ]c or ]c | ๐ | Next/previous Ale diagnostic | [dense-analysis/ale] | 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 | `o` | < | ๐• ๐’ | Indent to left and re-select | `> | ๐• ๐’ | Indent to right and re-select | `>gv|` | Tab | ๐• ๐’ | Indent to right and re-select | `>gv|` | Shift+Tab | ๐• ๐’ | Indent to left and re-select | `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 | `yapp` | Space+cw | ๐ | Remove all spaces at EOL | `:%s/\s\+$//e` | Ctrl+Tab | ๐ˆ | 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 | ----- |:----:| ------------------ | ------ | * / # | ๐ ๐• | 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] | 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+o | ๐ ๐• | Open SCM detailed URL in browser | [plugin/browser.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` | 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 | [chemzqm/vim-easygit] | Space+gd | ๐ | Git diff | [chemzqm/vim-easygit] | Space+gc | ๐ | Git commit | [chemzqm/vim-easygit] | Space+gb | ๐ | Git blame | [chemzqm/vim-easygit] | Space+gF | ๐ | Git fetch | [chemzqm/vim-easygit] | Space+gp | ๐ | Git push | [chemzqm/vim-easygit] ### Plugin: Denite | Key | Mode | Action | ----- |:----:| ------------------ | ;r | ๐ | Resumes last Denite window | ;f | ๐ | File search | ;g | ๐ | Grep search | ;b | ๐ | Buffers and MRU | ;d | ๐ | Directories and MRU | ;v | ๐ ๐• | Yank history | ;l | ๐ | Location list | ;q | ๐ | Quick fix | ;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 | ;m | ๐ | Memo list | ;z | ๐ | Z (jump around) | ;; | ๐ | Command history | ;/ | ๐ | Buffer lines | ;* | ๐ | Search word under cursor with lines | Space+gl | ๐ | Git log (all) | Space+gs | ๐ | Git status | Space+gc | ๐ | Git branches | 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 \ | ๐ | 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: 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 | Ctrl+f | ๐ˆ ๐’ | Jump to next snippet placeholder | Ctrl+b | ๐ˆ ๐’ | Jump to previous snippet placeholder ### 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](https://github.com/Shougo). [config/mappings.vim]: ./config/mappings.vim [plugin/whitespace.vim]: ./plugin/whitespace.vim [plugin/sessions.vim]: ./plugin/sessions.vim [plugin/browser.vim]: ./plugin/browser.vim [plugin/devhelp.vim]: ./plugin/devhelp.vim [plugin/actionmenu.vim]: ./plugin/actionmenu.vim [Marked 2]: https://marked2app.com [Neovim]: https://github.com/neovim/neovim [Vim8]: https://github.com/vim/vim [lazy-loaded]: ./config/plugins.yaml#L47 ### ่งฃๅ†ณ 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](https://www.reddit.com/r/vim/comments/6vkoii/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: https://github.com/junegunn/fzf.vim/issues/586 ### [Coc.Nvim](https://github.com/neoclide/coc.nvim) If you want to use [coc.nvim](https://github.com/neoclide/coc.nvim) for Golang completion, please see this article [ใ€Švim as a go ideใ€‹](https://octetz.com/docs/2019/2019-04-24-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.