Vim jako środowisko deweloperskie

Vima nie trzeba chyba nikomu przedstawiać. Jest to jeden z najpopularniejszych edytorów konsolowych, o korzeniach tak starych, jak sam UNIX. Potężne narzędzie, dzięki któremu żonglerka tekstem, w ogromnej ilości formatów, staje się przyjemnym, a nie monotonnym zajęciem. Dlatego też, bez zbędnych wstępów teoretycznych, przejdziemy od razu do sedna, czyli do konfiguracji Vima.

Osobiście, w przeciągu ostatnich lat miałem okazje zetknąć się z wieloma edytorami tekstu, jednakże po zapoznaniu się z vimtutorem (man vimtutor), zaniechałem dalszych poszukiwań. Od trzech lat jest nim właśnie Vim.

Artykuł postanowiłem podzielić na część główną, w której przedstawię ogólne elementy konfiguracji środowiska typu IDE, oraz trzy poboczne, odnoszące się do konkretnych konfiguracji dla wybranych języków programowania: PHP, Python i C/C++.

Omawiana konfiguracja dotyczy wersji 7.1, lecz większość funkcji powinna działać na całej gałęzi 7.*. Przedstawię najciekawsze wtyczki z ich najistotniejszymi elementami, zainteresowanych czytelników odsyłam do zgłębiania dokumentacji.

Konfiguracja ogólna

Założyłem iż konfigurujemy Vima dla nowego użytkownika w systemie. Tak, by poprowadzić za rączkę przez kolejne etapy, nie pomijając niczego istotnego. Plik konfiguracyjny Vima, ładowany z katalogu domowego użytkownika, zwie się .vimrc. Domyślnie plik ten nie istnieje, ale nie będziemy tworzyli go od zera, zamiast tego skopiujemy go z już istniejącej konfiguracji (domyślnej w paczce z edytorem):

vim@ra:~$ pwd
/home/vim
vim@ra:~$ locate vimrc | grep vim | grep '\.vim$'
/usr/share/vim/vim71/gvimrc_example.vim
/usr/share/vim/vim71/vimrc_example.vim
vim@ra:~$ cp /usr/share/vim/vim71/vimrc_example.vim \\
.vimrc
vim@ra:~$


Potrzebna nam jeszcze prosta hierarchia katalogów, w której będziemy umieszczać wszystkie rozszerzenia Vima:

vim@ra:~$ mkdir .vim
vim@ra:~$ mkdir .vim/plugin
vim@ra:~$ mkdir .vim/doc
vim@ra:~$ mkdir .vim/after
vim@ra:~$ mkdir .vim/colors

MiniBufExplorer (minibufexpl.vim)

MiniBufExplorer jest bardzo użytecznym pluginem, bez którego nie wyobrażam sobie edycji wielu plików. Pomimo faktu, iż od wersji 7.0 edytor posiada zintegrowany mechanizm zakładek (tabów), to jednak MiniBufExplorer przy integracji z innymi pluginami wypiera domyślne tabowanie.

Ściągamy zatem plugin ze strony i wrzucamy go do naszego katalogu:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=3640 -O minibufexpl.vim
vim@ra:~$ mv minibufexpl.vim .vim/plugin/


MiniBufExplorer włącza się automatycznie przy edycji więcej niż jednego pliku na raz. Np.:

vim@ra:~$ vim a b

MiniBufExplorer

Jak widać, obszar roboczy podzielił się nam na dwa okna, z czego pierwsze od góry jest właśnie przeznaczone do listingu buforów. Do okienka możemy przejść w domyślny sposób poruszania się między oknami, czyli przez kombinacje klawiszy ctrl+w, a następnie kierunek – k (lub wpisując :MiniBufExplorer – wtedy okno explorera staje się aktywne). Po otwartych plikach możemy przeskakiwać Tabem, a wciskając Enter przechodzimy do edycji wybranego pliku. Dorzućmy drobną konfiguracje MiniBufEplorera do naszego pliku .vimrc:

let g:miniBufExplTabWrap = 5
map <C-b> :MiniBufExplorer<CR>
map <C-c> :CMiniBufExplorer<CR>
map < :bprev<CR>
map > :bnext<CR>
map b1 :b1<CR>
map b2 :b2<CR>
map b3 :b3<CR>
"...
map b30 :b30<CR>

