199 lines
9.4 KiB
Markdown
199 lines
9.4 KiB
Markdown
# Vim
|
|
|
|
Vim è un editor di testo molto potente, che può essere ampliato ulteriormente tramite **plugin** vari.
|
|
|
|
Prima, però, ecco una configurazione base che aggiunge varie funzionalità:
|
|
|
|
```vim
|
|
" IMPOSTAZIONI ----------------------------------------------------------- {{{
|
|
|
|
colorscheme catppuccin_mocha
|
|
set spell spelllang=it,en
|
|
syntax on " Enable type file detection. Vim will be able to try to detect the type of file in use.
|
|
filetype off " Enable plugins and load plugin for the detected file type.
|
|
set nocompatible " be iMproved, required
|
|
filetype plugin indent on " required
|
|
set omnifunc=syntaxcomplete " Enable Omnicomplete features
|
|
filetype plugin on " Load an indent file for the detected file type.
|
|
filetype indent on
|
|
set foldenable
|
|
set autoindent " Automatically guesses the indentation given the previous one
|
|
set hlsearch " Automatically highlights search results, to hide them run :noh
|
|
set incsearch " Searches incrementally as you type.
|
|
set ruler " Shows the rulers
|
|
set showcmd " Shows current cursor info
|
|
set ignorecase " Ignores cases when searching
|
|
set noswapfile " Disables swap files
|
|
set undofile " Enable keeping history across sessions, don't forget to mkdir
|
|
set undodir=~/.vim/undo/
|
|
set nofixeol " Do not insert a new line at the end of the file automatically
|
|
set backspace=indent,eol,start " Enable backspace key to delete stuffs properly
|
|
set termguicolors
|
|
set number " Add numbers to each line on the left-hand side.
|
|
set relativenumber
|
|
set clipboard=unnamedplus
|
|
set cursorline " Highlight cursor line underneath the cursor horizontally.
|
|
set nobackup " Do not save backup files.
|
|
set nowrap " Do not wrap lines. Allow long lines to extend as far as the line goes.
|
|
set incsearch " While searching though a file incrementally highlight matching characters as you type.
|
|
set ignorecase " Ignore capital letters during search.
|
|
set smartcase " This will allow you to search specifically for capital letters.
|
|
set showmode " Show the mode you are on the last line.
|
|
set showmatch " Show matching words during a search.
|
|
set hlsearch " Use highlighting when doing a search.
|
|
set wildmenu " Enable auto completion menu after pressing TAB.
|
|
set wildmode=list:longest " Make wildmenu behave like similar to Bash completion.
|
|
set foldenable
|
|
set foldmethod=indent
|
|
set ttyfast " Speed up scrolling in Vim
|
|
set encoding=UTF-8
|
|
set nobackup " Neoclide
|
|
set nowritebackup
|
|
set updatetime=300
|
|
set signcolumn=yes
|
|
" }}}
|
|
|
|
```
|
|
|
|
## Plugin Manager
|
|
|
|
Per poter installare dei plugin è necessario installare prima un plugin-manager.
|
|
|
|
### Vundle
|
|
|
|
```bash
|
|
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
|
|
```
|
|
|
|
Dopo aver clonato Vundle sulla propria macchina, inserire le seguenti righe di testo nel file `.vimrc`
|
|
|
|
```vimrc
|
|
" PLUGINS ---------------------------------------------------------------- {{{
|
|
|
|
" set the runtime path to include Vundle and initialize
|
|
set rtp+=~/.vim/bundle/Vundle.vim
|
|
call vundle#begin()
|
|
|
|
" let Vundle manage Vundle, required
|
|
Plugin 'VundleVim/Vundle.vim'
|
|
"
|
|
" All of your Plugins must be added before the following line
|
|
"
|
|
|
|
call vundle#end() " required
|
|
|
|
" }}}
|
|
```
|
|
|
|
## Installazione plugin
|
|
|
|
Installare un plugin è molto semplice, basta aggiungerlo nel file `.vimrc`, come da codice sottostante:
|
|
|
|
```vim
|
|
" PLUGINS ---------------------------------------------------------------- {{{
|
|
|
|
" set the runtime path to include Vundle and initialize
|
|
set rtp+=~/.vim/bundle/Vundle.vim
|
|
call vundle#begin()
|
|
|
|
" let Vundle manage Vundle, required
|
|
Plugin 'VundleVim/Vundle.vim'
|
|
"
|
|
" All of your Plugins must be added before the following line
|
|
"
|
|
Plugin 'neoclide/coc.nvim', {'branch': 'release'}
|
|
Plugin 'itchyny/vim-cursorword'
|
|
Plugin 'preservim/nerdtree'
|
|
Plugin 'iamcco/markdown-preview.nvim'
|
|
Plugin 'alvan/vim-closetag'
|
|
Plugin 'mattn/emmet-vim'
|
|
Plugin 'jiangmiao/auto-pairs'
|
|
Plugin 'ryanoasis/vim-devicons'
|
|
Plugin 'frazrepo/vim-rainbow'
|
|
Plugin 'mg979/vim-visual-multi', {'branch': 'master'}
|
|
Plugin 'itchyny/lightline.vim'
|
|
Plugin 'voldikss/vim-floaterm'
|
|
Bundle 'https://github.com/prashanthellina/follow-markdown-links'
|
|
Plugin 'mracos/mermaid.vim'
|
|
Plugin 'mzlogin/vim-markdown-toc'
|
|
Plugin 'bbrtj/vim-vorg-md'
|
|
Plugin 'sheerun/vim-polyglot'
|
|
|
|
call vundle#end() " required
|
|
```
|
|
|
|
Una volta salvato il file, digitare `:PluginInstall`.
|
|
|
|
Quando l'installazione è completata, è buona norma cancellare la cache del buffer digitando il comando `:bdelete`.
|
|
|
|
È possibile ricercare plugin nel Web oppure tramite il comando `:PluginSearch`. Per aggiornare l'elenco locale dei plugin dal sito vimscripts digitare:
|
|
`:PluginSearch!`
|
|
|
|
### Alcuni plugin utili
|
|
|
|
- [https://github.com/preservim/nerdtree](https://github.com/preservim/nerdtree)
|
|
- [https://github.com/VundleVim/Vundle.vim](https://github.com/VundleVim/Vundle.vim)
|
|
- [https://github.com/sheerun/vim-polyglot](https://github.com/sheerun/vim-polyglot)
|
|
- [https://github.com/alvan/vim-closetag](https://github.com/alvan/vim-closetag)
|
|
- [https://github.com/mattn/emmet-vim](https://github.com/mattn/emmet-vim)
|
|
- [https://github.com/ryanoasis/vim-devicons](https://github.com/ryanoasis/vim-devicons)
|
|
- [https://github.com/nopecha-ai/nopecha-extension](https://github.com/nopecha-ai/nopecha-extension)
|
|
- [https://github.com/thameera/vimv](https://github.com/thameera/vimv)
|
|
- [https://github.com/voldikss/vim-floaterm#requirements](https://github.com/voldikss/vim-floaterm#requirements)
|
|
- [https://github.com/akrawchyk/awesome-vim](https://github.com/akrawchyk/awesome-vim)
|
|
- [https://github.com/neoclide/coc.nvim](https://github.com/neoclide/coc.nvim)
|
|
- [https://github.com/fannheyward/coc-marketplace](https://github.com/fannheyward/coc-marketplace)
|
|
- [https://github.com/OmniSharp/omnisharp-vim](https://github.com/OmniSharp/omnisharp-vim)
|
|
- [https://github.com/ncm2/ncm2](https://github.com/ncm2/ncm2)
|
|
- [https://github.com/prashanthellina/follow-markdown-links](https://github.com/prashanthellina/follow-markdown-links)
|
|
- [https://github.com/itchyny/calendar.vim](https://github.com/itchyny/calendar.vim)
|
|
- [https://github.com/mracos/mermaid.vim](https://github.com/mracos/mermaid.vim)
|
|
- [https://github.com/bbrtj/vim-vorg-md](https://github.com/bbrtj/vim-vorg-md)
|
|
- [https://github.com/rderik/vim-markdown-toc](https://github.com/rderik/vim-markdown-toc)
|
|
- [https://github.com/tpope/vim-commentary](https://github.com/tpope/vim-commentary)
|
|
- [https://clay-atlas.com/us/blog/2021/07/04/vim-en-you-complete-me-plugin-auto-code/](https://clay-atlas.com/us/blog/2021/07/04/vim-en-you-complete-me-plugin-auto-code/)
|
|
- [https://github.com/ycm-core/YouCompleteMe](https://github.com/ycm-core/YouCompleteMe)
|
|
- [https://github.com/primitivorm/vim-predictive](https://github.com/primitivorm/vim-predictive)
|
|
- [https://github.com/itchyny/vim-cursorword](https://github.com/itchyny/vim-cursorword)
|
|
|
|
Nel caso di `neoclide`, un plugin che abilita l'autocompletamento, da installare i seguenti moduli:
|
|
|
|
```vim
|
|
CocInstall coc-cmake coc-css coc-cssmodules coc-docker coc-emmet coc-flutter coc-highlight coc-html coc-htmlhint coc-html-css-support coc-json coc-ltex coc-markdown-preview-enhanced coc-markdownlint coc-omnisharp coc-prettier coc-pytho
|
|
n coc-sh coc-sql coc-vimlsp coc-xml coc-yaml coc-markdown-preview-enhanced coc-webview
|
|
```
|
|
|
|
Quindi eseguire:
|
|
|
|
```bash
|
|
cd ~/.vim/bundle/coc.nvim && git checkout release && yarn install && yarn build
|
|
```
|
|
|
|
![vim](./asset/vim/vim.png)
|
|
|
|
|
|
## Comandi utili
|
|
|
|
| Comando | Funzione |
|
|
|-----------|------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
| `gx` | Apre il link sotto al cursore nel browser |
|
|
| `:m +/-n` | Sposta la riga sopra o sotto di *n* posizioni |
|
|
| `"+y` | In Visual Mode, copia il testo selezionato nella clipboard del SO |
|
|
| `vimv` | Da terminale, permette di rinominare cartelle e file coi comandi di Vim ([https://github.com/thameera/vimv](https://github.com/thameera/vimv)) |
|
|
| `:args` | Seleziona dei file come argomenti. È possibile utilizzare i caratteri jolly |
|
|
| `:argdo` | Permette di eseguire un comando su n files |
|
|
|
|
|
|
Ad esempio:
|
|
|
|
```vim
|
|
:argdo %s/stringToBeReplaced/replacementString/g | update
|
|
```
|
|
`update` serve per salvare le modifiche automaticamente.
|
|
|
|
## Collegamenti
|
|
|
|
- [https://irian.to/blogs/how-to-search-and-replace-string-across-multiple-files-in-vim/](https://irian.to/blogs/how-to-search-and-replace-string-across-multiple-files-in-vim/)
|
|
- [https://linuxhint.com/vim-copy-text-system-clipboard/](https://linuxhint.com/vim-copy-text-system-clipboard/)
|
|
- [https://vim.fandom.com/wiki/Accessing_the_system_clipboard](https://vim.fandom.com/wiki/Accessing_the_system_clipboard)
|