Table of Contents

Editor VIM

Úplným začátečník s linuxem doporučuji používat jako editor mcedit, který je součástí balíčku mc (midning commander - obdoba starého známého norton commander pro MSDOS) a lze je též vyvolat klávesou F4 po najetí na soubor, který chcete editovat. mcedit nainstalujete přikazen aptitude install mc

Pokud to s Linuxem myslíte vážnějí, naučte se program Vim. Návodů je na internetu celá řada, zde popsané typy jsou užitečné spíše mírně pokročilým, kteří si již nějaký ten základní návod alespoň jednou přečetli. Můžete též začít tím, že se podíváte na náš filmeček.

Plnou verzi editoru Vim nainstalujete příkazem

aptitude install vim

Defaultně je přítomna jen verze základní, která neumí například zvýraznění syntaxe.

Dalším krokem je vytvoření si vlastního konfiguračního souboru. Tím docílíte, že po spuštění bude vim nastaven jak, je vám pohodlné. (např. se syntax highliting)

Příklad konfiguračního souboru:

" řádek s poznámkou začínám uvozovkou
" po startu je zapnuto zvýrazňování syntaxe
syntax on 
" pokud mám v normal režimu českou klávesnici, může být zadávání čísel nebo : značně nepohodlné
set langmap234567890:
"\":,-/,_?,ů:  - tohle je ale už zavádějící
" edituji-li přímo webové stránky, může být dobré z bezpečnostních důvodů vypnout swapovací soubory, které by mohly odkrýt zdrojový kód
"set noswapfile 
" chci li něco pástnout přepnu se do paste režimu, abych tím vypnul automatické odsazování
set pastetoggle=<F11>
" vlevo uvidíme čísla řádek - vypnout se to dá napsáním :set nonumber
set number
 
" uložit soubor bude možné i zmáčknutím klávesy F2, jak jsme zvyklí z editoru mcedit
map <F2> :w<CR>
imap <F2> <Esc>:w<CR>i
 
" vše níže je užitečné, jen pokud chcete provádět zaheslování textových souborů pomocí :X
 
" --------------------------------------------------------------------------------------------
" soubory s koncovkou zip mohou být textové soubory pro vim zašifrovane pomocí blowfish
" více info  šifrování souborů  :h :X  (informace na webu jsou zastaralé)
" Koncovka zip je vybrána jako kamufláž, může být libovolná jiná.
 
function! HeadlineDelimiterExpression(lnum)
    if a:lnum == 1
        return ">1"
    endif
    return (getline(a:lnum)=~"^\\s*==.*==\\s*$") ? ">1" : "=" 
endfunction
 
set cm=blowfish
autocmd BufReadPost,FileReadPost   *.{zip} set viminfo=
autocmd BufReadPost,FileReadPost   *.{zip} set foldexpr=HeadlineDelimiterExpression(v:lnum)
autocmd BufReadPost,FileReadPost   *.{zip} set foldlevel=0
autocmd BufReadPost,FileReadPost   *.{zip} set foldcolumn=0
autocmd BufReadPost,FileReadPost   *.{zip} set foldmethod=expr
autocmd BufReadPost,FileReadPost   *.{zip} set foldtext=getline(v:foldstart)
autocmd BufReadPost,FileReadPost   *.{zip} nnoremap <silent><space> :exe 'silent! normal! za'.(foldlevel('.')?'':'l')<CR>
autocmd BufReadPost,FileReadPost   *.{zip} nnoremap <silent>q :q<CR>
autocmd BufReadPost,FileReadPost   *.{zip} highlight Folded ctermbg=red ctermfg=black
autocmd BufReadPost,FileReadPost   *.{zip} set updatetime=300000
" Když nikdo dlouho nehejbe kurzorem, zavřu foldy a  vim ukončíme
autocmd CursorHold                 *.{zip} normal zm
autocmd CursorHold                 *.{zip} redraw
autocmd CursorHold                 *.{zip} quit
" Pokud dám :q , před odchodem z vimu, zavřeme všechny foldy
autocmd VimLeavePre                *.{bfa,fish} normal zm
autocmd VimLeavePre                *.{bfa,fish} redraw

Otevírání více souborů

První nevýhoda editoru mcedit, která může být dost dobře důvodem, proč přejít na vim, je to, že mcedit neumožňuje mít ovtevřených více souborů zároveň.

V editoru vim otevřete více souborů v různých tabech (pane- proto p) příkazem.

vim -p index.html index2.html readme.txt

Příkaz otevře 3 soubory, mezi kterými můžeme přecházet zadáním gt nebo gT v normálním režimu. Další soubor můžete otevřít pomocí

:tabnew nazev_soboru.txt

