Patrząc na te wszystkie screencasty pokakzujące programowanie w ruby on rails zauważyć można że, wsród edytorów prym wiedzie Textmate. Czy jest on jednak aż tak produktywny do wytwarzania aplikacji? Sprawdźmy.

Najpierw przeanalizujmy jakie narzędzia mamy do wyboru:

Nie znam innych narzędzi, które są wykorzystywane do tworzenia aplikacji w rails wśród moich znajomych.

Pierwsze trzy to typowe IDE z podpowiadaniem składni, debuggerami i innymi dodatkami. Można powiedzieć, że jest to wyższa klasa niż pozostałe. Nie będę porównywał który z nich jest lepszy. Napiszę tylko, że z pośród tych wszystkich zalet, które ze sobą niosą, mają jedną ale bardzo znaczną wadę. Nie wspierają wersji języka, czy też frameworku, dopóki autor edytora go nie zaimplementuje. Więc czasami musimy walczyć walkę z narzędziem a nie z samym frameworkiem.

Spójrzmy na pozostałem 4 edytory. Zacznijmy od ostatniego: redcar – dość ciekawa propozycja napisana w jruby, czyli międzyplatformowa. Niestety nadal jest w fazie alfa więc na razie nie ma co sobie głowy zawracać tym produktem. Poza tym jako jeden z głównych Feature’s wymieniana jest zgodność z bundlami Textmate’a. Czy to aż taka zaleta?

Pozostają 3. Znam Zarówno Emacsa jak i Vima, jednak ten drugi jest popularniejszy. Mają zbliżone funkcjonalności jednak Vima łatwiej rozszerzać o własne funkcje. Poza tym emacs ma 2,9mln wyników w google a Vim ponad 11mln – więc emacsem nie będziemy się zajmować.

Doszedłem do etapu, który sowicie zaplanowałem, porównanie Vim z Textmate. Sprawdźmy ze strony Textmate Główne cechy tego edytora i porównajmy go do VIma.:

Ability to Search and Replace in a Project

Sic! bzdura aby wypisywać coś takiego jako feature, nawet windowsowy notatnik coś takiego potrafi. Aby nie było – Vim także potrafi. Potrafi szukać w górę, w dół, wyszukuje zgodnie z regexpem.

Auto-Indent for Common Actions Like Pasting Text

Hm, ciekawe, w Vim proszę ustawić :set autoindent i po sprawie mamy to samo.

Auto-Pairing of Brackets and Other Characters

Dla przypomnienia z nauki Vima: % - przenosi na parujący znak. Czyli vim też to ma.

Clipboard History

Ha! Vim nawet ma tzw. nazwane rejestry gdzie możemy decydować do którego rejestru kopiujemy i z którego wklejamy. Historię też ma.

Column Selections and Column Typing

Mamy, mamy. Podstawowy vi tego nie ma, ale Vim wprowadza tryb wizualny, gdzie możemy zaznaczać tekst blokowo i pisać w kilku linijkach to samo.

Completion of Words from Current Document

Vim ma nie tylko autouzupełnianie z obecnego dokumentu, ale i z zewnętrznych, z historii, wklejanie całych linijek z obecnego dokumentu i trochę więcej.

Declarative Language Grammars for Graceful Mixing and Hacking

Vim potrafi sam rozpoznać, który syntax wykorzystywać po rozszerzeniu pliku. Dodatkowo, można w pliku konfiguracyjnym włączać lub wyłączać odpowiednie pluginy przy edycji poszczególnych plików.

Dynamic Outline for Working With Multiple Files

No dobra, Textmate w wbudowany drawer, w którym widać całe drzewko plików projektu. Vim tego nie ma, ale ma plugin NerdTree, który dodaje tą funkcjonalność.

Expand Trigger Words to Code Blocks With Tab-able Placeholders

Vim też tak ma, co prawda wbudowana werjsa :ab jest dośc uboga, ale pluginami takimi jak „snipety” można już dużo zrobić.

File Tabs when Working With Projects

Vim has tabs. Dodatkowo może obszar zakładki podzielić na kilka części (bufery) i w każdej z nich edytować inny plik. Jeżeli zakładek i buferów zabraknie można otworzyć nowe okno.

Foldable Code Blocks

Vim posiada foldowanie zależne od rodzaju tekstu(np. kod), od wcięć, od markerów, różnic w pliku lub ustawiane ręcznie.

