Update neovim.md

This commit is contained in:
yamabiiko 2021-04-10 15:41:44 +00:00
parent 882970ebb3
commit 91c1e1fd79
1 changed files with 75 additions and 46 deletions

View File

@ -1,49 +1,39 @@
set nocompatible " Required to read a vim (not vi) config correctly # Neovim config (general/development)
set completeopt=preview " Completation mode: preview
" Vim-airline settings ## Global settings
let g:airline_powerline_fonts = 1 ```vim
let g:airline#extensions#tabline#enabled = 1 set nocompatible
let g:airline_theme='term' set completeopt=preview
let g:airline#extensions#whitespace#enabled = 0
" Python settings
let g:python3_host_prog = '/usr/bin/python3.9'
let g:loaded_python_provider = 0
" Default 4 tab spaces
set tabstop=4 set tabstop=4
set shiftwidth=4 set shiftwidth=4
set expandtab set expandtab
" change it based on filetype ```
autocmd Filetype ruby setlocal ts=2 sw=2 These standard vim settings will make the tab key insert 4 spaces instead of using a tab character, and
autocmd Filetype slim setlocal ts=2 sw=2 use preview mode instead of auto-completing when using completion plugins.
```vim
" set cindent
set encoding=utf-8 set encoding=utf-8
set nu set nu
set hidden set hidden
set noshowmode set noshowmode
" Disabling backups and swap files (cause problem in servers, messy dirs etc.) ```
" You might want to comment this if you are on an unstable system We set the encondig to UTF-8 and show the number line. Setting hidden allows you to quit a buffer without saving it. \
We don't need showmode since we will be using vim-airline for status.
```vim
set nobackup set nobackup
set nowritebackup set nowritebackup
set noswapfile set noswapfile
```
Backups, swapfiles and others are disabled. If your system is unstable, you might want to delete those lines, however it can cause problems with servers and cause messy folders.
" Use Ctrl+Q to close buffer ## Custom settings
noremap <C-q> :bd<CR> ```vim
" Map Ctrl+N for NerdTree autocmd Filetype ruby setlocal ts=2 sw=2
map <C-n> :NERDTreeToggle<CR> autocmd Filetype slim setlocal ts=2 sw=2
inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>" filetype plugin indent on
" Map ; to search files (fd) ```
map ; :Files<CR> Using tabspaces of 2 on ruby files. (Maybe should use some plugin to manage this, WIP)
" Map , to match in files (ripgrep) ```vim
map ' :Rg<CR> funcion! WinMove(key)
" Map /ln to disable highlighting
nmap <leader>ln :noh<CR>
" Windows splitting and movement (move windows with hjkl keys)
function! WinMove(key)
let t:curwin = winnr() let t:curwin = winnr()
exec "wincmd ".a:key exec "wincmd ".a:key
if (t:curwin == winnr()) if (t:curwin == winnr())
@ -60,24 +50,63 @@ nnoremap <silent> <C-h> :call WinMove('h')<CR>
nnoremap <silent> <C-j> :call WinMove('j')<CR> nnoremap <silent> <C-j> :call WinMove('j')<CR>
nnoremap <silent> <C-k> :call WinMove('k')<CR> nnoremap <silent> <C-k> :call WinMove('k')<CR>
nnoremap <silent> <C-l> :call WinMove('l')<CR> nnoremap <silent> <C-l> :call WinMove('l')<CR>
```
This function and remap lets us use Ctrl + hjkl keys to move windows in neovim
### Key bindings
```
noremap <C-q> :bd<CR>
map <C-n> :NERDTreeToggle<CR>
map ; :Files<CR>
map ' :Rg<CR>
nmap <leader>ln :noh<CR>
```
- `CTRL+Q` -> Close buffer
" Using Plug for plugins - `CTRL+N` -> Open NERDTree
- `\ln` -> Disable highlighting
- `'` -> Search by matching inside files (using fzf + ripgrep)
- `;` -> Search by matching name of files (using fzf + fd)
## Plugin settings
```vim
call plug#begin('~/.vim/plugged') call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'preservim/nerdtree' " NerdTree for browsing directories Plug 'neoclide/coc.nvim', { 'branch': 'release' }
Plug 'neoclide/coc.nvim', { 'branch': 'release' } " CoC for completion, works similar to VSCode Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " Fuzzy finder
Plug 'junegunn/fzf.vim' Plug 'junegunn/fzf.vim'
Plug 'vim-airline/vim-airline' " Status/tabline for vim Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes' Plug 'vim-airline/vim-airline-themes'
Plug 'jiangmiao/auto-pairs' " Brackets management plugins Plug 'jiangmiao/auto-pairs' " Brackets management plugins
Plug 'machakann/vim-sandwich' Plug 'machakann/vim-sandwich'
Plug 'airblade/vim-gitgutter' " Git plugin Plug 'airblade/vim-gitgutter' " Git plugin
call plug#end() call plug#end()
```
We use vim-plug for plugin management. More information on how to set it up on its [GitHub repo](https://github.com/junegunn/vim-plug)
#### Plugin list:
- [NERDTree](https://github.com/preservim/nerdtree) for browsing directories as trees
filetype plugin indent on - [ConquerOfCompletion](https://github.com/neoclide/coc.nvim) as a completion engine (compatible with VSCode ones)
syntax enable - [fzf](https://github.com/junegunn/fzf) as a fuzzy file finder
- [vim-airline](https://github.com/vim-airline/vim-airline) as a status line
- [vim-gitgutter](https://github.com/airblade/vim-gitgutter) minimalist git plugin
- [vim-sandwich](https://github.com/machakann/vim-sandwich) and [auto-pairs](https://github.com/jiangmiao/auto-pairs) for brackets management
### Vim-airline settings
```vim
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
let g:airline_theme='term'
let g:airline#extensions#whitespace#enabled = 0
```
Enable powerline fonts
### Fzf settings/tips
In order to use fd (fast rust alternative to find) with Fzf, install `fd` and add this to your `.bashrc`:
```
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git --exclude .vim'
```
To use ripgrep, simply install it and use `:Rg` (or the shortcut `'`)
### CoC (ConquerOfCompletion) settings/tips
In order to install a particular langauge completion, use `:CocInstall` \
Here is a small list:
- `coc-go` Golang completion
- `coc-rls` Rust completion
- `coc-pyright` Python completion and static analyzer
- `coc-sh` Bash completion