Vim¶
Neovim¶
Install latest version from: https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.deb
Install AstroVim: https://github.com/AstroNvim/AstroNvim
Nerd Fonts¶
DWL:
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v2.3.3/3270.zip
mkdir ~/.local/share/fonts
unzip 3270.zip -d ~/.local/share/fonts
fc-cache -f -v
Install:
mv ~/.config/nvim ~/.config/nvim.bak
mv ~/.local/share/nvim ~/.local/share/nvim.bak
git clone --depth 1 https://github.com/AstroNvim/AstroNvim ~/.config/nvim
Config:
Install LSP
Enter :LspInstall followed by the name of the server you want to install
Example: :LspInstall pyright
Install language parser
Enter :TSInstall followed by the name of the language you want to install
Example: :TSInstall python
Update AstroNvim
Run :AstroUpdate to get the latest updates from the repository
Paste X -> Vim¶
Set in ~/.vimrc:
set mouse=v
or
set mouse=""
Indent¶
in order to auto indent a section (a selection of rows for example) we can use:
- >
Indent more
- <
Indent less
- =
Autoindent
- :set sw=2
Change indent to 2 spaces
Re-indent a whole file¶
ggG=
Wich means: go to the top, select to the end of file, auto indent.
vimrc¶
.vimrc:
syntax enable
filetype plugin indent on
set background=dark
set ofu=syntaxcomplete#Complete
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
augroup vimrcEx
au!
" For all text files set 'textwidth' to 80 characters.
autocmd FileType text setlocal textwidth=80
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
augroup END
" Set paste macro
map <F2> :set paste! <CR>:set paste?<CR>
imap <F2> <C-O> :set paste<CR>
map <F3> :set number! <CR>:set number?<CR>
imap <F3> <C-O> <CR> <C-O>:set number?<CR>
' Save macro
map <Esc><Esc> :update<CR>
" Ruby
autocmd FileType ruby setlocal shiftwidth=2 tabstop=2
" Arduino
autocmd! BufNewFile,BufRead *.ino setlocal ft=arduino
" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_MayCompleteDot = 1
let OmniCpp_MayCompleteArrow = 1
let OmniCpp_MayCompleteScope = 1
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview
Auto indent¶
In order to set C-style auto indenting with a 4 spaces TABs:
" Smartindent with 4 spaces
set cindent
set tabstop=4
set shiftwidth=4
set expandtab
To turn all tabs in spaces: :%retab
Fast set-up: set expandtab ts=4 sw=4 ai
In previous .vimrc
there was filetype plugin indent on
wich defins indent as well on a file type basis (but no TAB width).
Movements¶
H move to top of screen
M move to middle of screen
L move to bottom of screen
Scroll page¶
- SHIFT g
jumps to end of file.
- gg
jumps to the beginning of file.
- ``
jumps to previous location
Page movements¶
- CTR d
Scrolls down half page of text
- CTR b
Scrolls up an entire page
- CTR e
Scrolls down a single line
- CTR y
Scrolls up a single line
In page movements¶
- z ENTER
Actual line goes on top
- or zz
Actual line goes to middle of the screen
- z-
Actual line to bottom of the screen
Marks¶
ma set mark a at current cursor location
‘a jump to line of mark a (first non-blank character in line)
`a jump to position (line and column) of mark a
d’a delete from current line to line of mark a
d`a delete from current cursor position to position of mark a
c’a change text from current line to line of mark a
y`a yank text to unnamed buffer from cursor to position of mark a
:marks list all the current marks
:marks aB list marks a, B
Registers¶
Previous yanked / deleted buffers are available with : :registers
. This can be re-used with es:
"2p
Paste not last (1) but previous buffer.
It is possible to create custom bufferrs: after making a selection: "ayy
copies the content of a line and assign it to the buffere "a
.
C++ formatting¶
apt-get install astyle
:%!astyle (inside vim)
in .vimrc:
map <F4> :%!astyle<CR>
Inside / around¶
- ci”
si posiziona dentro un double quotes
- ca”
cambia attorno ai double quotes
Funziona con w , tags t , braces {, brackets [, …
Increment¶
- [CTR]a
su un numero
Macro¶
- qa
registra una macro in a
- @a
riesegue quella macro
Spell Check¶
https://www.linux.com/learn/tutorials/357267:using-spell-checking-in-vim
:set spell spelllang=it
:set nospell
Commands:
]s [s move
z= suggest
zg add
Powerline¶
Debian way¶
installare:
apt-get install vim-nox powerline python3-powerline fonts-powerline
.tmux.conf
source "/usr/share/powerline/bindings/tmux/powerline.conf"
.bashrc
# powerline
powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
. /usr/share/powerline/bindings/bash/powerline.sh
.vimrc:
Per Vim non ci sono le estensioni!
Bisogna installare tutto manualmente :(
~/.ipython/profile_default/ipython_config.py
c = get_config()
c.InteractiveShellApp.extensions = [
'powerline.bindings.ipython.post_0_11'
]
Manual install¶
Install python mode:
git clone --depth 1 https://github.com/klen/python-mode.git
cp -R python-mode/* ~/.vim
Then rebuild helptags in vim:
:helptags ~/.vim/doc/
Installare powerline per pip3 / python 3 e controllare il path:
apt-get install python3-pip
pip3 install powerline-status
In .vimrc:
" powerline
set rtp+=/usr/local/lib/python3.5/dist-packages/powerline/bindings/vim/
set laststatus=2
set t_Co=256
let g:Powerline_symbols = 'fancy'
" flake skip errors reports
let g:pymode_lint_ignore="E221,E251"
Fonts per powerline, l’install fa fatto per ogni utente:
git clone --depth 1 https://github.com/powerline/fonts
fonts/install.sh
oppure:
apt-get install fonts-powerline
Serve vim con il supporto di python3, tipicamente vim-nox:
apt-get install vim-nox
vim --version | grep +python
.vimrc
"ctags
set tags=tags;
map <M-Right> <C-]>
map <M-Left> <C-T>
set mouse ="a"
syntax enable
filetype plugin on
set nocp
set ignorecase
set smartcase
set background=dark
set ofu=syntaxcomplete#Complete
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
filetype plugin indent on
"" Smartindent with 4 spaces
set cindent
set tabstop=4
set shiftwidth=4
set expandtab
augroup vimrcEx
au!
" For all text files set 'textwidth' to 80 characters.
autocmd FileType text setlocal textwidth=80
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
augroup END
let mapleader = "\\"
" Set paste macro
map <F2> :set paste! <CR>:set paste?<CR>
imap <F2> <C-O> :set paste<CR>
map <F3> :set number! <CR>:set number?<CR>
imap <F3> <C-O> <CR> <C-O>:set number?<CR>
map <F4> :%!astyle<CR>
"Save macro
map <F5> :update <CR>
map <F6> :update <CR>
map <Leader>' :update <CR>
" Ruby
autocmd FileType ruby setlocal shiftwidth=2 tabstop=2
" Arduino
autocmd! BufNewFile,BufRead *.ino setlocal ft=arduino
" C Stuff
" prérequis tags
" configure tags - add additional tags here or comment out not-used ones
"set tags+=~/.vim/tags/stl
" build tags of your own project with CTRL+F12
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
noremap <F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<cr>
inoremap <F12> <Esc>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<cr>
" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_MayCompleteDot = 1
let OmniCpp_MayCompleteArrow = 1
let OmniCpp_MayCompleteScope = 1
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview
" powerline
set rtp+=/usr/local/lib/python3.5/dist-packages/powerline/bindings/vim/
set laststatus=2
set t_Co=256
let g:Powerline_symbols = 'fancy'
" pymode
let g:pymode_options = 1
let g:pymode_run = 1
let g:pymode_run_bind = '<leader>r'
.tmux.conf
source "/usr/local/lib/python3.5/dist-packages/powerline/bindings/tmux/powerline.conf"
.bashrc
# powerline
powerline-daemon -q
POWERLINE_BASH_CONTINUATION=1
POWERLINE_BASH_SELECT=1
. /usr/local/lib/python3.5/dist-packages/powerline/bindings/bash/powerline.sh
Note
In genere bisogna far ripartire il server grafico.
Windows¶
- ctrl-w up arrow
move cursor up a window
- ctrl-w ctrl-w
switch between windows
- ctrl-w ctrl _
Maximize current window
- :split filename
split window and load another file vsplit for vertical
- [CTRL]w[SHIFT]s
split orizzontal current buffer
- :only
keep only this window open
- CTRL-w CTRL-o
select actual window and close others
<C-w>n - :new horizontal split (editing a new empty buffer)
<C-w>s - :split window horizontally (editing current buffer)
<C-w>v - :vsplit window vertically (editing current buffer)
<C-w>c - :close window
<C-w>o - close all windows, leaving :only the current window open
<C-w>w - go to next window
<C-w>p - go to previous window
<C-w><Up> - go to window above
<C-w><Down> - go to window below
<C-w><Left> - go to window on left
<C-w><Right> - go to window on right
Tabs¶
- :tabnew
new tab
- :tabedit
new tab wih a file
Navigating between tabs can be done with the mouse, or with commands
:tabn - next tab
:tabp - previous tab
:tabc - close current tab
:tabo - close all other tabs leaving ONLY the current tab open
You can also navigate to next/previous tabs using the <C-PageDown> and <C-PageUp> keys.
Folding¶
- z-M
close all
- z-R
open all
- za
Toggle
- zo
Open
- zc
Close
- zj zk
move to next prev
Setup folding: :set foldmethod=syntax
Autopep¶
- F8
Autopep, syntax for python
Ctags¶
- ctags -R *
Gereare i tags
- Ctrl-]
Jump to the tag underneath the cursor
- Ctrl-t
Jump back up in the tag stack
Neovim¶
Disable mouse for paste:
init.lua
vim.opt.mouse = ""
Comments¶
For fast one / multiple line comment use: http://www.vim.org/scripts/script.php?script_id=1528
Comment one or mole lines (visual)
Un-Comment one or mole lines (visual)