Jakie konkretne korzyści z produktywności zapewnia Vim / Emacs w porównaniu z edytorami tekstu GUI?

To nie jest troll, flamebait czy coś w tym stylu. Od kilku miesięcy używam Vim jako mojego ulubionego edytora konsolowego (do edycji plików konfiguracyjnych w moim terminalu), ale nie sądzę, żebym mógł znieść to dla mojej normalnej, codziennej pracy pisania aplikacji internetowych, którą robię za pomocą edytora tekstu GUI (który nie jest ważny).

Czuję, że mój edytor tekstu GUI może zrobić wszystko, czego potrzebuję do mojej pracy. Ma przyzwoite wyszukiwanie / zamiana na automatyczne uzupełnianie historii dla obu. Posiada podświetlanie składni, numerowanie linii, interfejs z kartami, łatwe kopiowanie i wklejanie itp. Jedyną rzeczą, której brakuje mojemu obecnemu edytorowi, jest dopasowanie wyrażeń regularnych, ale istnieje wiele edytorów tekstu GUI, które wykonają wyszukiwanie/zastępowanie regex.

Biorąc pod uwagę to, co właśnie powiedziałem, jakie korzyści produktywności ma vim (a nawet Emacs) nad edytorem tekstu GUI, pomijając fakt, że jest zainstalowany na każdym komputerze. Chciałbym konkretnych zadań, które są lepiej / szybciej na Vim/Emacs lub które są po prostu niemożliwe z istniejącymi edytorami tekstu GUI.

Author: Luke Girvin, 2009-07-06

20 answers

