편집자 전쟁

Editor war

에디터 전쟁은 Emacs와 vi(현재는 Vim 또는 최근에는 Neovim) 텍스트 에디터 사용자 간의 경쟁입니다.이러한 경쟁 관계는 해커 문화와 자유 소프트웨어 커뮤니티의 영속적인 부분이 되었습니다.

Emacs vs vi 논쟁은 적어도 1985년부터 [2]유즈넷 [1]그룹들을 대상으로 행해진 최초의 "성전" 중 하나였으며, 많은 불꽃 전쟁들은 그들이 선택한 편집자가 완벽한 편집의 귀감이라고 주장하고 다른 편집자를 모욕했다.운영 체제, 프로그래밍 언어, 버전 관리 시스템, 심지어 소스 코드 들여쓰기 [3][4]스타일을 놓고 관련 싸움이 벌어졌습니다.

비교

다음 표에 vi와 Emacs의 가장 중요한[notes 1] 이력 차이를 나타냅니다.

Emacs 및 vi의 특징
특징 에맥스 vi
키 입력 실행 지금까지 [notes 1]Emacs 명령어는 다른 키를 누른 상태에서 수식자 키를 누르는 조합입니다.명령어는 입력이 완료되면 실행됩니다.이는 여전히 명령어의 Decision Tree를 형성하지만 개별 키 입력 중 하나가 아닙니다. vi는 입력된 키의 각 순열을 유지합니다.그러면 Decision Tree에 모든 명령을 명확하게 식별하는 경로가 생성됩니다.
메모리 사용률 및 맞춤성 Emacs는 기동시에 많은 액션을 실행합니다.이 액션의 대부분은 임의의 사용자 [5]코드를 실행할 수 있습니다.이로 인해 Emacs는 vim에 비해 부팅에 시간이 오래 걸리고 더 많은 메모리가 필요합니다.단, 텍스트 편집용으로 설계된 리스프 프로그램의 실행 환경이기 때문에 커스터마이즈성이 높고 많은 기능이 포함되어 있습니다.Emacs 18(1987년 출시)은 백그라운드에서 연속적으로 실행되도록 설계된 서버 모드를[6] 도입했습니다.다음으로 Emacs의 다양한 인스턴스를 클라이언트모드로 기동하여 이 서버에 접속하여 상태를 공유할 수 있습니다.Emacs 클라이언트의 기동 시간은, 기존의 Emacs 프로세스를 기동해 표시를 재작성하는 것 뿐이기 때문에, 거의 즉시입니다. vi는 더 작고 빠른 프로그램이지만 커스터마이즈할 수 있는 용량이 적습니다.vim은 vi에서 vi보다 훨씬 많은 기능과 커스터마이즈 기능을 제공함으로써 Emacs에 [notes 2]필적합니다.vi 부팅 시간은 작은 텍스트 파일의 경우 거의 즉시이지만 vim은 거의 같은 속도입니다.
사용자 환경 Emacs는 처음에는 콘솔에서도 사용할 수 있도록 설계되었지만 Emacs 18에서는 X11 GUI 지원이 추가되어 버전 19에서는 디폴트로 되어 있습니다.현재 Emacs GUI에는 비례 간격 및 글꼴 크기 변동이 완전히 지원됩니다.Emacs는 임베디드 이미지와 하이퍼텍스트도 지원합니다. vi는 emacs와 마찬가지로 원래 텍스트모드 콘솔 내에서만 사용되었으며 그래픽 사용자 인터페이스(GUI)를 제공하지 않습니다.MacVim이나 gVim과 같은 많은 최신 vi 파생 모델에는 GUI가 포함되어 있습니다.다만, 비례하는 간격의 글꼴에 대해서는 서포트하고 있지 않습니다.또, 같은 [9]문서의 다양한 크기의 글꼴을 서포트하고 있지 않습니다.
기능/내비게이션 인터페이스 Emacs는 메타키 [notes 3]코드를 사용합니다.키 또는 키 코드를 프리픽스키로서 정의할 수 있습니다.이것에 의해, Emacs 는 키바인딩을 구성하는 추가의 키 누름을 대기하는 모드가 됩니다.키 바인딩은 모드에 따라 다르므로 상호 작용 스타일을 추가로 사용자 정의할 수 있습니다.Emacs는 M-x에 의해 액세스되는 명령줄을 제공하며 다양한 방법으로 자동 완성되도록 설정할 수 있습니다.또한 Emacs는defalias매크로, 명령 대체 이름을 허용합니다. vi는 다른 편집 모드를 사용합니다."삽입 모드"에서 키는 문서에 문자를 삽입합니다.사용자가 명령을 입력할 수 있는 "명령줄 모드"와 혼동하지 않는 "명령어 모드"라고도 함)에서 베어 키 프레스는 vi 명령을 실행합니다.
키보드 Emacs의 백로님 중 하나는 Escape, Meta, Alt, Control, Shift로, Super만 제외하고 대부분의 수식 키를 깔끔하게 정리한 것입니다.Emacs는 현대적인 레이아웃보다 더 많은 키 수식어를 가진 Space-cadet 키보드로 개발되었습니다.스페이스맥이나[11] ergoemacs[12] 등 여러 개의 emacs 패키지가 있으며, 이러한 키의 조합을 입력하기 쉬운 것으로 대체하거나 사용자가 애드혹으로 커스터마이즈를 수행할 수 있습니다. vi는 다음 명령어를 사용하지 않습니다.Alt 키를 거의 사용하지 않습니다.vi의 키 세트는 주로 영숫자 키와 이스케이프 키로 제한됩니다.텔레타이프 유산의 영속적인 유물이지만, 빈번하게 손가락에 닿지 않고 vi의 대부분의 기능에 액세스 할 수 있는 효과가 있습니다.
언어 및 스크립트 지원 Emacs는 모든 Unicode 호환 쓰기 시스템을 완전히 지원하며 여러 스크립트를 자유롭게 [13]혼재시킬 수 있습니다. vi는 영어 이외의 언어를 기본적으로 지원합니다.최신 Vim은 Unicode를 지원하는 단말기와 함께 사용할 경우 Unicode를 지원합니다.