Konfiguracja ta ustawia domyślny odstęp między otwartymi buforami na 5. Zmapowane zostały również kombinacje klawiszy ctrl+b i ctrl+c, pierwsza otwiera okno MiniBufExplorera, a druga je zamyka. Poza tym, wciskając < przechodzimy do poprzedniego bufora, a wciskając > do następnego. Poprzez wpisanie :b<numer> otwieramy bufor o określonym numerze. Oczywiście plugin umożliwia nam większe możliwości konfiguracyjne, dlatego odsyłam do źródła minibufexpl.vim, gdzie wszystko jest w przystępny sposób udokumentowane.

Project (project.vim)

Project jest pluginem, który daje nam możliwość swobodnej nawigacji po plikach projektu, czyli to, co każdy liczący się IDE powinien posiadać.

Pobieramy i rozpakowujemy paczkę:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=6273 -O project.tar.gz
vim@ra:~$ tar zxvf project.tar.gz -C .vim
plugin/project.vim
doc/project.txt
vim@ra:~$


Stwarzamy prostą strukturę quasi-projektu:

vim@ra:~$ mkdir my_project
vim@ra:~$ echo 'a' > my_project/a.txt
vim@ra:~$ echo 'b' > my_project/b.txt


Skrypt uruchamiamy przez polecenie :Project nazwa_pliku_z_projektem (opcjonalnie):

:Project


Aby utworzyć nowy projekt, wpisujemy ‘\C’ i wykonujemy następujące kroki:

  • Enter the Name of the Entry: my_project – podajemy nazwę projektu,
  • Enter the Absolute Directory to Load: /home/vim/my_project/ – ścieżka bezwzględna do projektu,
  • Enter the CD parameter: <Enter> – pomijamy; jeśli argument ma wartość, to VIM ustawi aktualną ścieżkę podaną jako ten parametr, przy otwieraniu plików znajdujących się w tej sekcji,
  • Enter the File Filter: *.txt – filter na pliki, filtry można łączyć, np. „.php\|*.js\|*.html”.

Mamy zatem gotowy projekt, który wygląda tak:

Project

Po najechaniu na plik a.txt i wciśnięciu Entera w prawym oknie otworzy nam się zawartość tego pliku. Przechodzimy z powrotem do okna projektu (ctrl+w i następnie h) i otwieramy plik b.txt. Po wykonaniu tej operacji aktywuje nam się również MiniBufExplorer. Całość powinna wyglądać mniej więcej tak:

Project

Project umożliwia grepowanie, zamykanie, otwieranie zgrupowanych plików. Daje nam także możliwość podpinania własnych poleceń pod skróty klawiszowe, np.:

:let g:proj_run1='!xterm -e "svn commit %f"'

Po najechaniu na plik z projektu (przy założeniu, że znajduje się on w repozytorium Subversion, oraz był modyfikowany), wciskając skrót ‘\1′ zostanie otwarte nowe okno z uruchomionym xtermem, które poprosi nas o opis zmian pliku, po zatwierdzeniu zostanie wykonany commit.

Oczywiście mamy możliwość minimalizacji i przywracania panelu projektu. Warto sobie to odpowiednio zmapować w ~/.vimrc, np. pod klawiszem F12:

nmap <silent> <F12> <Plug>ToggleProject

Plugin jak widać daje nam naprawdę dużo możliwości. Jedyną jego wadą jest brak odświeżania swojej struktury. Co prawda można tego dokonać ręcznie przez skrót \R, ale odświeży to nam jedynie liczbę plików, nowe podkatalogi zostaną zignorowane. Mimo wszystko, przy większych projektach Project strasznie ułatwia pracę w Vimie. Po pozostałą dokumentację odsyłam do helpa:

:help project

TagList (taglist.vim)

Kolejnym przydatnym pluginem jest TagList. Dodatek ten tworzy listę tagów (funkcje, klasy, zmienne itp.) na podstawie otwartych już plików.

Pobieramy zatem i instalujemy:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=7701 -O taglist.zip
vim@ra:~$ unzip taglist.zip -d .vim


Ponieważ wykorzystujemy poprzednie pluginy, musimy skonfigurować TagList w taki sposób, by pojawiał nam się po prawej stronie (domyślnie znajduje się po lewej, gdzie aktualnie uruchamia się nam plugin Project), a zatem dopisujemy do naszego ~/.vimrc:

