1.8. Vim - Desktop¶
Vim is a contraction of Vi IMproved.
Vim is command-line driven.
Vim is highly customisable with many plugins.
1.8.1. VIM Environment¶
How to use VIM
(Save session)
:SaveSessionsession saved to ~/Session.vimMove left
ctrl+hMove down
ctrl+jMove up
ctrl+kMove right
ctrl+lClose file
:qorctrl+cMove file
ctrl+xTo intent text:
v, highlight text, >
NERDTree
Bookmark folder
:Bookmark(Highlight the folder in NERDTree)(Open file
owill overrite any previous open file, opens to the left of open files)Open file over current file
select window and left click on fileHorizontal split
sopens to the left of open filesVertical split
iopens to the left and to the bottom on open filesRemove bookmark
cursor over bookmark,D, deletes bookmarkMake directory current
C
To reach a bookmark: cursor over bookmark and return to enter, or maybe second time, double click bookmark
Startup process
tmux
ctrl + a ctrl + r
Shutdown process
alt + x
1.8.3. Basic Vim¶
Insert text mode
iSave a file
:wLeave any mode
EscTo resource vimrc, set this in .bashrc:
export MYVIMRC="/home/andrew/.vimrc"
To resource (with tab completion):
:so $MYVIMRC
1.8.4. .vimrc¶
Start with a basic .vimrc file:
"""""""""
" GENERAL
"""""""""
set t_ut= " background color erase
set number " show line numbers
set textwidth=80 " line length
set colorcolumn=+1 " show colour colum at line length
set tabstop=4 " tabs that appear 4 spaces wide
set clipboard=unnamed " auto yank to clipboard
""""""""
" COLORS
""""""""
syntax on " enable syntax highlighting
filetype plugin indent on " autodetect filetypes
set t_Co=256 " 256 colours in vim
""""""""""""
" NAVIGATION
""""""""""""
set scrolloff=0 " put cursor right to the bottom or top when scrolling
set ttyfast " fast terminal update
1.8.5. xoria256¶
This file is located in
./vim/colorsand is called by .vimrcIn my opinion the colours are quite good
This operates with (e.g.) all C++ files
" Vim color file
"
" Name: xoria256.vim
" Version: 1.6
" Maintainer: Dmitriy Y. Zotikov (xio) <xio@ungrund.org>
"
" Should work in recent 256 color terminals. 88-color terms like urxvt are
" NOT supported.
"
" Don't forget to install 'ncurses-term' and set TERM to xterm-256color or
" similar value.
"
" Color numbers (0-255) see:
" http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
"
" For a specific filetype highlighting rules issue :syntax list when a file of
" that type is opened.
"
" TODO: link colours instead of setting values explicitly
" Initialization {{{
if &t_Co != 256 && ! has("gui_running")
echoerr "Please use GUI or a 256-color terminal (which sets t_Co=256)."
finish
endif
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "xoria256"
"}}}
" Colours {{{1
"" General {{{2
hi Normal ctermfg=252 guifg=#d0d0d0 ctermbg=234 guibg=#1c1c1c cterm=none gui=none
hi Cursor ctermbg=214 guibg=#ffaf00
hi CursorColumn ctermbg=238 guibg=#444444
hi CursorLine ctermbg=237 guibg=#3a3a3a cterm=none gui=none
hi Error ctermfg=15 guifg=#ffffff ctermbg=1 guibg=#800000
hi ErrorMsg ctermfg=15 guifg=#ffffff ctermbg=1 guibg=#800000
hi FoldColumn ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
hi Folded ctermfg=255 guifg=#eeeeee ctermbg=60 guibg=#5f5f87
hi IncSearch ctermfg=0 guifg=#000000 ctermbg=223 guibg=#ffdfaf cterm=none gui=none
hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
hi MatchParen ctermfg=188 guifg=#dfdfdf ctermbg=68 guibg=#5f87df cterm=bold gui=bold
" TODO
" hi MoreMsg
hi NonText ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 cterm=bold gui=bold
hi Pmenu ctermfg=0 guifg=#000000 ctermbg=250 guibg=#bcbcbc
hi PmenuSel ctermfg=255 guifg=#eeeeee ctermbg=243 guibg=#767676
hi PmenuSbar ctermbg=252 guibg=#d0d0d0
hi PmenuThumb ctermfg=243 guifg=#767676
hi Search ctermfg=0 guifg=#000000 ctermbg=149 guibg=#afdf5f
hi SignColumn ctermfg=248 guifg=#a8a8a8
hi SpecialKey ctermfg=77 guifg=#5fdf5f
" hi SpellBad ctermfg=160 guifg=fg ctermbg=bg cterm=underline guisp=#df0000
hi SpellBad ctermbg=238 guisp=#df0000
hi SpellCap ctermfg=189 guifg=#dfdfff ctermbg=bg guibg=bg cterm=underline gui=underline
hi SpellRare ctermfg=168 guifg=#df5f87 ctermbg=bg guibg=bg cterm=underline gui=underline
hi SpellLocal ctermfg=98 guifg=#875fdf ctermbg=bg guibg=bg cterm=underline gui=underline
hi StatusLine ctermfg=15 guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none
hi TabLine ctermfg=fg guifg=fg ctermbg=242 guibg=#666666 cterm=none gui=none
hi TabLineFill ctermfg=fg guifg=fg ctermbg=237 guibg=#3a3a3a cterm=none gui=none
" FIXME
hi Title ctermfg=225 guifg=#ffdfff
hi Todo ctermfg=0 guifg=#000000 ctermbg=184 guibg=#dfdf00
hi Underlined ctermfg=39 guifg=#00afff cterm=underline gui=underline
hi VertSplit ctermfg=237 guifg=#3a3a3a ctermbg=237 guibg=#3a3a3a cterm=none gui=none
" hi VIsualNOS ctermfg=24 guifg=#005f87 ctermbg=153 guibg=#afdfff cterm=none gui=none
" hi Visual ctermfg=24 guifg=#005f87 ctermbg=153 guibg=#afdfff
hi Visual ctermfg=255 guifg=#eeeeee ctermbg=96 guibg=#875f87
" hi Visual ctermfg=255 guifg=#eeeeee ctermbg=24 guibg=#005f87
hi VisualNOS ctermfg=255 guifg=#eeeeee ctermbg=60 guibg=#5f5f87
hi WildMenu ctermfg=0 guifg=#000000 ctermbg=150 guibg=#afdf87 cterm=bold gui=bold
"" Syntax highlighting {{{2
hi Comment ctermfg=244 guifg=#808080
hi Constant ctermfg=229 guifg=#ffffaf
hi Identifier ctermfg=182 guifg=#dfafdf cterm=none
hi Ignore ctermfg=238 guifg=#444444
hi Number ctermfg=180 guifg=#dfaf87
hi PreProc ctermfg=150 guifg=#afdf87
hi Special ctermfg=174 guifg=#df8787
hi Statement ctermfg=110 guifg=#87afdf cterm=none gui=none
hi Type ctermfg=146 guifg=#afafdf cterm=none gui=none
"" Special {{{2
""" .diff {{{3
hi diffAdded ctermfg=150 guifg=#afdf87
hi diffRemoved ctermfg=174 guifg=#df8787
""" vimdiff {{{3
hi diffAdd ctermfg=bg guifg=bg ctermbg=151 guibg=#afdfaf
"hi diffDelete ctermfg=bg guifg=bg ctermbg=186 guibg=#dfdf87 cterm=none gui=none
hi diffDelete ctermfg=bg guifg=bg ctermbg=246 guibg=#949494 cterm=none gui=none
hi diffChange ctermfg=bg guifg=bg ctermbg=181 guibg=#dfafaf
hi diffText ctermfg=bg guifg=bg ctermbg=174 guibg=#df8787 cterm=none gui=none
""" HTML {{{3
" hi htmlTag ctermfg=146 guifg=#afafdf
" hi htmlEndTag ctermfg=146 guifg=#afafdf
hi htmlTag ctermfg=244
hi htmlEndTag ctermfg=244
hi htmlArg ctermfg=182 guifg=#dfafdf
hi htmlValue ctermfg=187 guifg=#dfdfaf
hi htmlTitle ctermfg=254 ctermbg=95
" hi htmlArg ctermfg=146
" hi htmlTagName ctermfg=146
" hi htmlString ctermfg=187
""" XML {{{3
hi link xmlTagName Statement
" hi link xmlTag Comment
" hi link xmlEndTag Statement
hi link xmlTag xmlTagName
hi link xmlEndTag xmlTag
hi link xmlAttrib Identifier
""" django {{{3
hi djangoVarBlock ctermfg=180 guifg=#dfaf87
hi djangoTagBlock ctermfg=150 guifg=#afdf87
hi djangoStatement ctermfg=146 guifg=#afafdf
hi djangoFilter ctermfg=174 guifg=#df8787
""" python {{{3
hi pythonExceptions ctermfg=174
""" NERDTree {{{3
hi Directory ctermfg=110 guifg=#87afdf
hi treeCWD ctermfg=180 guifg=#dfaf87
hi treeClosable ctermfg=174 guifg=#df8787
hi treeOpenable ctermfg=150 guifg=#afdf87
hi treePart ctermfg=244 guifg=#808080
hi treeDirSlash ctermfg=244 guifg=#808080
hi treeLink ctermfg=182 guifg=#dfafdf
""" rst #{{{3
hi link rstEmphasis Number
""" VimDebug {{{3
" FIXME
" you may want to set SignColumn highlight in your .vimrc
" :help sign
" :help SignColumn
" hi currentLine term=reverse cterm=reverse gui=reverse
" hi breakPoint term=NONE cterm=NONE gui=NONE
" hi empty term=NONE cterm=NONE gui=NONE
" sign define currentLine linehl=currentLine
" sign define breakPoint linehl=breakPoint text=>>
" sign define both linehl=currentLine text=>>
" sign define empty linehl=empty
""" vimHelp {{{3
hi link helpExample Number
hi link helpNumber String
hi helpURL ctermfg=110 guifg=#87afdf cterm=underline gui=underline
hi link helpHyperTextEntry helpURL
Update .vimrc
"""""""
" XORIA
"""""""
colorscheme xoria256 " Xoria
highlight Type ctermfg=182 guifg=#dfafdf " Tweak Xoria
hi Normal ctermfg=15 guifg=#ffffff ctermbg=232 guibg=#080808 cterm=none gui=none " Tweak Xoria
highlight ColorColumn ctermbg=233 guibg=#121212 " Colorcoloum color is dark grey not red
1.8.6. Vundle¶
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
put this in .vimrc
""""""""
" VUNDLE
""""""""
set nocompatible " be iMproved, required
filetype off " required
set rtp+=~/.vim/bundle/Vundle.vim " set the runtime path to include Vundle and initialize
call vundle#begin()
Plugin 'VundleVim/Vundle.vim' " let Vundle manage Vundle, required
call vundle#end() " All of your Plugins must be added before the following line
Load vim, run plugin installer and quit the file it shows
vim
:PluginInstall
:q
1.8.7. OpenFOAM dictionaries¶
call vundle#begin() " Start Vundle
Plugin 'lervag/vim-foam' " OpenFOAM dictionary highlighting
call vundle#end() " All of your Plugins must be added before the following line
1.8.8. NERDTree¶
Plugin 'scrooloose/nerdtree' " NERDTree
NERDTree commands:
:NERDTree - starts a new nerd tree window
:NERDTreeClose - closes NerdTree
From within NERDTree:
o - opens a file or directory
go - opens file but keeps you in NERDTree
x - closes a directory
C - change root to current directory
? - Toggle help
Split screen:
Ctrl+ww cycle though all windows
Ctrl+wh takes you left a window
Ctrl+wj takes you down a window
Ctrl+wk takes you up a window
Ctrl+wl takes you right a window
i - open file with split horizontal pane
s - open file with split vertical pane
1.8.9. Python docstring colours¶
Create a file:
~/.vim/after/syntax/python.vim
Add this to file:
syn region Comment start=/"""/ end=/"""/
1.8.10. VIM Sessions¶
To enable saving of sessions
Plugin 'xolox/vim-misc' " Required for Vim session
Plugin 'xolox/vim-session' " Vim Session
1.8.12. VIMRC¶
""""""""
" VUNDLE
""""""""
set nocompatible " be iMproved, required
filetype off " required
set rtp+=~/.vim/bundle/Vundle.vim " set the runtime path to include Vundle and initialize
call vundle#begin() " Start Vundle
Plugin 'VundleVim/Vundle.vim' " let Vundle manage Vundle, required
Plugin 'lervag/vim-foam' " OpenFOAM dictionary highlighting
Plugin 'scrooloose/nerdtree' " NERDTree
Plugin 'xolox/vim-misc' " Required for Vim session
Plugin 'xolox/vim-session' " Vim Session
call vundle#end() " All of your Plugins must be added before the following line
"""""""""
" GENERAL
"""""""""
set t_ut= " background color erase
set number " show line numbers
set textwidth=80 " line length
set colorcolumn=+1 " show colour colum at line length
set tabstop=4 " tabs that appear 4 spaces wide
set clipboard=unnamed " auto yank to clipboard
""""""""
" COLORS
""""""""
syntax on " enable syntax highlighting
filetype plugin indent on " autodetect filetypes
set t_Co=256 " 256 colours in vim
""""""""""""
" NAVIGATION
""""""""""""
set scrolloff=0 " put cursor right to the bottom or top when scrolling
set ttyfast " fast terminal update
""""""""""
" NERDTREE
""""""""""
set mouse=a " NERDTree mouse
let g:NERDTreeMouseMode=3 " NERDTree mouse - single click opens node
let NERDTreeShowBookmarks=1 " NERDTree bookmarks
"""""""
" XORIA
"""""""
colorscheme xoria256 " Xoria
highlight Type ctermfg=182 guifg=#dfafdf " Tweak Xoria
hi Normal ctermfg=15 guifg=#ffffff ctermbg=232 guibg=#080808 cterm=none gui=none " Tweak Xoria
highlight ColorColumn ctermbg=233 guibg=#121212 " Colorcoloum color is dark grey not red
""""""""""""""
" VIM SESSIONS
""""""""""""""
:let g:session_directory = "~"
:let g:session_autosave = 'no'
:let g:session_default_name = 'Session'
:let g:session_autoload = 'no'
"""""""
" MOUSE
"""""""
set mouse+=a
if &term =~ '^screen'
" tmux knows the extended mouse mode
set ttymouse=xterm2
endif
"""""""""""""
" KEY PRESSES
"""""""""""""
"moving between panes:
nnoremap <C-J> <C-W><C-J>
nnoremap <C-K> <C-W><C-K>
nnoremap <C-L> <C-W><C-L>
nnoremap <C-H> <C-W><C-H>
"close pane
nnoremap <C-C> <C-W><C-C>
"move panes
nnoremap <C-X> <C-W><C-X>