Dla Vim:

  • Vim ma lepszą integrację z innymi narzędziami (polecenia powłoki, Skrypty, Kompilatory, systemy kontroli wersji, ctags, itp.) niż większość redaktorów. Nawet coś prostego jak :.!, przekierowanie wyjścia polecenia do bufora, jest czymś, czego nie znajdziesz w większości edytorów GUI.

  • Interfejs z kartami nie jest tak przyjemny jak interfejs" okienkowy", który daje Vim/Emacs. Możesz zobaczyć dwa lub więcej plików jednocześnie obok siebie. Im więcej możesz zobaczyć na ekranie, tym bardziej uwolnisz swój umysł do myślenia o swoim problemie, a nie do psychicznego księgowania nazw zmiennych i podpisów funkcji.

  • Nie lekceważ potęgi wyrażeń regularnych Vima. Istnieje wiele rozszerzeń specyficznych dla Vima, które pasują do określonej kolumny, znaku, pozycji kursora, pewnych klas znaków (słowa kluczowe, identyfikatory) itp.

  • Zintegrowane diff i grep (niezależne od platformy, więc nie musisz pobierać i uczyć się nowe narzędzie za każdym razem, gdy zmieniasz Komputery).

  • Visual block mode (edycja kolumn) to coś, czego wielu edytorom brakuje, ale bez czego nie mogę żyć. Zszokowałem i zachwyciłem ludzi w pracy, używając tylko tego, dokonując edycji w kilku naciśnięciach klawiszy, które w przeciwnym razie ktoś spędziłby dziesięć minut robiąc ręcznie.

  • Wiele rejestrów kopiowania/wklejania. Gdy masz tylko jeden, kończysz przechodząc przez dziwne kontury, aby uniknąć zatrzaskiwania schowka. Nie powinieneś muszę.

  • System cofania/ponawiania Vima jest nie do pobicia. Wpisz coś, Cofnij, wpisz coś innego, a nadal możesz odzyskać pierwszą rzecz, którą wpisałeś, ponieważ Vim używa drzewa Cofnij, a nie stosu. W prawie każdym innym programie historia pierwszej rzeczy, którą wpisałeś, ginie w tej sytuacji.

  • Poruszanie się, kopiowanie, wklejanie i usuwanie tekstu jest szalenie szybkie w Vimie. Polecenia są proste, pojedyncze naciśnięcia klawiszy i możliwe do komponowania. Dodaj wszystkie gdy wykonasz staranne, pracochłonne podświetlenie myszki i Ctrl-X, a następnie zastąp je wszystkimi da( (Usuń zestaw pasujących parenów i wszystko w nich). To oszczędza więcej czasu niż myślisz

  • Małe rzeczy, jak *, Aby wyszukać słowo pod kursorem, lub ., aby powtórzyć polecenie, lub %, aby odbijać się między paren otwarcia i zamknięcia. Zbyt wiele z nich, by je wymienić.

  • Wbudowany język skryptowy i potężna zdolność mapowania kluczy i makr edytor można więc rozbudowywać w dowolny sposób. Mnóstwo skryptów już napisanych i do pobrania.

Jeśli przyjrzysz się uważnie, przekonasz się, że nawet funkcje, które mają inni redaktorzy, Vim często radzi sobie lepiej. Wszystkie edytory mają podświetlanie składni, ale Vim ma plik składni dla prawie każdego formatu pliku pod słońcem, często z wieloma opcjami konfiguracji, a to Brud-proste do napisania własnego. Wiele edytorów obsługuje różne kodowania plików OK, ale Vim daje bardzo konkretne i niezawodne sposoby ustawiania kodowania plików i konwersji między nimi. Pierwszą rzeczą, która zaimponowała mi w Vimie, jest to, jak doskonale radzi sobie z opcjami wcięcia kart/przestrzeni i linebreaksami Unix/DOS w porównaniu do innych edytorów, z którymi miałem wtedy problemy.

Wiele z tych punktów odnosi się równie dobrze do Emacsa (w inny, ale zwykle równie potężny sposób).

 109
Author: Brian Carper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 19:04:13

(vim to moja trucizna; jestem pewien, że emacs oferuje podobne korzyści)

Największy zysk: nie trzeba dotykać myszy.

Dla mnie najbardziej poręczną rzeczą jest skok do przodu (lub tuż przed) określonej litery lub kombinacji liter, lub skok do tyłu, z kilkoma naciśnięciami klawiszy. Skok do przodu o ten sam warunek dwa razy, lub dziesięć razy, jest po prostu kwestią prefiksu z liczbą.

Jeśli musisz powtórzyć edycję, wskakuj do tego miejsca (2-3 naciśnięcia klawiszy), a następnie naciśnij "." aby powtórzyć ostatnią edycję. Przeskakiwanie do przodu (lub do tyłu) jest łatwiejsze - jedno naciśnięcie klawisza - jeśli jest to ten sam warunek wyszukiwania.

Zasadniczo, przy niewielkim czasie realizacji, możesz nauczyć się dziesięciu lub dwudziestu skrótów klawiaturowych, które oznaczają, że nie musisz przesuwać ręki, aby chwycić mysz. Daje to trzy lub cztery razy więcej ruchów/poleceń edycji, niż gdybyś musiał chwytać mysz.

Po kilku dniach, za każdym razem, gdy będziesz musiał dotrzeć do dla myszy (lub naciśnij <Down> 15 razy), gdy jesteś w edytorze GUI.

 35
Author: Jeremy Smyth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 18:11:02

Zawsze zastanawiałam się, dlaczego mało osób gaga nad Vimem. Zobacz wideo użytkownika vim power w akcji:

Https://www.youtube.com/watch?v=FcpQ7koECgk

Jeśli twój obecny redaktor może robić to, co robi, nie ma potrzeby przełączania się! :)

Przeczytaj również to http://www.viemu.com/a-why-vi-vim.html

Po obejrzeniu filmu i przeczytaniu tego artykułu, nie miałem wyboru, jak tylko zacząć uczyć się Vima. Minął prawie rok odkąd przełączyłem się na Vima i nie wyobrażam sobie używania niczego innego.

 33
Author: SolutionYogi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-28 16:39:32

Myślę, że jedną z prawdziwych mocy dedykowanego edytora tekstu jest edycja makr. Powtarzanie jest bolesne dla wielu programistów, a pisanie odpowiednich makr może być z pogranicza rozrywki. Jeśli nie robisz wszystkiego za pomocą klawiatury, tworzenie makr będzie wymagało dodatkowego zestawu poleceń, a nie korzystania z tych, których już używasz.

 23