let Tlist_Use_Right_Window = 1


I tworzymy nowy projekt, niech będzie to szkielet programu w C:

vim@ra:~$ mkdir c_project
vim@ra:~$ echo -ne "#include <stdio.h>nnint main(void)n\\
{ntreturn 0;n}n" > c_project/prog.c


:Project c_project/.project

  • Enter the Name of the Entry: c_project
  • Enter the Absolute Directory to Load: /home/vim/c_project/
  • Enter the CD parameter: <Enter>
  • Enter the File Filter: *.c\|*.h

Z lewego menu otwieramy nasz plik prog.c i wykonujemy polecenie:

:Tlist


Po tych operacjach całość powinna prezentować się tak:

taglist

Prawda, że wygląda to nieźle? TagList automatycznie generuje listę tagów dla każdego otwartego pliku, dodatkowo zaznacza sekcję, w której aktualnie się znajdujemy. Naturalnie można poruszać się po tagach i wciskając Enter przechodzić do wybranego. Po resztę informacji odsyłam do helpa (:help taglist).

Jeśli korzysta się z obu pluginów – Project i TagList, obszar roboczy wyraźnie się kurczy. Możemy temu zaradzić dzięki kolejnemu pluginowi.

ZoomWin (zoomwin.vim)

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=5537 -O ZoomWin.vim.gz
vim@ra:~$ gunzip -c ZoomWin.vim.gz > .vim/plugin\
/zoomwin.vim


Plugin bywa bardzo użyteczny. Wystarczy w aktywnym oknie wykonać polecenie:

:ZoomWin


Wybrane okno zostanie powiększone do maksymalnych rozmiarów. W naszym przypadku ukryje tym samym Project i TagList. Przy ponownym wykonaniu tego polecenia wszystkie okna wracają do poprzedniego stanu. ZoomWin jednak „gryzie” się z Project ze względu na mapowanie klawiszy, tak więc w pliku ~/.vim/plugin/ZoomWin.vim, w linii numer 22, zamieniamy z:

nmap <unique> <c-w>o  <Plug>ZoomWin


na:

nmap <unique> <c-o>  <Plug>ZoomWin


Dzięki temu powiększanie danego okna mamy przypisany do kombinacji ctrl+o (<C-o>).

VimCommander (vimcommander.vim)

W Vimie nie mogłoby zabraknąć menedżera plików. Jednak ten domyślny, file-manager nie nadaje się do pracy w środowisku typu IDE. Dlatego przedstawiam wam kolejny wspaniały dodatek – VimCommander.

Instalujemy:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=8019 -O .vim/plugin/vimcommander.vim


I od razu mapujemy w ~/.vimrc:

noremap <silent> <F11> :cal VimCommanderToggle()<CR>

Teraz możemy ponownie otworzyć wcześniejszy projekt my_project i jego dwa pliki a.txt oraz b.txt, a następnie, będąc w oknie edycyjnym, wcisnąć F11:

vimcommander

Wtyczka umożliwia nam kopiowanie pomiędzy panelami (F5), usuwanie plików (F8), a także tworzenie nowych (Shift+F4). Po ponownym wciśnięciu F11 VimCommander znika. Reszta dokumentacji znajduje się w samym skrypcie vimcommander.vim.

Vimball (vimballPlugin.vim)

Vimball jest skryptem, który pomaga w dystrybucji pluginów. Vimballem można tworzyć paczki z pluginami, bądź też je rozpakowywać. Nam jest potrzebna ta druga opcja ze względu na format dystrybucji kolejnego dodatku. Ściągamy i instalujemy:

vim@ra:~$ cd .vim
vim@ra:~/.vim$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=8743 -O vimball.tar.gz
vim@ra:~/.vim$ tar zxvf vimball.tar.gz
vim@ra:~/.vim$ chmod a+r autoload/vimball.vim doc\\
/pi_vimball.txt plugin/vimballPlugin.vim
vim@ra:~/.vim$ rm vimball.tar.gz


Nie ma co tutaj się rozwodzić. Jeśli kogoś interesuje tworzenie pluginów, to odsyłam do strony domowej skryptu: Vimball.

SnippetsEmu (snippetsEmu.vim)