Emacs의 이점

  • Emacs에는 비모달인터페이스가 있어요
  • Emacs 키바인딩의 비모달적 특성으로 인해 OS 전체 [14]키바인딩으로 지원되는 것이 실용적입니다.
  • 가장 이식성이 높은 컴퓨터 프로그램 중 하나.그것은 문자 모드와 그래픽 사용자 인터페이스에 따라 운영 체계의 가장 유닉스 시스템(리눅스, 다양한 BSDs, 솔라리스, AIX, IRIX, macOS[15][16]등), MS-DOS, 마이크로 소프트 Windows,[17][18][19]아미가 OS, DEC. 유닉스 시스템, 둘 다 자유롭고 전매를 비롯한 다양한, 자주 Emacs 운영을 묶어서 제공한다 달린다.시스템.
  • Emacs 서버 아키텍처를 사용하면 여러 클라이언트가 동일한 Emacs 인스턴스에 접속하여 버퍼 목록, 킬링, 실행 취소 이력 및 기타 상태를 공유할 수 있습니다.
  • 키바인딩, 기능 및 명령을 즉시 문서화하는 광범위한 온라인 도움말 시스템.
  • 확장성과 커스터마이즈 가능한 Lisp 프로그래밍 언어 바리안트(Emacs Lisp)는 다음과 같은 기능을 갖추고 있습니다.
    • vi와 vim을 에뮬레이트할 수 있는 능력([20]이블, 바이퍼 또는 Vimpulse 사용).
    • 강력하고 확장 가능한 파일 관리자(다이렉트), 통합 디버거 및 대규모 개발 및 기타 도구 세트.
    • 모든 명령어를 Emacs Lisp 함수로 지정하면 과거 액션 및 문서 상태에 프로그래밍 방식으로 응답하여 DWIM(Do What I Mean)에 대한 명령어를 사용할 수 있습니다.예를 들어,switch-or-split-window명령어는 다른 창이 있는 경우 다른 창으로 전환하거나 필요에 따라 창을 만들 수 있습니다.이를 통해 사용자가 기억해야 하는 키 입력 및 명령어 수가 줄어듭니다.
    • "OS 내의 OS"Emacs Lisp를 사용하면 편집 기능을 훨씬 넘어 Emacs를 프로그래밍할 수 있습니다.기본 설치에도 2개의 웹 브라우저, 뉴스 리더, 여러 개의 메일 에이전트, 4개의 IRC 클라이언트, ELIZA 버전 및 다양한 게임을 포함한 수십 개의 애플리케이션이 포함되어 있습니다.이러한 애플리케이션은 모두 Emacs가 실행되는 모든 장소에서 사용할 수 있으며 동일한 사용자 인터페이스와 기능을 갖추고 있습니다.버전 24 이후 Emacs에는 패키지 매니저가 포함되어 있어 대체 웹 브라우저, EMMS(Emacs Multimedia System) 등의 추가 애플리케이션을 쉽게 설치할 수 있습니다.또한 특정 언어/라이브러리 조합 또는 코딩 스타일을 대상으로 하는 패키지를 포함하여 프로그래밍을 위한 수많은 패키지도 제공됩니다.

