" Author: Mikołaj Machowski
" Created: 28 lut 2003
" Description: Plik .vimrc z komentarzem


" Wyłącza kompatybilność z vi i zapewnia wszystkie możliwości Vima
set nocompatible

" Umożliwia 'zawijanie' wokół końca linii klawisza <BS> przy końcu linii,
" automatycznych wcięciach i początku obecnej sesji trybu Insert
set backspace=indent,eol,start

" Ustwawia szerokość tekstu na 72 znaki. Wyrazy, które przekroczą tę szerokość
" zostaną przeniesione do następnego wiersza
set textwidth=72

" Uaktywnia na 'twardo' elementy GUI: pasek menu i odrywanie menu
set guioptions=mt

" Wyłącza numerowanie wierszy. Jest to wartość domyślna, więc tak naprawdę nie
" ma potrzeby jej umieszczać, ale jakoś tu zawędrowała.
set nonumber

" Umożliwia ukrywanie plików (buforów)
set hidden

" Ile elementów historii linii poleceń będzie zapamiętanych
set history=1000

" Będzie pokazana linijka: domyślnie pokaże linię, kolumnę i procentowe
" położenie kursora w pliku
set ruler

" Nie podświetlaj wyników wyszukiwania
set nohls

" Regulacja wcięć: nie zamieniaj tabulatorów na spacje, ustaw taby na 4 spacje
set noet ts=4 sw=4

" Nie rób wcięć automatycznie
set noautoindent

" Pokazuj wyniki poszukiwania / w czasie wstukiwania łańcucha
set incsearch

" Ustaw kontekst na dwie linie
set scrolloff=2

" Pokaż tryb w lewym dolnym rogu ekranu
set showmode

" Pokaż polecenia w prawym dolnym rogu ekranu
set showcmd

" W ten sposób będą pokazane znaki niedrukowalne, spacje, taby i końce linii
set listchars=tab:>-,trail:-,eol:$

" Dodaj flagę 1 do domyślnej wartości formatoptions. 1 przenosi ostatni,
" pojedynczy znak, taki jak i a z w, do następnej linii.
set formatoptions+=1

" Rozszerz domyślną wartość opcji display o wartość lastline. Dzięki niej Vim
" pokaże tyle ile może z ostatniej linii na ekranie.
set display+=lastline

" Reguluje przechodzenie między wirszami w różnych trybach przy pomocy różnych
" komend
set whichwrap=b,s,<,>,[,]

" Rób backupy plików
set backup

" Gdzie mają być przechowywane pliki backupów
set backupdir=~/backup/,/tmp

" Przełączanie trybu paste. Wygodne przy wklejaniu
set pastetoggle=<F6>

" Opcja, która mam nadzieję wejdzie do Vima 6.2 - umożliwia drukowanie
" w różnych kodowaniach.
set printencoding=iso-8859-2

" Linia statusu ma być zawsze pokazywana
set laststatus=2

" Ustawia uzupełnianie w linii poleceń. Dzięki temu <Tab> zawsze wyświetli
" listę możliwości a nie jedną wartość naraz
set wildmode=longest,list
set wildmenu

" Włączanie podświetlania składni
syntax on

" Włącza rozpoznawanie typu pliku i wczytywanie odpowiednich plików wtyczek,
" także do indentacji
filetype plugin indent on

" Ta autokomenda umieści kursor tam gdzie był ostatnio w pliku
autocmd BufReadPost *
    \ if line("'\"") > 0 && line("'\"") <= line("$") |
    \   exe "normal g`\"" |
    \ endif

" Zaczynaj nowy plik w trybie Insert
autocmd BufNewFile * startinsert

" Nie pozwalaj na żadne modyfikacje plików tylko do odczytu.
au BufReadPost * :call CheckReadonly()
function! CheckReadonly()
    if version >= 600
        if &readonly
            setlocal nomodifiable
        endif
    endif
endfunction

" Benoit Cerrina tab completion + A. addittion tip#102
" Bardzo fajna funkcja umożliwiająca uzupełnianie wyrazów przez <Tab>
function! InsertTabWrapper(direction)
    let col = col('.') - 1
    if !col || getline('.')[col - 1] !~ '\k'
        return "\<tab>"
    elseif "backward" == a:direction
        return "\<c-p>"
    else
        return "\<c-n>"
    endif
endfunction
inoremap <Tab> <C-R>=InsertTabWrapper("backward")<cr>
inoremap <S-Tab> <C-R>=InsertTabWrapper("forward")<cr>

" Nie lubię domyślnego zachowania <C-E> i <C-Y>, więc je trochę
" zmodyfikowałem. Teraz kursor zawsze pozostaje w tym samym miejscu ekranu.
noremap <C-E> <C-E>j
noremap <C-Y> <C-Y>k

" Przy eksportowaniu pliku jako html używaj css
let g:html_use_css = "1"

" Wczytaj skrypt ciach.vim. Dzięki niemu mogę uzyskać pliterki po / - /a, /c,
" /e itd.
source ~/.vim/scripts/ciach.vim

" Skrypt do przeglądania manów z wnętrza Vima.
runtime ftplugin/man.vim