Tipy pro editor Vim a GVim

Když si pohrávám s PC potřebuju pracovat s textovými soubory všeho druhu (*.cc, *.py, *.html, *.txt, *.tex, *.conf, ...) a na to podřebuju pořádný textový editor. V tomto blogu chci zvěčnit svoje nastavení perfektního editoru, který bych doporučil převážně programátorům - GVim. Tento editor se nastavuje pomocí jediného konfiguračního souboru .gvimrc (.vimrc). V článku najdete ár tipů, jak si v něm programování opravdu zpříjemnit. Blog bude v budoucnu postupně obměňován a aktualizován podle toho, jestli přijdu na něco zajímavýho...

Pokud chcete nové soubory otevírat v dalším panelu Vimu místo nové insatnce, použijte pro spuštění následující příkaz

gvim --remote-tab-silent soubor.cc

Užitečných věcí je, když editor ukazuje seznam funkcí, tříd, metod a podobně, které se nachází v editovaném souboru. Umožňuje to rychlejší orientaci v souboru. Pro Vim existuje plugin taglist, který ke své činnosti potřebuje program ctags. Tento program je běžnou součástí linuxových distribucí, do Windows se musí doinstalovat. Poté s níže uvedenou konfigurací stačí stisknout klávesu F11 a seznam funkcí se otevře v bočním okně. Vypnout jej lze stejnou klávesou. Vypadá to takto:

Gvim Vim ctags

Konfigurace GVimu


"Sets statusbar format
set statusline=%F%m%r%h%w\ [FORMAT\ %{&ff}]\ [ASCII\ \%03.3b/\%02.2B]\ [POS\ %l/%L,%v](%p%%)
set laststatus=2

"Color scheme
colors koehler
syntax on

"Hightlight brackets
set showmatch

set listchars=tab:..,trail:$,eol:$

"minimum number of lines behind and after cursor
set scrolloff=5

" Save history when exiting vim
set viminfo='50,\"500
set history=500 

" global searching s/one/two/g by default
set gdefault

" Show line numbers
set number
"set numberwidth=4

" Set wrapping line wrapping after word
set lbr! 

" Set wrapping sign on new line
set showbreak=+

" Display part of line instead of @
set display=lastline 

" Automatic C-style indentation, tab size 8 and shift width / indentation 4.
" == to indent current line, = to indent selection
set cindent
set autoindent
set smarttab
set tabstop=4
set shiftwidth=4

" Sets ending of lines [dos|unix]
"set fileformat=unix

" convert tabulators to spaces
set expandtab

" Allows deleting of previously entered characters in insert mode using 
" backspace
set backspace=indent,eol,start
 
" Don't inherit any vi craziness
set nocompatible 

" Number of linens of tabulators
set showtabline=2
nmap <C-t> :tabnew<cr>
imap <C-t> <ESC>:tabnew<cr>

" Hides toolbar (SHIFT+F1 SHOWS IT)
set guioptions-=T
"set guioptions+=m
let g:toggleTool = 0
map <silent> <S-F1> :if g:toggleTool == 1<CR>:set guioptions-=T<CR>:set guioptions-=m<CR>:let g:toggleTool = 0<CR>:else<CR>:set guioptions+=T<CR>:set guioptions+=m<CR>:let g:toggleTool = 1<CR>:endif<CR>

" Set font
set gfn=DejaVu\ Sans\ Mono\ 9

" Change directory of current file
:lcd %:p:h
:autocmd BufEnter * lcd %:p:h

" Highlighting of lines longer than 80 chars
hi LineTooLong cterm=bold ctermbg=red guibg=red
match LineTooLong /\%>80v.\+/
autocmd BufWinEnter,Syntax * exe "match LineTooLong /\\%>80v.\\+/"

" Label of tab is filename without path
set guitablabel=%t

" Bookmarks as menu item
" plugin bookmarks.vim, CTRL+RIGHT BUTTON

" Automatic completition
" plugin autocomplpop.vim

" Visual markers
" plugin visualmark.vim
highlight SignColor ctermfg=white ctermbg=blue guifg=white guibg=RoyalBlue3

" Highlight all searched item, useful for quickly locating things with *
set hlsearch

" Incremental search, like VS CTRL+I
set incsearch

" Change highlight bg color
hi search ctermbg=5

" No match case
set ignorecase

" Smart ignore case
:set smartcase

" Scrolling with mouse wheel
map <MouseDown> <C-Y><C-Y><C-Y>
map <MouseUp> <C-E><C-E><C-E>
map <MiddleMouse> <Nop>
set mouse=a


" Setting up project plugin
let g:proj_run1='tabnew %f'
let g:proj_flags='gc'
let g:proj_window_width=35


" Setting up taglist plugin
" F11 - taglist window
map <F11> :TlistToggle<cr>
vmap <F11> <esc>:TlistToggle<cr>
imap <F11> <esc>:TlistToggle<cr>
map <C-F11> :TlistAddFilesRecursive ~/projekty/clanky<cr>

" Seve formatting when pasting
set paste

Potřebné pluginy jsou k dispozici ke stažení tady pluginy pro gvim a vim.

V editoru Vim programuju už několik let. Sice trvalo chvíli než jsem si zvykl na "svérázné" ovládání, nedám na něj dopustit. Jeho výhodami je, že se dá provozovat na mnoha platformách a patří k základu na většině linuxových distribucích, což se hodí když po pokusech skončím v příkazové řadce (konzoli) linuxu a mám to dávat dokupy. Pokud se vám podaří jej přizpůsobit, stačí konfigurák rozkopírovat na počítače, které používáte a máte všude stejné ovládání přizpůsobené přesně podle sebe.

K ovládání se určitě vyplatí přečíst si tutoriál, který je po instalaci v adresáři Vimu. Pak doporučuju poktračovat příručkou od pana Satrapy, příručka je aktualizovana pro sedmou verzi Vimu, ve které je podpora kontroly češtiny a mnoho dalších věcí. Na netu jsou k nalezení spousty dalších tipů k nastavení a tak stačí jenom hledat.

Vyšlo 08.09.2008, v blogu: 0 1 2 3 4 5 6 7 8

Děkuji, že jste se rozhodl(a) přečíst tento článek. Budu rád i za komentář. Pokud Vás tento článek zaujal a rádi byste jej doporučili ostatním, podpořte mně prosím tím, že věnujete minutku svého času a uděláte mi reklamu na linkuj.cz, vybrali.sme.sk či jagg.cz. Přeji příjemné čtení

Poslední články

Diskuse k blogu

Vim 
Díky za něj. V editoru VIM pracuju již nějaký ten pátek, ale i tak jsem se pár velmi šikovných věcí dozvěděl. 
Vložil: pepa (08.09.2008 14:12:09)
Češtin 
Editor je to dobrý, ale pokud v něm autor psal tento článek, tak by si měl zapnout kontrolu pravopisu! :-P 
Vložil: Ex (16.12.2009 21:07:15)
Přidání příspěvku
©PC-guru.cz 2000-2008 | Optimalizováno pro 1024*768