vi의 이점

  • 편집 명령어는 컴포넌트[21] 가능
  • Vi에는 모달 인터페이스가 있습니다.
  • Vi는 Emacs보다 로딩이 빠릅니다.
  • UNIX의 전통과 밀접하게 관련되어 있기 때문에 UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD 및 POSIX 호환 시스템을 포함하여 표준 C 라이브러리를 구현할 수 있는 모든 시스템에서 실행됩니다.
  • Vim 및 neovim은 Python, Ruby, Perl 및 Lua와 같은 인터프리터 언어용 Vim 스크립트 또는 API를 통해 확장 및 사용자 지정이 가능합니다.
  • 유비쿼터스기본적으로 모든 Unix 및 Unix 유사 시스템에는 vi(또는 변형)가 내장되어 있습니다.Vi(및 ex, vim 이외)는 POSIX 표준으로 [22]지정되어 있습니다.
  • 시스템 복구 환경, 임베디드 시스템(BusyBox 탑재 시스템) 및 기타 제약 환경에는 vi가 포함되지만 Emacs는 포함되지 않습니다.

진화

테크놀로지 컨벤션에서 프레젠테이션을 할 때 편집자의 선택 사항이 제시되었습니다.

과거에는 vi를 모델로 하거나 vi에서 파생된 많은 소규모 편집자들이 번성했다.이것은 당시 사용 가능한 비교적 적은 양으로 기억을 보존하는 것의 중요성 때문이었다.컴퓨터가 강력해짐에 따라 많은 vi 클론, 특히 Vim은 크기와 코드가 복잡해졌습니다.기존의 경량 Emacs 모델과 마찬가지로 오늘날의 vi 모델도 반대편에서 인식되는 많은 장점과 단점을 가지고 있는 경향이 있습니다.예를 들어 확장이 없는 Vim에는 vi에 필요한 디스크 공간이 약 10배 필요합니다.Vim의 최신 버전은 Emacs보다 확장 수가 많고 실행 속도가 느릴 수 있습니다.유닉스 프로그래밍의 기술」에서는, Eric S. 레이먼드는 Emacs와 비교했을 때 Vim의 몸무게가 가벼워 보이는 것을 "공통 신화"[23]라고 불렀다.게다가 현대의 컴퓨터에는 대량의 RAM이 탑재되어 있기 때문에, Eclipse와 같은 대규모 통합 개발 환경에 비해, Emacs와 vi는 모두 경량입니다.Eclipse는 Emacs와 vi 사용자 모두에게 조롱을 받는 경향이 있습니다.

팀 오라일리는 1999년에 오라일리 미디어vi 튜토리얼이 Emacs보다 두 배나 더 많이 팔린다고 말했다(그러나 Emacs는 무료 [24]매뉴얼과 함께 제공되었다고 언급).많은 프로그래머들이 Emacs와 vi 또는 마이크로EMACS를 [25]사용하는 Linus Torvalds를 포함하여 다양한 오프슈트를 사용합니다.1999년 vi 제작자 Bill Joy는 vi는 "더 이상 존재하지 않는 세상을 위해 쓰여졌다"면서 Emacs는 더 빠른 디스플레이를 가진 훨씬 더 능력 있는 기계로 쓰여졌다고 말했다. 그래서 그들은 "화면이 반짝이는 재미있는 명령어, 그리고 그 모든 것을 가질 수 있고, 한편, 나는 버클리 W에 있는 2차 세계대전의 잉여 주택 같은 곳에서 집에 앉아 있다.모뎀과 커서가 거의 바닥에서 떨어지지 않는 단말기를 말합니다."[26][27]