Pokud chceme zavřít další tab, použijeme

:bdelete

což je buffer delete nebo

:bdelete!

pokud nechceme výsledek uložit. Tab je možné zavřít i pomocí :q, ale je to nebezpečné, protože soubor stále zůstane v paměti. (není pak možné jej otevřít pomocí jiného vim. Navíc pokud jsme zavřeli tab, ve kterém jsou neuložené změny pomocí :q! , tak vim nejde pak vůbec ukončit, jedině příkazem :qall!)

Pokud chcete porovnávat dva podobné soubory, použijte

vimdiff index.html index2.html

Soubory se v tomto případě otevřou vedle sebe a rozdíly budou zvýrazněny. Přepínat se můžete mezi jednotlivými sloupečky pomocí ctrw+w

Ukládání a vypínání editoru Vim

Pohyb

Editace

mazání a vizuální režim (copy and paste)

mazání v normal režimu = vkládání do zásobníku

Folds

foldy - záhyby - je způsob jak můžeme zpřehlednit soubor tím, že umožním skrýt jistou jeho část.

Rozevřený fold

Část níže se skryje
{{{   - tohle značí začátek 3 závorky za sebou
tohle je část, kterou pak mohu skrýt, aby vše bylo přehlednější
}}}   -  tohle značí konec foldu - tři závorky

zavřený fold

Část níže se skryje
+--  4 řádků:- tohle značí začátek foldu----------------------------------

Hledání a případná náhrada

Pokud chci něco najít, napíši lomítko / a slovo, které hledám Enter. Hledané slovo pak bude zvýrazněno a já mohu procházet jednotlivými výskyty mačkáním n- n jako next N - velké N jako opak next tedy předchozí

příklady nahrazování:

:12,31s/\$oper\[/                             /g 
:%s/,\(2720[0-9]\{5\}\)\/\(.\{8\}\)/register => \1:\2@mujtel\/00420\1/gc
:1,3s/\([0-9]\{9\}\)/insert into VTAs set cislo='\1';/g
:10,20s/.*=> \([0-9]\{9\}\):.*/insert into vd_cisla set id='00420\1'/   # nebo % na začátku
:%s/ *$//gc    # smaže prázdné konce řádků v celém souboru - může vzniknout nechtěně, když provedeme paste
:%s/^\([0-9]\{9\}\)$/insert into VTAs set cislo='\1';/g # na každém řádku najdu devítimístné číslo, udělám z něj sql dotaz
:%s/^\([0-9]\{12\}\) *\([^ ]*\)/insert into ukr_acc set number="\1",pass="\2";/gc # vloží jméno a heslo do databáze
:26,40s/^| \([0-9]\{6\}\).*\([0-9]\{9\}\)$/update `lines` set emergency_callerid='00420\2' where id=\1 limit 2;/gc

hinty % - značí, že se provádí na celém souboru, 1,3 - značí, že se provádí od řádky 1 do řádky 3,
$/^ - konec/začátek řádku
g - provádíme globálně tedy vícekrát ne jen jednou
c - confirm - budeme dotázání- zda-li si záměnu přejeme provést.

Kontrola pravopisu - spell check

Instalace českého slovníku:

cd /usr/share/vim/vim71/spell/
wget ftp://ftp.vim.org/pub/vim/runtime/spell/cs.utf-8.spl

Zapínání, vypínání, volba jazyka

:set spell spelllang=cs
:set spell spelllang=en
:set nospell
:syntax off  # - zvýrazňování syntaxe může být někde nepřehledné, když je používáno dohromady s kontrolou pravopisu
:syntax on

Nastavení si můžete uložit do svého konfiguráku /etc/vim/vimrc.local (tam se ale píše bez dvojteček na začátku) já tam mám též pozměněné barevné rozlišení:

highlight clear SpellBad
highlight SpellBad term=standout ctermfg=1 term=underline cterm=underline
highlight clear SpellCap
highlight SpellCap term=underline cterm=underline
highlight clear SpellRare
highlight SpellRare term=underline cterm=underline
highlight clear SpellLocal
highlight SpellLocal term=underline cterm=underline

Vypíše cestu a název otevřeného souboru

:!echo %:p

Nastavit vim VIM jako default pro Midnight commander

Nyní, když už umíme pracovat s editorem vim, nastavíme si jej jako defaultní editor pro Midning commander

vim /usr/share/mc/mc.ext
# Default target for anything not described above
default/*
Open=
View=
Edit=%var{EDITOR:vim} %f

Přidám řádek Edit=%var{EDITOR:vim} %f

Interní editor to přestane používat, i když je nastaveno v menu Nastavení, Konfigurace, že se má používat interní editor.