Author: Stefan Mai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 18:11:23

Jestem na wpół Kompetentny z VI klawiszami, ale ogólnie wolę Emacsa. Powodem, dla którego edytory te mają tak gorliwych zwolenników, jest to, że model edycji, który zapewniają, jest bardziej wydajny niż nowsze systemy, dlatego dostarczanie "skrótów klawiszowych vi" lub "skrótów klawiszowych emacs"nie wystarczy, nawet jeśli nie używasz żadnych funkcji rozszerzeń lub dostosowań dla Emacsa lub vi.]}

Będę mówił tylko o modelu Emacsa, bo najlepiej go Rozumiem. Wspólny dziś model edycji tekstu obejmuje bufor tekstu, w którym można wstawiać, usuwać, zaznaczać i wycinać/kopiować/wklejać do schowka systemowego.

Bufory Emacs, oczywiście, mogą wspierać te operacje. Oprócz śledzenia pozycji kursora dla każdego okna, w którym są widoczne, śledzą również wykonane w nich" znaki". Tekst pomiędzy "punktem" (pozycją kursora) a "znacznikiem" nazywa się" region " i w przybliżeniu odpowiada zaznaczeniu w edytorach głównego nurtu.

Różnica polega na tym, że Emacs trzyma ścieżka ostatnich kilku miejsc, w których znak został ustawiony w pierścieniu znaczników, i można do nich wrócić za pomocą naciśnięcia klawisza (lub dwóch, w zależności od konfiguracji). Uważam to za bardzo przydatne, zwłaszcza, że wiele poleceń Emacsa, które zmieniają lokalizację w buforze, ustawia znak w starej lokalizacji. Przykładem może być edytowanie modułu Pythona i dodanie instrukcji import do górnej części pliku. Naciśnięcie klawisza do przejścia do górnej części bufora (Alt-

Drugą (i bardziej znaną) różnicą Emacsa jest kill ring. Większość naciśnięć klawiszy do usuwania tekstu z bufora zapisuje tekst do pierścienia zabijania, który można następnie przywołać za pomocą polecenia "yank" (Ctrl-y). Istotną cechą jest to, że kolejne polecenia yank Odzyskaj starszy zabity tekst. Możesz więc zabić kilka sekcji tekstu w rzędzie, a następnie pobrać je w kolejności. Możesz również przełączać się przez pierścień zabijania z Alt-y po yank, usuwając pobrany tekst i wstawiając następny wpis w ringu.

Emacs miał te funkcje w 1978 roku. Jedynym ważnym systemem, który je zaadoptował w jakimkolwiek stopniu, jest NeXTStep (a obecnie dziedziczony przez Cocoa). Inne narzędzia zapewniają więcej funkcji do konkretnych zadań, mogą być rozszerzane w językach znacznie łatwiejszych w użyciu niż Emacs Lisp i mają ładniejsze interfejsy wizualne... ale Emacs pozostaje lepszy w edycji tekstu. Dlatego, gdy już wiesz, jak go używać, tak trudno jest zrezygnować.

 15
Author: Allen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-07 14:44:24

Nie jest to do końca konkretne zadanie, ale dla osób, które nawet mogą być cierpiących na RSI, fakt, że twoje ręce nigdy nie opuszczają klawiatury w Vimie jest prawie bezcenny. W pracy kończyłem na lefty na mysz, ponieważ pozwalała mi ona mniej poruszać ręką, aby sięgnąć po mysz (Moja klawiatura w domu nie ma klawiatury numerycznej, więc mogę ją trzymać po prawej stronie).

Jeszcze jedną małą zaletą było to, że IIRC, oryginalny vi został zaprojektowany, aby przyspieszyć edycję plików na strasznie powolne zdalne połączenie. Przyznaję, że nie dzieje się to dziś tak często, ale jeśli masz wolne połączenie, powodzenia w uruchomieniu edytora tekstu gui i jego responsywności.

 13
Author: Mark Rushakoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 18:07:55

Dla mnie wielkie rzeczy produktywności są

    Mogę zrobić prawie wszystko z klawiatury.
  • potężne makra.
  • w moim 20-letnim carreerze używającym 9 systemów operacyjnych podstawowe wiązania klawiatury nie uległy zmianie. Mogę wskoczyć na prawie każdy system i już znam się na edytorze.
  • prawie każda funkcja, jaką kiedykolwiek chciałbyś mieć w edytorze tekstu, została już dodana.
 13
Author: T.E.D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 18:16:23

Jedną z rzeczy, które ja naprawdę , jak w Vimie, jest komenda "repeater". Zasadniczo, naciskając . w trybie komend, powtarza ostatnią akcję. Jest to tylko jeden z przykładów naprawdę fajnych funkcji, których "programiści edytorzy tekstu" często nie mają.]}

 11