Emacs와 vi Workalike에 더해, 피코와자유오픈 소스 클론 나노 및 ne와 같은 다른 텍스트 편집자들은 종종 편집자 전쟁에서 그들 자신의 서드 파티 옹호자를 가지고 있지만 Emacs와 vi의 정도는 아니다.

2020년 현재 Emacs와 vi는 모두 Linux와 [29]Unix에서 가장 일반적으로 사용되는 두 개의 텍스트 에디터일 뿐만 아니라 [28]역대 최장수 애플리케이션 프로그램 중 하나라고 주장할 수 있습니다.많은 운영체제, 특히 Linux 및 BSD 파생제품에서는 사용자의 요구에 부응하기 위해 여러 텍스트 에디터를 운영체제에 번들하고 있습니다.예를 들어 macOS 기본 설치에는 ed, nano, TextEdit 및 Vim이 포함됩니다.토론의 어느 시점에서는 ed가 표준 텍스트 [30]에디터라고 지적하는 경우가 자주 있습니다.

유머

이맥스 교회에서 성 이그누 시우스로 등장하는 리처드 스톨먼

Emacs와 GNU Project창시자인 Richard Stallman에 의해 결성된 The Church of Emacs는 [31]패러디 [32]종교이다.그것은 vi에"악마의 편집자."(vi-vi-vi고 666로마 숫자로)로 언급한다, 그것 아니라,.("비아이의 무료 버전을 사용하는 것은 죄가 아니라 고행 특허 소프트웨어를 괴롭히던 저주라고 부르비아이의 사용에 반대하지 않으면."[33])교회 이맥스의 기둥 이 믿음 sys을 지원하기 위해라고 자국 뉴스 그룹 alt.religion.emacs이 있다.

스톨먼은 자신을 성 이그누 시우스라고 불렀는데, 이그누 시우스는 에맥스 [34]교회의 성인이다.

vi의 지지자들은 보다 강경한 Emacs 사용자들에 의해 반대되는 Cult of vi를 만들어 냈는데, 이는 "선배들을 [citation needed]따돌리기 위한" 시도라고 주장합니다.

일부 Emacs 사용자는 vi의 모달 특성(초보 [35]사용자의 공통적인 불만점)에 대해 vi에는 "반복적으로 비프음"과 "모든 것을 끊는" 두 가지 모드가 있다고 농담을 합니다.Vi 사용자들이 이맥스의 key-sequences 욕을 수근관 증후군,, 또한 하나의 약어인 이맥스의"이스케이프 메타 Alt제어 Shift"(수식어 키의 이맥스의 의존도에 잽)[36]또는"8Megabytes 그리고 계속해서 스와핑"(시기에 기억의 이것이 좋은 양)이나``이맥스를 다시 쓴 같은 많은 풍자적인 사업 확장,에 대하여 언급하 농담을 즐긴다. 조금도Emacs의 높은 시스템 리소스 요구 사항을 나타내는 Computer Slow(Stallman이 사용하는 [37]것과 같은 재귀적 약자) 또는 "Endall Munches All Computer Storage(결국 모든 컴퓨터 스토리지)".GNU EMACS는 "Generally Not Used, Except by Middle Computer Scientists"로 확장되어 가장 열성적인 팬을 언급하고 있으며, 젊은 프로그래머들 사이에서의 사용이 Atom, BBEdit, Sublime Text, TextMate, Visual Studio [citation needed]Code와 같은 그래픽 지향적인 에디터에 비해 감소하고 있습니다.

Emacs의 완만한 기능주의를 조롱하는 것으로, vi 옹호자들은 Emacs를 "훌륭한 운영 체제이며, 제대로 된 편집자만 없는" 것으로 알려져 있다.Emacs 옹호자들은 에디터가 실제로 매우 훌륭하지만 운영체제는 (Emacs의 유명한[38] 동시성 부족에 대해 언급) 개선을 사용할 수 있다고 응답하는 것으로 알려져 있다.