Function Pop-up for Quick Overview and Navigation

No dobra nie znalazłem popapu dla wyjaśnienia funkcji, ale korzystając z systemowej funkcji unixowej funkcji ctags możemy otworzyć wyjaśnienie funkcji w nowym buferze.

Plug-able Through Your Favorite Scripting Language

Vim has looooooots of plugins. Nie potrafię nawet obejżeć i przetestować ich wszystkich. Vim udostępnił wspaniałą architekturę do budowania pluginów i powstaje ich cała masa.

Recordable Macros With No Programming Required

Nie korzystałem z makr w Vimie, ale są.

Regular Expression Search and Replace (grep)

Wspomniano wyżej, jest coś takego w Vimi’e

Run Shell Commands from Within a Document

Może to zabrzmi dziwnie, ale Vim także to potrafi. Potrafi wykonać komendę, przełączyć się na chwilę do shella , może wkleić wynik shellowej komendy do dokumentu, a nawet potrafi zaznaczony fragment tekstu wrzucić jako argument komendy shellowej i wkleić zwrócony wynik.

Support for Darcs, Perforce, SVK, and Subversion

Vim nie ma wbudowanej obsługi SCM, ale można to rozbudować pluginami albo bezpośrednio uruchamianymi komendami shella.

Support for More Than 50 Languages

Vim posiada prawie 3200 pluginów wierzę, że wspiera więcej niż 50 języków.

Switch Between Files in Projects With a Minimum of Key Strokes

Z pluginem rails.vim łatwo się przełączać pomiędzy Modelem, Helperem, Controllerem, Widokiem i plikami testów. bardzo łatwo.

Themable Syntax Highlight Colors

Wow! bomba, w sumie jak by poszukać, to Vim też ma kilka schematów kolorów.

Visual Bookmarks to Jump Between Places in a File

W vimie nazywają się to Tagi.

Works As External Editor for (s)ftp Programs

Też tak potrafię, edycja przez sftp, scp. W którymś z kolejnym artykułów napiszę jak to zrobić.

Works Together With Xcode and Can Build Xcode Projects

Who cares about it! Nie ma to jak dobra reklama XCode. IMO XCode jest wyśmienitym edytorem Objective-C, do innych języków też się nadaje ale słabiej. Wg mnie to żadna zaleta, że potrafi budować projekty XCode przy odrobinie zaparcie idzie coś takiego zrobić applescriptem, pytanie tylko : Po co?

Co więcej?
Textmate pracuje tylko w systemie MacOS, Vim praktycznie na każdej platformie.
Textmate jest płatny i nie jest wspierany od dwóch lat.
Textmate ma bundle, które ułatwiają edytować kod. Vim ma snipety, które robią to samo.
Textmate jest ładny. Vim dla niektórych też. :)
„Jeżeli mam Textmate’a to znaczy że mam Mac’a i jestem cool”. Też mam Maca, a Textmate’a wywaliłem po dwóch dniach użytkowania.

Reasumując.

Wg mnie Textmate nie ma nic, co może mieć Vim. Za tym drugim stoi także dość spore community. I długie doświadczenie w realizacji projektu. Vim ma jeszcze jedną zaletę, jest wszędzie. Jeżeli jesteśmy nie tylko programistami ale trochę administratorami, to gdziekolwiek sie nie zalogujemy to vim prawdopodobnie tam będzie. Użytkownicy Textmate’a muszą się w takich sytuacjach uczyć drugiego edytora, aby poprawić zdalnie plik. Vim’owcy nie muszą.

Zatem kiedy możemy chcieć programować w Textmate:

  • …myślę…
  • …myślę…
  • gdy… chcemy nakręcić screencasta i chcemy aby wyglądał jak tysiąc innych(musimy wtedy także zmienić tapetę na domyślną)
  • gdy wchodzimy do zespołu gdzie inni z tego edytora korzystają.
  • gdy mamy ochotę wydać 50Euro za coś co mamy za darmo od 1976 roku.

W innych przypadkach zalecam korzystanie z Vima. A jak skutecznie z niego korzystać przedstawię w jednym z kolejnych artykułów.

PS. Bez urazy ale jakbym miał wydawać tyle kasy to wolałbym dołożyć 42Euro i kupić rubymine’a. Niby prawie dwa razy więcej kasy, ale 5 razy więcej możliwości.
.