Vim/Konfiguracja
Vim jest programem, który w dużym stopniu można dostosować do potrzeb użytkownika. Standardowo edytor korzysta z pliku konfiguracyjnego, wczytywanego podczas uruchamiania programu, który znajduje się zazwyczaj w katalogu domowym użytkownika. W zależności od systemu operacyjnego, z jakiego korzystamy, jego lokalizacja i nazwa mogą się różnić:
Unix $HOME/.vimrc OS/2 $HOME/.vimrc lub $VIM/.vimrc (lub _vimrc) MS-DOS and Win32 $HOME/_vimrc lub $VIM/_vimrc Amiga s:.vimrc lub $VIM/.vimrc Haiku $HOME/config/settings/vim/vimrc
W większości przypadków będziemy edytować plik konfiguracyjny ręcznie, za pomocą naszego ulubionego edytora. W przypadku, gdy pliku brakuje, możemy go wygenerować z poziomu programu. Mamy do dyspozycji kilka komend, które temu służą:
:mk nazwapliku (1) :mkexrc nazwapliku (2) :mkexrc! nazwapliku (3) :mkv nazwapliku (4) :mkvimrc nazwapliku (5) :mkvimrc! nazwapliku (6)
Powyższe komendy zapiszą wszystkie ustawienia (:set) i mapowane klawisze (:map) do pliku konfiguracyjnego o nazwie nazwapliku, w aktualnej lokalizacji. Oczywiście, zamiast samej nazwy pliku można podać całą ścieżkę. Jeżeli nie podamy żadnej nazwy pliku, ustawienia zostaną zapisane do domyślnej lokalizacji jako plik o domyślnej nazwie, które to zależą od danego systemu operacyjnego (patrz wyżej). Komendy (1),(2),(3) tworzą plik konfiguracyjny typu .exrc, czyli zgodny i charakterystyczny dla poprzednika Vim, Vi. Kolejne komendy, (4),(5),(6), tworzą plik typu .vimrc, czyli charakterystyczny i zgodny z Vim. Wszystkie komendy poza (3) i (6) utworzą plik pod warunkiem, że jeszcze nie istnieje. Dodanie !, jak to jest w komendach (3) i (6), powoduje nadpisanie pliku, w przypadku, gdy już istnieje.
Opcje, które nie są zapisywane za pomocą tych funkcji:
- 'columns', 'endofline',
- 'fileformat', 'key', 'lines', 'modified', 'scroll', 'term', 'textmode',
- 'ttyfast' i 'ttymouse' nie są włączone do zapisu, ponieważ zależą od terminala lub pliku.
Zauważ, że opcje 'binary', 'paste' i 'readonly' są włączone, co nie zawsze jest pożądane.
Wszystkie ustawienia funkcji w programie, zarówno dotyczące wyglądu jak i jego działania, można wprowadzać w trybie Linii Komend oraz w trybie Ex. Opcje wprowadzone do programu w czasie jego działania będą obowiązywać tylko do momentu jego wyłączenia, po czym zostaną utracone. Zapobiec temu możemy zapisując zmiany do pliku konfiguracyjnego.
Zaczynamy
edytujW tej części postaramy się wypolerować trochę działanie Vima, zmieniając jego plik konfiguracyjny. Będziemy się wzorować na działaniu większości edytorów.
W Linuksie plik taki powinien zostać utworzony w katalogu domowym użytkownika i mieć nazwę .vimrc. W Windowsie, natomiast, o nazwie _vimrc (sprawdzić dokładnie). Linie pliku zaczynające się od cudzysłowu są komentarzami. Można także w połowie linii zacząć komentarz, jednak nie zawsze ten sposób będzie działał (wówczas przenosimy komentarz do nowej linii). Poniższy tekst można bezpośrednio wkleić do pliku konfiguracyjnego Vima.
scriptencoding utf-8 " kodowanie znakow uzyte w pliku konfiguracyjnym " przydatne jesli chcemy miec polskie znaki. inne kodowania to np. cp1250, lub iso-8859-2 " lista dostepnych kodowan jest dostepna w vimie " :he encoding-names """"""""""""""""""""""" map <F10> :source $VIMRUNTIME/twoja_nazwa.vim " powyzsze ustawienie powoduje wczytanie pliku konfiguracyjnego z katalogu " C:\Program Files\Vim\vim70 w systemie Windows " pod *nixami każdy powinien wiedzieć jak to ustawić """"""""""""""""""""""" " Automatyczna zmiana katalogu do tego, w ktorym jest aktualnie edytowany plik. """"""""""""""""""""""" " Przydatne gdy chcemy otworzyc inny z tego samego katalogu " http://vim.sourceforge.net/tip_view.php?tip_id=101 if has("autocmd") autocmd BufEnter * :cd %:p:h endif " has("autocmd") " mozna tez uzyc set acd, ale ta opcja nie dziala z pewnymi wtyczkami, zobacz :he acd """"""""""""""""""""""" set nobackup " vim nie bedzie zostawial kopii zapisywanych plikow set nowritebackup " ani tworzyl ich podczas edycji """"""""""""""""""""""" " przy zawinietych liniach (set wrap) przechodzenie miedzy liniami " bedzie dzialalo jak w wiekszosci edytorow " (przdaloby sie wylaczyc to dla Shift-V) " http://vim.wikia.com/wiki/Move_cursor_by_display_lines_when_wrapping nnoremap j gj nnoremap k gk vnoremap j gj vnoremap k gk nnoremap <Down> gj nnoremap <Up> gk vnoremap <Down> gj vnoremap <Up> gk inoremap <Down> <C-o>gj inoremap <Up> <C-o>gk """"""""""""""""""""""" " kodowanie """"""""""""""""""""""" set fencs=iso-8859-2 " ustawia zapisywanie wszystkich nowych plikow w danym kodowaniu " " w systemie windows lepiej to wylaczyc (brak iconv) i sciagnac sterownik klawiatury iso z adresu " http://windows.online.pl/klawiat.htm oraz ustawic czcionke na czcionke iso " Moze to byc darmowa czcionka w formacie TrueType http://web.archive.org/web/20061031005750/http://windows.online.pl/pliki/pols2.zip " lub bitmapowa http://web.archive.org/web/20060910163453/http://windows.online.pl/pliki/pols1.zip " Inne czcionki iso: " http://nl.ijs.si/gnusl/cee/iso8859-2.html " lub szukaj na google: latin 2 fonts " aby ustawic na stale w gvimie (gui vim) nalezy wybrac ja z menu a potem " wpisac w gvimie :set gfn? " otrzymany napis skopiowac do pliku konfiguracyjnego _vimrc np. " set guifont=Courier_N_CE_/_Latin_2:h10:cEASTEUROPE " aby skopiowac napis z konsoli msdos nalezy przejsc do menu okna, kliknac edycja --> zaznacz, " zaznaczyc co nas interesuje i wcisnac enter " teraz w innym programie mozemy wkleic tekst " " wiecej o windows, vim i iso: " http://www.linuxfan.pl/dyskusje/pcol.2003/04.2003/6682.php3 " http://www.linuxfan.pl/dyskusje/pcol.2002/07.2002/3660.php3 """"""""""""""""""""""" set mouse=a " mysz dziala wszedzie przy zaznaczaniu, wklejaniu set nu " lub set number, wlacza numerowanie wierszy " klawisz F2 ustawiamy jako przelacznik wyswietlania linii map <F2> :set number!<Bar>set number?<CR> imap <F2> :set nu!<CR> " potrzebne aby dzialalo takze w trybie wstawiania set is " lub set incsearch, przeskakuje do znajdywanych ciagow przy szukaniu / lub ? set nohls " wylacza podswietlanie znalezionych ciagow colo morning " ustawia schemat kolorow na poranny " wiecej na :he colo """"""""""""""""""""""" set paste " ustawilismy ze wklejany tekst nie bedzie automatycznie wcinany """"""""""""""""""""""" set wrap " zawijanie linii wlaczone set textwidth=0 " ustawia dlugosc linii na zero, nie bedzie automatycznie robil wciec set splitbelow " polecenie :sp umieszcza nowe okno pod aktywnym set splitright " polecenie :vs umieszcza nowe po prawej stronie aktywnego set wildmode=longest,list "wyswietla liste mozliwosci przy dopasowaniu, oraz dopasowuje najdluzsze """"""""""""""""""""""" "latwiejsze wciecia zaznaczenia pod klawiszem > lub < vnoremap > >gv vnoremap < <gv """"""""""""""""""""""" " wcinanie tylko tabem """"""""""""""""""""""" set tabstop=3 set shiftwidth=3 set noexpandtab set lcs=eol:\ ,tab:·\ ,trail:@ " opcja lcs to skrot od listchars. Ustawienie >>tab:'\ << powoduje ze bedziemy widziec " poczatkowy znak tabulatora, a nastepne ktore zajmuje beda spacjami. " Aby otrzymac kropke posrodku Ctrl+k .M " spacja to ukosnik i spacja " http://vim.wikia.com/wiki/Highlight_unwanted_spaces " przydatne przy programowaniu " " aby wciac caly tekst: gg=G """"""""""""""""""""""" " obsluga kart (zakladek) """"""""""""""""""""""" " Dotyczy plikow otwieranych przez przeciagnięcie lub :e nazwa pliku na Windows XP " zrodlo: http://www.nabble.com/tablines-on-Windows-t1365085.html """"""""""""""""""""""" " Nie lam slow w srodku set linebreak " Pokaz niekompletne paragrafy nawet jesli nie mieszcza sie na ekranie (unikniemy znakow @) set display+=lastline " klawisze kierunkowe i inne przekrocza granice linii set whichwrap=b,s,<,>,h,l """"""""""""""""""""""" " http://vim.wikia.com/wiki/Best_Vim_Tips map <F11> :set hls!<Bar>set hls?<CR> map <F10> :set paste!<Bar>set paste?<CR> map <F9> :set wrap!<Bar>set wrap?<CR> """"""""""""""""""""""" autocmd VimEnter * tab all autocmd BufAdd * exe 'tablast | tabe "' . expand( "<afile") .'"' """"""""""""""""""""""" " evaluate line in bash function Eval_line( ) :let start=line( '.' ) :exe "!eval" getline(start) endfunction map <F3> :call Eval_line() """"""""""""""""""""""" if has("autocmd") " zrodlo: http://people.smu.edu/jrobinet/howto/customize-vim.asp " Wykrywanie typu pliku i wlaczenie domyslnych ustawien jak długosc linii, wciecia " Rowniez ladownie plikow wciec aby robic automatyczne wciecia zaleznie od jezyka programowania filetype plugin indent on " Wrzucenie ponizszych linii do augrupy aby mozna bylo latwo usuwac pozniej augroup vimrcEx " Podczas edycji pliku zawsze przeskakuj do ostatniej znany pozycji kursora. " Nie rob tego gdy pozycja jest bledna lub gdy wewnatrz uchwytu zdarzenia " (zdarza sie podczas upuszczania pliku na gvim). autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ endif augroup END else set autoindent " zawsze wlacz autowcinanie endif " has("autocmd")
linia poleceń w Linuksie w stylu vi
edytujshopt -o vi
Od teraz nawigacja po linii komend jak w vi. Zobacz inne opcje
shopt -o
Zobacz także
edytujhttp://www.linode.com/wiki/index.php/Vim_Tutorial
http://www.ashberg.de/vim/vimrc.html
Do zrobienia
edytujW przygotowaniu: Wyjaśnienie mapowanie klawiszy, omap, noremap itp. http://ianua.initd.org/vimit/vim63/html/map.html#map-overview
<rofro> what's Operator-pending mode for mapping? <shl> rofro: when you type d, it waits for another key, while it does that, it's Operator-pending <rofro> shl, when it is used for mapping? could you give some example? <shl> lets say you want to make dw delete up to the space instead of deleting the space as well, you would do :omap w e <shl> you are remapping the w, it will work for dw, cw, yw, etc (map w when there is another character in front)
you can't use omap to implement new text objects |