유닉스 유저간의 게임은, 이맥스 유저의 에디터에 대한 이해의 깊이를 테스트하거나, 이맥스의 복잡함을 조롱하기 위해서, 유닉스 유저가 수식자 키(또는 등)를 누르고 자신의 이름을 입력했을 경우에 어떤 일이 일어날지를 예측하는 것을 포함한다.이 게임 유머는[39] 오리지널 Emacs의 구현 기반이었던 구형 TECO 에디터 사용자로부터 비롯되었습니다.

vi를 종료하는 방법(':q' 등)으로 인해 해커들은 vi에 익숙하지 않은 사용자를 오픈 에디터 앞에 앉히고 [citation needed]프로그램 종료를 요구함으로써 의사 난수열 작성 방법에 대해 농담을 던진다.

구글 검색 엔진도 vi를 검색하면 페이지 상단에 "Do you said: emacs"라는 질문이 표시되고 "Do you said: vi"[40]라는 emacs를 검색함으로써 농담에 동참했다.

「 」를 참조해 주세요.

메모들

  1. ^ a b 오늘날 두 편집자는 서로의 키바인딩을 구현하기 위한 쉬운 방법을 제공합니다.Emacs에서는 Vim 키바인딩은 Evil 모드를 통해 구현되며, Vim에서는 Vimacs 패키지를 통해 구현됩니다.Vim 키바인딩은 인체공학적으로 인기가 있지만 키보드에서 가장 인체공학적인 키인 스페이스바는 Vim에서는 사용되지 않습니다.Emacs 및 Vim 내비게이션 방식에 대한 일반적인 대안은 Spacemacs를 통해 구현되었습니다. Spacemacs는 스페이스 바를 사용하여 제어 및 내비게이션의 주요 키로 기능하는 인기 있는 Emacs 구성입니다.Spacemacs의 아이디어도 Spacevim을 통해 Vim으로 이식되었습니다.
  2. ^ 2013년 현재 vim은 코드 1731kLOC(C + 506 stock distro vimScript + 83 makefile 관련)를 보유하고 있으며, GNU Emacs는 1623(C + 1270 stock distro Emacs Lisp + 54 makefile 관련)[7][8]을 보유하고 있습니다.옵션인 Emacs Lisp(및 Vimscript) 패키지가 다수 준비되어 있습니다.이 숫자는 각 에디터의 메인 다운로드에 실제로 포함되어 있는 코드만을 나타냅니다.
  3. ^ Emacs 에는 「모드」라고 불리는 것도 있습니다.그러나 Emacs 에서는, 통상, 이러한 상태는, 특정의 파일이나 데이터 세트를 사용해 작업하는 시간 전체에 적용되는 장기적인 인터랙션 상태를 가리킵니다.이것은 [10]모드 인터페이스 자체의 정의는 아닙니다.