Author: thebrokencube,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 18:16:04

Z mojego doświadczenia wynika, że główne zyski produktywności, które zapewniają vim i emacs (sam jestem osobą vim, ale emacs jest na pewno podobny) to:

  • Możesz mieć te funkcje, które zapewniają nowoczesne IDE (takie jak cykle edycji-budowania-uruchamiania z jedną klawiaturą, wbudowana dokumentacja i uzupełnianie kart itp.), ale nie musisz . Wzrost produktywności? Widzisz tyle, ile chcesz. Z mojego doświadczenia wynika, że Idy nie uczyniły ludzi bardziej produktywnymi, również dlatego, że pokazali za dużo informacji (wszystkie rodzaje przeglądarek). Ten "dodatkowy kawałek mocy, kiedy go potrzebujesz - ale nie wcześniej" to niezły wzrost produktywności IMHO.

  • Edytory są bardzo popularne wśród programistów, co oznacza, że dostępne są ogromne repozytoria skryptów, książek i grup użytkowników.

  • Z mojego doświadczenia (mogę tu mówić tylko za Vima) przeciętny użytkownik Vima jest dość dobrym inżynierem oprogramowania. Nie wiem dlaczego tak jest (a może po prostu lucky), ale może ludzie, którzy przyjęli barierę przyzwyczajenia się do "starego" narzędzia, takiego jak emacs czy vim, mają odpowiednie poświęcenie(i kontakt z innymi ludźmi). Może to pośredni efekt tych edytorów, ale zadawanie się z innymi ludźmi vim (lub emacs) na np. ircu okazało się dość interesujące, ponieważ ci sami ludzie interesowali się również wszelkimi zagadnieniami inżynierii oprogramowania (lub informatyki). Ci redaktorzy wydają się przyciągać pewien rodzaj osobowości. :-)

 8
Author: Frerich Raabe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 20:00:15

"wzrost produktywności", który otrzymuję za używanie lekkiego klonu Emacsa dla małych programów, polega na tym, że uruchamia się jak smarowana Błyskawica. Zwykle mogę wybić szybki program testowy w C#, Zanim Visual Studio skończyłoby Ładowanie rozwiązania "piaskownicy".

Oczywiście, mógłbym po prostu zostawić Visual Studio otwarte (lub Inny VS open, jeśli w tym czasie w nim pracuję), ale potem zostałoby zamienione, gdybym zostawił go bezczynnie na jakiś czas itp.

Do wszystkiego o dowolnej wielkości - lub jeśli nie znam API używam dość dobrze-IDE jest drogą naprzód, IMO.

 7
Author: Jon Skeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 18:09:46

Używam gvim Dla windows, więc technicznie jest to edytor tekstu GUI, ale jest to vim..

Dla zwiększenia produktywności znajduję:

  1. nigdy nie muszę używać myszki, dlatego jestem szybszy.
  2. Dzięki temu, że klawisze vim-a i ruchy myszy są szybsze, można korzystać z funkcji wyszukiwania, zastępowania, kopiowania/wklejania itp.]}
  3. Jak wspomniano w poprzednich uwagach, RSI są znacznie zmniejszone. Moje nadgarstki podziękowały mi, odkąd przeniosłam się do Vima.
  4. to lekki i szybki
 5
Author: codefly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 18:12:28