Na fali Ruby on Rails i railcastów, w których to główne skrzypce grał Mac Osowy TextMate, popularne ostatnio stały się snippety. Chodzi o proste szablony ułatwiające pisanie powtarzających się fragmentów kodu, np. klas w pythonie.

Więc do dzieła, instalujemy:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=8450 -O snippy_plugin.vba
vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=8443 -O snippy_bundles.vba


Następnie otwieramy (pojedynczo) pliki w Vimie i rozpakowujemy je przez polecenie ‘:source’:

vim@ra:~$ vim snippy_plugin.vba
:source snippy_plugin.vba
vim@ra:~$ vim snippy_bundles.vba
:source snippy_bundles.vba


W ten sposób w ~/.vim/plugin pojawił się nowy plik – snippetsEmu.vim, natomiast w ~/.vim/after/ftplugin kilka plików *_snippets.vim. Teraz możemy otworzyć przykładowy plik do edycji, niech to będzie test.py i sprawdzić, czy snippety działają.

Wpisujemy def i wciskamy Tab, a oto efekt:

snippetsemu

W ten oto sposób kolejno wypełniamy pola, przechodząc do następnego przy użyciu klawisza Tab. Listę wszystkich dostępnych snippetów znaleźć można przeglądając pliki ~/.vim/after/ftplugin/*_snippets.vim.

Omni completion

Omni completion to wbudowany mechanizm autouzupełniania w Vimie od wersji 7.0. Wystarczy podczas edycji pliku użyć skrótu ctrl+x i następnie ctrl+o (<C-x><C-o>) aby uzyskać liste proponowanych elementów. Przykład dla plików z rozszerzeniem css:

omnicompletion

czy też .html:

omnicompletion

Wybieramy odpowiedni element z listy i wciskając Enter wstawiamy do tekstu. Osobiście nigdy z tego nie korzystałem, ale skoro to zintegrowany mechanizm to wnioskuje, że innym jest pomocny. Dodatkowo mamy również możliwość rozwinięcia listy słów użytych w otwartym pliku. Skrót klawiaturowy do takiej operacji to ctrl+x i ctrl+n (<C-x><C-n>).

Spell

Spell to mechanizm słownikowy do sprawdzania/autouzupełniania wyrazów. Domyślnie jest on wyłączony i posiada jedynie bazę słów angielskich. Dodajmy zatem polskie słownictwo:

vim@ra:~$ mkdir .vim/spell
vim@ra:~$ wget ftp://ftp.vim.org/pub/vim/runtime/spell\\
/pl.utf-8.spl -O .vim/spell/pl.utf-8.spl
vim@ra:~$ wget ftp://ftp.vim.org/pub/vim/runtime/spell\\
/pl.iso-8859-2.spl -O .vim/spell/pl.iso-8859-2.spl


Dopisujemy do ~/.vimrc linijkę ustawiającą język do sprawdzania (można ustawić kilka, kolejne języku wpisujemy po przecinku):

set spelllang=pl


Aby włączyć sprawdzenie pisowni, w Vimie wpisujemy:

:set spell


Oczywiście polecenie można sobie wygodnie zmapować, aczkolwiek osobiście dla sprawdzania pisowni nie mam ustawionego skrótu klawiaturowego, dlatego również tutaj na siłę nie będę go wprowadzać. Oto przykładowe zrzuty Vima z uruchomionym Spellem:

Tak wygląda tekst z błędami:

spell

Przechodzimy do początku podświetlonego wyrazu (skrót [s cofa do poprzedniego błędnego wyrazu, a ]s do następnego) i w trybie poleceń wciskamy: z=

spell

Wybieramy słowo, wciskamy Enter i błędne zostaje zastąpione prawidłowym.

Closetag (closetag.vim)

Closetag to bardzo użyteczny skrypt do domykania otwartych tagów XML-owych. Przydatne, jeśli sporo piszemy w kodzie XHTML czy też czystym kodzie XML.

Prosta instalacja:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=4318 -O .vim/plugin/closetag.vim


I dopisujemy do .vimrc linijkę, która uruchamia skrypt dla plików o rozszerzeniach .html, .xml oraz .xsl:

:au Filetype html,xml,xsl source ~/.vim/plugin/closetag.vim


W przypadku, gdy mamy następujący kod XHTML-a:

<div><span>
tekst


W trybie wprowadzania wystarczy wcisnąć dwukrotnie ctrl+_ (<C-_>) i oba otwarte tagi zostaną zamknięte.

IDE dla PHP

Lista powyższych skryptów tworzy całkiem rozbudowane środowisko dla programistów PHP (spełnia wszystkie moje oczekiwania), lecz można jeszcze wspomnieć o dwóch dodatkach:

IDE dla Pythona

Pydiction (pydiction.vim)

Pydiction jest pluginem, który poszerza możliwości autouzupełniania pythona o funkcje różnych bibliotek.

Instalujemy:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=2668 -O .vim/pydiction-0.5.tar.gz
vim@ra:~$ cd .vim
vim@ra:~/.vim$ tar zxvf pydiction-0.5.tar.gz
pydiction-0.5/
pydiction-0.5/LICENSE.txt
pydiction-0.5/pydiction
pydiction-0.5/pydiction.py
pydiction-0.5/README
vim@ra:~/.vim$


Aby zacząć korzystać z autouzupełniania należy jeszcze dopisać następujące linijki do ~/.vimrc:

if has("autocmd")
autocmd FileType python set complete+=k/home/vim/.vim\\
/pydiction-0.5/pydiction isk+=.,(
endif " has("autocmd")


Teraz otwieramy przykładowy plik i sprawdzamy działanie. Po wpisaniu os.lis wciskamy kombinacje klawiszy ctrl+n (<C-n>) i otrzymujemy:

pydiction

Oczywiście ścieżka do Pydiction musi być ustawiona na miejsce, w którym plugin został rozpakowany.

vdb (vdb.vim)

Vim posiada również pluginy umożliwiające interaktywne debugowanie różnych języków, w tym pythona. Aczkolwiek nigdy nie korzystałem z takiego rozwiązania, jednakże warto pokazać, że i jak to działa.

Instalujemy więc ów dodatek:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=8865 -O vdb-0.4.3.tar.gz
vim@ra:~$ tar zxvf vdb-0.4.3.tar.gz
COPYING
README
quick-start.txt
todo
vdb.vim
vim@ra:~$ mv vdb.vim .vim/plugin/
vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=8866 -O cpdb.py
vim@ra:~$ sudo mv cpdb.py /bin
vim@ra:~$ sudo chmod +x /bin/cpdb.py


Po napisaniu prostego skryptu i wywołaniu polecenia

:VDBShowConsole


Uruchamia się nam:

vdb

Sposób nawigacji opisany jest w pliku quick-start.txt, więc wszystkich tych, którzy zainteresowali się dodatkiem, odsyłam własnie do niego.

IDE dla C/C++

c.vim

c.vim jest rozbudowanym pluginem przeznaczonym dla środowiska C/C++. Dostarcza ogrom snippetów, skrótów klawiaturowych kompilujących, linkujących czy też uruchamiających programy. Vim wspiera make-a, dzięki czemu mamy możliwość interaktywnego śledzenia błędów.

Instalacja jest całkiem łatwa i nie powinna sprawić żadnych problemów:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=9146 -O .vim/cvim.zip
vim@ra:~$ cd .vim/
vim@ra:~/.vim$ unzip cvim.zip


W trybie tekstowym (_nie_ gVimowym) zapisujemy i kompilujemy program przez wpisanie \rc, a uruchamiamy skrótem \rr. Oczywiście istnieje całe mnóstwo innych skrótow i kombinacji, lecz nie będę ich tutaj teraz przybliżał. Po więcej informacji odsyłam do dokumentacji.

a.vim

a.vim to prosty plugin umożliwiający szybkie przejścia między plikami ze źródłem, a plikami nagłówkowymi (.c i .h) o tych samych nazwach.

Instalacja:

vim@ra:~$ wget http://www.vim.org/scripts/download_\\
script.php?src_id=7218 -O .vim/plugin/a.vim


Aby sprawdzić działanie wystarczy utworzyć dwa pliki, np. prog.c, prog.h, a następnie otworzyć prog.c. Po wpisaniu polecenia:

:A


Otworzony zostanie plik prog.h (o ile jeszcze nie został otwarty) i ustawiony jako aktywny bufor. Przy ponownym wpisaniu tego polecenia, aktywny staje się bufor z plikiem prog.c.

Dodatki

rails.vim

Z rosnącą popularnością RoRa musiał pojawić się w końcu także plugin do Vima ułątwiający obsługę tego frameworka. Plugin jest bardzo aktywnie rozwijany, mamy także możliwość obejrzenia krótkiego filmu ilustrującego możliwości tego dodatku:

Gorąco zachęcam do obejrzenia, prezentuje się naprawdę ciekawie.

vimshell

Vimshell to łata, która umożliwia uruchomienie shella wewnątrz Vima. Zasadniczo ten sam efekt można osiągnąć odpowiednio splitując screena. Zdaje się to potwierdzać fakt, iż ostatnie wydanie tej łaty było na wersję 7.0, więc projekt chyli się raczej ku końcowi. Niemniej można zobaczyć, że i coś takiego jest możliwe w naszym edytorze.

pida

Pida jest ciekawie zapowiadającym się projektem, tworzącym środowisko, do którego można zintegrować wybrany edytor, w tym także Vima. GUI prezentuje się bardzo dobrze, ale brakuje tutaj funkcji, która daje przewagę Vimowi nad innymi edytorami – błyskawicznej obsługi każdej akcji z poziomu klawiatury. Przez krótką chwilę bawiłem się tym edytorem i bez żalu powróciłem do „czystego” VIMa.

vimperator

Na zakończenie – vimperator. Ta dumnie brzmiąca nazwa to projekt, dzięki któremu mamy możliwość sterowania Firefoxem tak, jakby był on Vimowym edytorem. Nie wiem na ile jest to używalne, gdyż nie miałem czasu zapoznać się z tym geekowym projektem, ale jeśli mogę tym obsłużyć rozbudowane formularze bez dotknięcia myszki, to wchodzę w to. Jeśli ktoś wie czy jest to możliwe, to byłbym wdzięczny za jakiekolwiek informacje na ten temat.

Podsumowanie

Jak widać, Vim nie jest zwykłym edytorem. Nie jest również taki straszny, jak go malują. Stanowi za to potężne narzędzie, które znacznie przyspiesza i ułatwia nam pracę.

Osobiście, pomimo czasu jaki spędzam dziennie z tym edytorem, cały czas ucze się czegoś nowego. Vim posiada naprawdę ogrom możliwości, a funkcja dołączania pluginów zamazuje granice nieosiągalnego. Zachęcam gorąco do przejrzenia repozytorium pluginów na stronie projektu: http://www.vim.org/scripts/index.php.

W razie pytań, kontakt: p.bylina@gmail.com.

Bonus (filmiki)

Skład: MiszczQ (Piotr Krzysztof Soboń)

Komentarze (RSS)
Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

25 komentarzy

  1. zyga 21 stycznia 2009 o godz. 10:44 #

    hardcore ;)

  2. Swift Geek 21 stycznia 2009 o godz. 10:50 #

    Właśnie na ten art czekałem – dziękuje! ^^

  3. Leafnode 21 stycznia 2009 o godz. 10:59 #

    Dobry artykuł. Od siebie dodam jeszcze link do mojego tekstu o programowaniu konkretnie w PHP http://aspiryna.net/programowanie/php/vim-i-php/

  4. salmon 21 stycznia 2009 o godz. 11:02 #

    Kilka pluginów znałem, kilka nowych poznałem. Świetny art, dzięki.

  5. pako 21 stycznia 2009 o godz. 11:09 #

    Dodam może jeszcze, że vimperatorem można obsłużyć bez problemu rozbudowane formularze ;-)

    Natomiast jeśli chodzi o filemanagera to polecam http://vifm.sourceforge.net/

  6. zen 21 stycznia 2009 o godz. 11:19 #

    Bardzo ciekawy i pouczający artykuł. Oby więcej takich.

    Dobrze, że konkurs okazał się pożyteczny.

  7. Didimos 21 stycznia 2009 o godz. 13:58 #

    Dołączam się do chwalących… Mój artykuł, choć w podobnej tematyce, to zupełnie inna liga. Moim zdaniem najlepszy z dotychczas opublikowanych konkursowych…

  8. Taeril 21 stycznia 2009 o godz. 16:03 #

    MibufExplorer:

    1. służą do zmiejszania i zwiększania wcięcia (:he shift-left-right) więc nie nie jest to dobre przypisanie

    2. moim zdaniem przypisywanie b1 do :b1 jest bez sensu standardowe polecenie to tylko dwa wciścnięcia więcej.

    Poza tym w opisie pod ustawieniami nie powinno być dwukropka, bo opisywane jest mapowanie.

    Ja korzystam z bufferlistbufferlist Z tego co pamiętam to poprawiłem sobie fragment sekcji syntax aby brał kolory z używanego schematu. A poza tym mimo, że ma już swoje lata jest świetnym narzędziem :)

    Zazwyczaj projekty mają logiczną strukturę na dysku i mając <a>NERD tree dodatkowe zarządzanie projektami jest mi zbędne. Czasami tylko zapisuję aktualny układ okien (:he mks).

    Przy skrócie 1 z projektu źłe się wyświetla encja. A to to jest czy ? Niektórzy zmieniają to drugie (akurat nie ja) więc warto zaznaczyć jeśli to .

    Przy opisie Taglist zamiast
    jest samo n (przy echo)

    Kolejne nienajlepiej dobrane mapowanie to – chyba, że nie korzysta się z jump list (:he CTRL-O)

    Vimball jest standardowo w Vimie. Nie wiem tylko, od której wersji. Instalowanie prościej sprowadzić do :so % – po co ponownie podawać nazwę pliku? :)

    Zamiast na sztywno włączać sprawdzanie pisowni wolę mieć prosty przełącznik:

    map spell :setl spell! spelllang=pl,en

    "splitując screena" – jejku po jakiemu to? O ile przykładowo snippet mnie nie razi – a zapewne jakby przetłumaczyć, to zatsanawiałbym się chwilę o co chodzi – to owe "splitowanie" jest tragiczne.

    Nie da się uruchomić programu wewnątrz Vima, a jego jednowątkowość sprawia, że takiego efektu jaki daje vimshell nie da się standardowo uzyskać (piszę na podstawie opisu, bo nie widziałem łatki w akcji).

    Jak już mowa o Firefoksie, to dzięki It's All Text! mogę ten komentarz wygodnie napisać w Vimie :)

    • Taeril 21 stycznia 2009 o godz. 16:12 #

      Wycięło mi znaki mniejszy i większy przy opisie MibufExplorera a także po :b1

      Zastepując znak mniejszości " LT " i większości " GT " miało być jakoś tak:

      1. LT i GT służą do zmiejszania[...]

      A to to jest czy LT leader GT

      [...]warto zaznaczyć jeśli to LT leader GT .

      Kolejne nienajlepiej dobrane mapowanie to – LT c-o GT

      Także na końcu tego map spell jest LT cr GT

      Przydałaby się opcja podglądu by móc zobaczyć jak zostanie przerobione to, co się wpisało

  9. zen 21 stycznia 2009 o godz. 19:12 #

    I jeszcze jedno, w ramach propagowania dobrych praktyk:

    mkdir -p .vim/{plugin,doc,after,colors}

  10. atavus 23 stycznia 2009 o godz. 16:46 #

    wielkie dzieki autorowi!

    wreszcie sie wezme za porzadna konfiguracje vima ;p

    pozdrawiam

  11. bboozzoo 25 stycznia 2009 o godz. 20:11 #

    a gdzie jest cscope? doskonale integruje sie z vimem, juz nie mowiac o wygodzie jaka sie otrzymuje przy pracy z ogromnymi ilosciami kodu. Najpierw najlepiej przygotowac sobie pliczek cscope.files z lista plikow do zindeksowania, potem uruchomic: cscope -buvk. Ostatni krok do odpalenie vima, mozna spwrawdzic czy znalazl sobie baze cscope'a (:csc show), jesli nie to dodac (:csc add cscope :)

  12. redelek 28 stycznia 2009 o godz. 12:49 #

    Rewelacja, rewelacja.

    Więcej więcej chcemy więcej.

    Artykuł super pogratulować. Dziękuję bardzo się przydał.

  13. miras 1 lutego 2009 o godz. 17:03 #

    Tu coś dla miłosników railsów.
    http://www.akitaonrails.com/2009/1/4/rails-on-vim

  14. Telkontar 2 lutego 2009 o godz. 15:06 #

    Każdy lubi coś innego. Ja osobiście wychowałem się na produktach Redmond pokroju Word. Na uczelni zostałem zmuszony do użytkowania Vim. Powtarzam ZMUSZONY. Zgadzam się, że ten edytor posiada możliwości, że wielu ludzi go chwali, lubi i używa. Jednak dla mnie to zabytek. 100 razy szybciej wykonam wszystko w edytorze który normalnie obsługuje skróty klawiszowe. Nie chcę tą wypowiedzią nikogo przekonywać, mówić co jest lepsze a co gorsze. Wypowiadam tylko osobistą opinię. Dla mnie vim nie istnieje. Osobiście podziwiam ludzi, którzy z uporem maniaka go używają.

    • atavus 8 lutego 2009 o godz. 3:57 #

      co kto lubi :~

      btw, chcialbym zobaczyc jak wygladalo to 'zmuszanie' do vima ;p

      • Telkontar 15 lutego 2009 o godz. 15:03 #

        Wyglądało to w ten sposób, ze nie pozwolona nam korzystać z niczego innego. Tylko konsola i Vim. Nawet o wiele wygodniejszy Nano był zakazany (poza tym nie skonfigurowany do kolorowania składni itp).

        Osobiście w domu na co dzień używam Geany, choć nie jest idealny to o wiele bardziej mi pasuje niż Vim.

        Ale jak to powiedziałeś: Co kto lubi :D

        • mgol 18 lutego 2009 o godz. 16:24 #

          Nano jest tylko na pozór wygodniejszy. Spróbuj mi tam zrobić wyszukiwanie z zamienianiem rozpoznanych przez odpowiednie wyrażenie regularne kawałków tekstu w pierwszej połowie pliku…

          Rzekoma wygoda wynika z tego, że w nano się od razu pisze, a na dole są wypisane proste skróty klawiszowe. Funkcjonalność tego rozwiązania jest jednak bliska zeru.

          P.S. Używałem kiedyś nano, gdy musiałem zrobić coś w konsoli. Ale w końcu odpaliłem wspomniany vimtutor i do dzisiaj się zastanawiam, czemu tak późno. :D

  15. mgol 18 lutego 2009 o godz. 16:29 #

    @Autor:

    Zamiast:

    <code>locate vimrc | grep vim | grep '.vim$'</code>

    wystarczy:

    <code>locate vimrc | grep '.vim$'</code>

    to drugie dopasowanie jest zawężeniem pierwszego. :)

  16. Ke? 31 marca 2009 o godz. 21:30 #

    Niestety u mnie przy używaniu :Tlist wyskakuje:

    Wykryto błąd podczas przetwarzania function 18_Tlist_Refresh..Tlist_Update_File..18_Tlist_Window_Refr

    esh_File..18_Tlist_Process_File:

    wiersz 83:

    E484: Nie mogę otworzyć pliku /tmp/v541253/1

    I lista tagów jest pusta.

    Cóż mogę zrobić w takiej sytuacji?

  17. lucas 9 stycznia 2011 o godz. 0:55 #

    Do pliku .vimrc trzeba dopisać jeszcze linie:

    let Tlist_Ctags_Cmd = '/usr/local/bin/ctags'

  18. sony 9 marca 2012 o godz. 18:45 #

    sony@debian:~$ wget http://www.vim.org/scripts/download_\
    –2012-03-09 17:47:29– http://www.vim.org/scripts/download_%5C
    Translacja http://www.vim.org... 216.34.181.97
    Łączenie się z http://www.vim.org|216.34.181.97|:80... połączono.
    Żądanie HTTP wysłano, oczekiwanie na odpowiedź… 404 Not Found
    2012-03-09 17:47:29 BŁĄD 404: Not Found.

  19. Paweł 23 marca 2012 o godz. 22:13 #

    Obawiam się że sporo pluginów może już nie działać.

(wymagane)
URI
Uwaga! Niektóre komentarze, m.in. te dodane przez niezalogowanych i nowych użytkowników, są ręcznie moderowane. Jeśli Twój komentarz nie ukaże się od razu, nie dodawaj go ponownie, tylko cierpliwie poczekaj na akceptację.

Literówki najlepiej zgłaszać jabberem: michuk@jakilinux.org lub kocio@jabber.org!

W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="jaklinux.org">Linux dla każdego</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <del>tekst przekreślony</del>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.