레퍼런스

  1. ^ "Holy War (Hacker Jargon)". Archived from the original on 2012-04-02. Retrieved 2016-11-30.
  2. ^ "EMACS vs. vi: The endless geek 'holy war'". Archived from the original on 2016-11-30. Retrieved 2016-11-30.
  3. ^ "Just Let Me Code". Archived from the original on 2015-05-01. Retrieved 2015-04-24.
  4. ^ "Why Coding Style Matters". Archived from the original on 2015-05-03. Retrieved 2015-04-24.
  5. ^ "Startup Summary".
  6. ^ "NEWS.18". Archived from the original on 2015-06-14. Programs such as mailers that invoke "the editor" as an inferior to edit some text can now be told to use an existing Emacs process instead of creating a new editor.
  7. ^ "The GNU Emacs Open Source Project on Open Hub : Languages Page". Ohloh.net. Retrieved 1 December 2014.
  8. ^ "The Vim Open Source Project on Open Hub : Languages Page". Ohloh.net. Retrieved 1 December 2014.
  9. ^ "syntax.txt". All fonts used, except for Menu and Tooltip, should be of the same character size as the default font! Otherwise redrawing problems will occur.[영구 데드링크]
  10. ^ "EmacsWiki: Category Modes". Emacswiki.org. Retrieved 1 December 2014.
  11. ^ "spacemacs".
  12. ^ "Ergoemacs".
  13. ^ "International Chars". Internally, Emacs uses its own multibyte character encoding, which is a superset of the Unicode standard. This internal encoding allows characters from almost every known script to be intermixed in a single buffer or string. Emacs translates between the multibyte character encoding and various other coding systems when reading and writing files, and when exchanging data with subprocesses.
  14. ^ "(Emacs) Keyboard Shortcuts for Editing Text Fields in OS X".
  15. ^ "Carbon Emacs Package". Archived from the original on 2007-03-14. Retrieved 2006-09-27.
  16. ^ "Aquamacs is an easy-to-use, Mac-style Emacs for Mac OS X". Retrieved 2006-09-27.
  17. ^ B, Ramprasad (2005-06-24). "GNU Emacs FAQ For Windows 95/98/ME/NT/XP and 2000". Retrieved 2006-09-27.
  18. ^ Borgman, Lennart (2006). "EmacsW32 Home Page". Archived from the original on 2007-03-06. Retrieved 2006-09-27.
  19. ^ "GNU Emacs on Windows". Franz Inc. 2006. Retrieved 2006-09-27.
  20. ^ "Evil - Home - Open wiki". gitorious.org. May 29, 2014. Archived from the original on September 16, 2014. Retrieved September 16, 2014.
  21. ^ Kozlowski, Mike. "Why Atom Can't Replace Vim". Retrieved 7 May 2014.
  22. ^ "vi". pubs.opengroup.org. Retrieved 2017-03-11.
  23. ^ "The Right Size for an Editor". Catb.org. Retrieved 1 December 2014.
  24. ^ "Editor: vi or emacs?". Oreilly.com. 21 June 1999. Archived from the original on 1 April 2014. Retrieved 1 December 2014.
  25. ^ Jarosław Rzeszótko. "Stifflog: Stiff asks, great programmers answer". Stifflog.com. Archived from the original on 8 November 2006. Retrieved 1 December 2014.
  26. ^ Vance, Ashlee (September 11, 2003). "Bill Joy's greatest gift to man – the vi editor". theregister.co.uk. Archived from the original on June 3, 2014. Retrieved June 3, 2014.
  27. ^ Joy, Bill (November 1999). "The Joy of Unix: Sun Microsystems Co-Founder Bill Joy Charts Where Linux and Free Software Fit Into His Company's Solar System". Linux Magazine (Interview). Interviewed by Eugene Eric Kim. Archived from the original on February 7, 2003. Retrieved June 3, 2014.
  28. ^ Auerbach, David (9 May 2014). "The Oldest Rivalry in Computing". Slate. two rival programs can stake a claim to being among the longest-lived applications of all time. Both programs are about to enter their fifth decades. Both programs are text editors, for inputting and editing code, data files, raw HTML Web pages, and anything else. And they are mortal enemies.
  29. ^ "Choosing an Editor". these two editors express sharply contrasting design philosophies, but both are extremely popular and command great loyalty from identifiable core user populations. Surveys of Unix programmers consistently indicate about a 50/50 split between them, with all other editors barely registering.
  30. ^ "Ed, man! !man ed". Gnu.org. Retrieved 1 December 2014.
  31. ^ "Rules, Sins, Virtues, Gods and more of The Church of Emacs". Gnu.org. Retrieved 1 December 2014.
  32. ^ "Saint IGNUcius - Richard Stallman". Stallman.org. Archived from the original on 22 November 2014. Retrieved 1 December 2014.
  33. ^ "The unabridged selective transcript of Richard M Stallman's talk at the ANU". Linuxhelp.blogspot.com. Retrieved 1 December 2014.
  34. ^ "Saint IGNUcius - Richard Stallman". Stallman.org. Retrieved 1 December 2014.
  35. ^ "vi (Hacker Jargon)".
  36. ^ "Some funny acronym expansions of Emacs". Gnu.org. Archived from the original on February 16, 2021. Retrieved 1 December 2014.
  37. ^ Rösler, Wolfram. "The Unix Acronym List". Archived from the original on February 16, 2021. Retrieved March 4, 2021.
  38. ^ "Concurrency has landed (was: Please test the merge of the concurrency br". lists.gnu.org. Retrieved 2020-12-08.
  39. ^ "Real Programmers Don't Use PASCAL". Datamation: 263–265. July 1983.
  40. ^ "Google suggest vi for Emacs and Emacs for vi Hacker News". Hacker News. Retrieved 2022-04-07.

외부 링크