Wiesz, dla vi myślę, że sprowadza się to do posiadania trybu insert i command. Chociaż może się to wydawać cofnięciem do czasu, gdy nie można polegać na kursorze lub specjalnych klawiszach, to tak naprawdę oznacza to, że wiele potężnych poleceń maniuplacji ruchu i tekstu to minimalna liczba naciśnięć klawiszy. Produktywne kodowanie nie polega na wprowadzaniu tekstu zbiorczego (domyślnie w "nowoczesnych" edytorach), ale na serii tekstu zbiorczego, a następnie znacznych drobnych poprawek i jeszcze większych okresów przeglądania.

This came dla mnie osobiście używam vi przez sieć kampusu z dużym opóźnieniem. Możesz łatwo uzyskać 10 lub 15 znaków przed odpowiedzią. Dzięki vi mogłem wygodnie przewidzieć, gdzie te polecenia mnie opuszczą i być w stanie pracować z niemal normalnymi prędkościami. Ta pokręcona wiedza jest ciągłą korzyścią w normalnych warunkach - mniejsza wizualna siła umysłu dedykowana stałemu graficznemu przekazowi zwrotnemu.

Popularne akceleratory wyszukiwania * i # word świetnie nadają się do przerzucania kodu. Oraz % dla dopasowania nawiasu jest niezwykle przydatne. Jasne, w porównaniu do ctl-] wydaje się mało, ale połowa naciśnięć klawiszy się sumuje.

Osobiście używam winvi, które dodaje kilka dużych rzeczy, które jestem pewien, że vim ma również. Szybki skok w tryb hex rozwiązuje wiele problemów z tekstem "co się do cholery dzieje". A całkowicie elastyczna obsługa zakończeń linii jest darem niebios, który stał się oczekiwaną funkcją dla edytora tekstu. Wreszcie może otworzyć dowolny plik bez względu na zawartość. Oznacza to elitarną umiejętność hakerską pierwszego rzędu.

Pod Unixem możesz szybko przechwytywać dane wyjściowe programu lub nawet filtrować sekcje pliku za pomocą zewnętrznych poleceń. Niezwykle potężna, ale myślę, że niewykorzystana funkcja.

 4
Author: George Phillips,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 19:07:45

Używam Vima dość często. Dla mnie jednak nie zastępuje UltraEdit. Ponieważ wiele pozytywów zostało wymienionych, myślę, że pójdę pod prąd i wymienię pewne irytacje z Vimem.

  • słaba obsługa FTP. "Sortuję" wiele stron, a Brak możliwości łatwego przeglądania i edycji plików na zdalnym serwerze FTP jest dla mnie dużym niedoborem. NWRead jest nie wystarczająco dobry.
  • dziwność konsoli odziedziczona po ogólnych problemach z terminalami, które wydają się nękać Linuksa. I zwykle używaj PuTTY , aby połączyć się z moim Linuksem (z systemem Ubuntu), a z jakiegoś powodu klawisze strzałek mapują do A/B/C / D w trybie wstawiania (i problemy z obsługą całego koloru). W gVim, ctrl-tab można łatwo zmapować do "bn", ale nie w trybie konsoli, takie problemy obfitują.
  • opcje wyszukiwania / zamiany są bardzo słabe, interfejs mądry. Konieczność wpisania całości w jedną linię, to po prostu za mało. Czuję, że znacznie bardziej rozbudowany dialog w say UltraEdit daje mi znacznie więcej mocy w koniec, nawet jeśli rzeczywista obsługa wyrażeń regularnych może być znacznie słabsza.
  • zbyt silne poleganie na układach klawiatury USA. Wiele klawiszy, które są używane do podstawowych funkcji, takich jak`, nie drukuje na moim duńskim układzie klawiatury (i znajduje się arkwardly, to samo z $ i wiele innych). Sprawia, że korzystanie z niektórych funkcji jest dość niezręczne.
 3
Author: Svend,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-26 20:12:37

Remote Desktop pokazuje szybko tylko natywną aplikację Windows. Próbowaliśmy użyć Eclipse do rozwoju pod Uniksem. I wiesz co? To nawet nie było możliwe.

Drugim powodem jest to, że możemy rozszerzyć nasze Vim-y i Emacs, aby wykonywać wszystkie zadania specyficzne dla projektu Z DB browsing w specjalny sposób, aby wyróżnić i automatycznie wypełnić nasz własny język meta.

 2
Author: Mykola Golubyev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-07-06 18:12:33

Powiedziałbym, że jedną z dużych zalet jest rozszerzalność edytora vim. Jeśli chcę coś do pracy z CVS mogę wziąć wtyczkę CVSMenu i dodać go do mojego edytora, aby uzyskać tę funkcjonalność.

To samo z podświetleniem składni, zachowaniem z konkretnymi plikami itp. W Vimie można dopasować różne rzeczy.

Nie jestem pewien, czy można to zrobić tak łatwo w edytorach typu GUI.

 2
Author: Rob Wells,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-08 05:41:13

Nagrywanie i odtwarzanie w VIM jest bezkonkurencyjnie niesamowite, co jest bardzo mało prawdopodobne, aby znaleźć w narzędziach opartych na GUI.

Również auto increment/decrement daje możliwości generowania danych bez pisania programów dla niego.

 1
Author: peeyush,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-12 08:01:18

Od lat jestem bezlitosnym użytkownikiem Emacsa. Ale nigdy się w to nie wdałem. Potem zacząłem uczyć się Clojure (mój pierwszy Lisp) i odkryłem ParEdit.

I to rozwaliło mój umysł.

(zobacz tutaj kilka przykładów: https://www.youtube.com/watch?v=D6h5dFyyUX0 )

Lisp + ParEdit jest najbardziej niesamowitym doświadczeniem edytorskim, jakie kiedykolwiek miałem. Nic więcej nie jest blisko. Lisp nie jest już niewygodnym językiem do pisania, zmuszając mnie do martwienia się o równoważenie wielu irytujących głupich w nawiasach. Dzięki ParEdit, spójna struktura Lispu staje się ogromnym bonusem do pracy, ponieważ te same transformacje drzew-slurping, barfing, Split i joining - działają wszędzie, zarówno w strukturach kontrolnych, jak i w strukturach danych. A ParEdit nie pozwala mi popełniać głupich błędów. Popełnianie błędów składniowych staje się prawie niemożliwe.

I w przeciwieństwie do Eclipse, to nie jest jakieś pracochłonne sprawdzanie w czasie rzeczywistym, które zawsze działa w tle, wypalając mój procesor. Koszty It nic ... ParEdit po prostu dokonuje prawidłowej zmiany strukturalnej, gdy o nią proszę.

(Ogólnie Emacs jest tak szybki, jak trzeba. W przeciwieństwie do Eclipse, które jest jak pisanie w kleju.)

Następną rzeczą, którą odkryłem był Yasnippet ( http://emacswiki.org/emacs/Yasnippet ). Jeszcze raz, nie używałem wcześniej czegoś takiego. Nie tylko makro do dodawania boilerplate, ale dynamiczny, nawigacyjny formularz.

Ostatnią przyjemnością jest uświadomienie sobie, że jeśli chcę to rozszerzyć rzecz sama w sobie, aby mieć więcej tych narzędzi produktywności na wysokim poziomie, mam moc samego Lispu do pracy.

 1
Author: interstar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-06 04:08:04

(moje tło to kilka lat z Visual Studio i innymi Idami, potem 15 lat Vim, a Ostatnie 6 miesięcy z Emacsem.)

Długowieczność - Vim / Emacs są FOSS , i istnieją od dziesięcioleci. Ich użycie nie będzie spadek, ani też ich cechy nie będą się zbytnio łamać/znikać/zmieniać, możesz więc polegać na budowaniu całego zestawu narzędzi kariery wokół opanowanie tylko jednego edytora.

Zdalny / wszechobecny dostęp w terminale - chociaż oba mają dobrze systemów do edycji plików zdalnych, można je również zainstalować na każdy system, do którego się logujesz.

REPL-driven development - oba mają tryby "śluzu" w różnych formach które integrują każdy rodzaj REPL, z którym pracujesz. Np. mam nigdy nie spotkałem się z tak potężnym rozwojem iteracyjnym, jaki zapewniał przez cydr .

Linting - jakikolwiek język używasz prawdopodobnie ma jakieś linting narzędzia, czy wbudowany w kompilatora lub narzędzia zewnętrznego. Integrują się one bezproblemowo z Emacs/Vim, pokazujący błędy w kodowaniu w czasie zbliżonym do rzeczywistego.

Gramatyki poleceń mnemonicznych - chociaż oba zajmują trochę czasu, aby dowiedz się, te edytory wyposażone są w słynne inteligentne systemy dostępu - a nawet zapamiętywanie-tysiące komend z kilkoma naciśnięciami klawiszy i kombinacje klawiszy. Mogą one całkowicie wyeliminować potrzebę używania myszy, jeśli jesteś taka skłonna.

Wbudowana pomoc systemy - dokumentacja offline wielu Języki i ich interfejsy API są często spotykane w tych edytorach, i jest dostępny w podobnie prosty sposób do rozległych i kompleksowe systemy pomocy, które oferują. Autouzupełnianie zostało dodano dla większości popularnych języków. Dodatkowo istnieje bogactwo pomoc w dyskusji na praktycznie każdy temat pomocy.

Nawigacja - tagi, paredit-likes, marks, windowing, tabs, vim-rails" skoki , i wiele innych wbudowane.

Menedżery pakietów / repozytoria - Emacs ma kilka (elpa, melpa, Marmolada) i Vim też są dobre (vundle, patogen, etc ). Nie znam żadnych społeczności wokół IDEs, które oferują cokolwiek porównywalne do tych. Widzę ponad 5000 paczek z package-list-packages.

Poza samą edycją - Emacs idzie tu najdalej z możliwością Czytaj wiadomości, Przeglądaj Internet, Zarządzaj pocztą e-mail, edytuj arkusze kalkulacyjne, twórz prezentacje i organizowanie cokolwiek.

Zintegrowane Wszystko inne - debuggery, synchronizacja przeglądarki, kompilacja, powłoki, testowanie.

Nieskończenie konfigurowalny - Elisp jest bardzo potężnym językiem dla Rozszerzanie / modyfikowanie Emacsa. Viml jest odpowiednikiem Vima. Są książki napisane na obu. Dostosuj motywy kolorów i zachowania do swojej radości!

 1
Author: Micah Elliott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-06 23:04:28

Jedną z zalet wszystkich edytorów opartych na konsoli nad edytorami GUI jest to, że mogą być uruchamiane w multipleksorze terminali, takim jak screen lub tmux. Dlaczego to jest dobre?

  • szybsze jest przełączanie się z jednej konsoli terminalowej na inną niż przełączanie się z jednej konsoli GUI na drugą za pomocą myszy lub nawet za pomocą alt-tab. Dzieje się tak dlatego, że Konsole mogą być nazwane i przełączane przez wpisanie kilku znaków nazwy.
  • Jeśli edytor sesji są w konsolach terminala multipleksora, można uzyskać do nich dostęp z dowolnego komputera. Jeśli muszę wykonać jakąś pracę w domu, mogę ssh do mojego pudełka, podłączyć już uruchomiony terminal multipleksor do mojej sesji ssh i być dokładnie tam, gdzie skończyłem, gdy wyszedłem z pracy.
 0
Author: Wayne Conrad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-29 21:25:45

Ponieważ vim / emacs są często używane przez programistów i jako użytkownik C # od 2003 roku, z tego nastawienia pov jest sprawiedliwe, aby zrobić to inaczej niesprawiedliwe porównanie (innym może być VS C++ z Visual Assist X vs C++ w vim/emacs):

Dla C # i Visual Studio:

  1. Właśnie policzyłem ilość naciśnięć klawiszy dla tej linii:

        public List<string> Names = new List<string>();
    //  3      3    3      1111111111111            211   =3+3+3+8+5+2+1+1 = 26 keys strokes + 3 uses of Shift while typing the line above in VS C# 2013 vs 47 key strokes for non-IntelliSense IDE's
    //                              (IntelliSense offers the List<string> because that's what you're likely after here but you can type something else if you want)
    // https://channel9.msdn.com/Blogs/Seth-Juarez/Anders-Hejlsberg-on-Modern-Compiler-Construction explains on how this is impl. for C#. In C++ I've heard of 3rd party VS plugin that improves or replaces the VS C++ auto-complete
    
  2. Czytałem o funkcji emacs do skakania w kodzie. Nie sądzę, że ma taką funkcję. Ma jednak podobną funkcję. Oto minusem VS. jest wiele małych funkcji, ale z czasem przestają działać. Ostatnio sprawdzałem, że funkcja skoku nie działa, ale to było kilka lat temu. VS wprowadziło nową graficzną funkcję skoku, której używałem zamiast tego. Wymaga myszki lub dotyku.

  3. Tutaj wygrywa emacs / vi. Jeśli musisz dużo skakać w kodzie, funkcje VS dla tego albo nie istnieją lub nie zostały wystarczająco Przetestowane.

Problem z nawigacją GUI opartą na myszach jest że

A) podobnie jak siedzenie w bardzo statycznej pozycji, może źle, jeśli tak, myszki mają tendencję do tego, aby palce były również w statycznej pozycji. Mój ból nadgarstka zniknął ze zmianą na trackball. Po raz pierwszy próbowałem myszy pionowej, ale nie zrobił nic dla problemu.

B) moja idealna klawiatura miałaby 2 rzędy klawiszy funkcyjnych, bez numpada, więc mógłbym umieścić trackball bliżej, dzięki czemu odległość skoku jest bardziej znośna.

Ostatecznie jednak, jeśli chcesz przeskoczyć między kilkoma konkretnymi miejscami, to oczywiste, że "mark ring" jest bardziej skuteczny. VS ma coś w tym stylu ... ostatnio go używałem, po prostu nie działał niezawodnie...

C) i prawdopodobnie jest mnóstwo małych funkcji, które łamią się z każdym wydaniem, więc jest to minusem VS.

RozwiÄ ... zanie tego "zamkniÄ ™ tego ĹşrĂłdĹ 'a": zapisanie caĹ 'ego VS w C#, a nastÄ ™ pnie Zezwolenie na modyfikowanie/edytowanie skompilowanego kodu (w czasie wykonywania, zapisywanie zmian jako patch, ktĂłry zostanie opcjonalnie wczytany przy nastÄ ™ pnym uruchomieniu) bez zwalniania ĹşrĂłdĹ' a. To może być wykonane przez dekompilator wyjście kodu, jak to było podczas wchodzenia. 180 stopni od tego, jak działają natywne Kompilatory. Binarny następnie staje się kodem źródłowym i wykonywalnym zamiast tego bałaganu .pliki cs i .pliki exe itp. Istnieje 3rd party narzędzia, które mogą już prawie to zrobić, więc "modding" C# exe jest dość trywialne, ale proponuję biorąc to do logicznego wniosku: zawierać nawet komentarze w .exe i .dll. Pliki nadal będą małe w porównaniu do skompilowanych aplikacji C / C++. Optymalizacja? Możesz również dołączyć wstępnie zoptymalizowany kod. Gdy modder mods exe podczas aplikacji jest uruchomiony, nie modded " AST " i towarzyszący zoptymalizowany binarny jest podłączony z powrotem. Ten sam pomysł co w kompilatorze C#, ale posunął się dalej. Następny krok: Zapisz cały system operacyjny w tym języku, tak aby nawet gdy system Windows jest zamknięty, można go trywialnie modyfikować, ponieważ kod źródłowy jest dostarczany z każdym binarnym. Żadnego konfigurowania środowisk, kompilowania, łączenia. Po prostu zmodyfikuj SYSTEM OPERACYJNY, gdy jest uruchomiony. Zamknij analogia: jeśli napisałeś przeglądarkę internetową w Common Lispie, możesz edytować przeglądarkę bez zatrzymywania jej i budować strony internetowe w tym samym języku co przeglądarka.

 0
Author: Anonymous Coward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-18 12:03:18