이맥스와 Vim의 차이점


686

왜 하나가 다른 것보다 더 나은지에 대한 종교적 주장에 들어 가지 않고, Emacs와 Vim 의 실제 차이점은 무엇입니까? 나는 하나 또는 다른 것을 배우고 싶지만 각각에 대한 학습 곡선이 높고 결정할 수 없다는 것을 알고 있습니다. 나는이 유형의 편집기를 사용하지 않았으며 (항상 IDE를 사용했습니다) 초보자를 돕는 것은 플러스입니다.


화염 전쟁이 시작되기 전에 나는 어느 쪽이 더 나은지 묻지 않고 두 가지의 차이점을 묻습니다. 객관적인 비교를 원합니다 .


3
Mac (OSX)을 사용하는 경우 많은 기본 emacs 커서 이동 명령이 거의 모든 곳에서 작동한다는 것을 알 수 있습니다. (예를 들어,이 주석을 웹 페이지에 입력 할 때 여기에서 작동합니다.) 따라서 Mac 사용자의 경우 최소한 다음 emacs 서브 세트를 학습하면 시스템 전체에 이점이 있습니다. ^ A ^ B ^ D ^ E ^ F ^ K ^ L ^ N ^ O ^ P ^ T ^ V ^ Y
Matt

2
@JamesAnderson : 내 경험상 반대입니다. 2.5 년 동안 vim을 사용한 후 emacs로 전환했습니다. 이맥스 사람들은 대부분 신경 쓰지 않습니다. 여기에 무엇 ,salespitch#emacs 말한다<fsbot> We aren't gonna lie. Emacs sucks. Some of us tolerate it, but we can't tell you if YOU'LL be able to. Try it and make up your own mind.
렉스

2
Emacs는 확실히 훌륭한 운영 체제이지만 적절한 편집기가 없습니다.
technical_difficulty

1
@ JimmyM.G. Lim 아니요, 시스템의 현재 호출기를 사용합니다. 실행 PAGER=cat man하면 man이 화면에 직접 텍스트를 표시합니다.
SS 앤

1
"처음으로 의견을 기반으로 한"경찰은 이것이 처음 요청되었을 때 존재하지 않았다고 생각합니다. 폭탄이었다. 3주의 휴가 후 나는 모든 키 스트로크를 완전히 잊었다는 것을 알았다. 반면에 vim은 실제로 내 것이 아니지만 just을 사용하여 필요할 때 안정적으로 반 기능 할 수 있습니다 i, esc, wq.
JL Peyret

답변:


491

(아래 텍스트는 내 의견이므로 사실이나 모욕으로 간주해서는 안됩니다)

Emacs를 사용하면 연중 무휴 24 시간 내내 프로그램 내에서 생활 할 수 있으며 거의 ​​모든 작업을 수행 할 수 있습니다. 당신은 당신의 자신의 확장을 작성, 메모, 조직, 게임, 프로그래밍, 쉘 액세스, 파일 액세스, 음악 듣기, 웹 브라우징에 사용합니다. 당신이 그것에 만족할 때까지 몇 주와 몇 주가 걸리며, 당신은 항상 새로운 것들을 배울 것입니다. 액세스 권한이없고 구성을 지속적으로 변경하면 짜증이 날 것입니다. 다른 사람들의 emacs 버전을 쉽게 사용할 수 없으며 설치 만되지 않습니다. Lisp를 사용합니다. 원하는대로 만들 수 있습니다. (아무것도)

Vim을 사용하면 거의 항상 사전 설치됩니다. 빠릅니다. 파일을 열어 빠르게 편집 한 다음 종료하십시오. 다른 사람의 컴퓨터에있는 경우 기본 설정으로 작업 할 수 있습니다. 편집 할 수는 없지만 대부분의 텍스트 편집기보다 훨씬 낫습니다. 입력하지 않고 읽고 편집하는 대부분의 시간을 인식하여 해당 부분을 더 빠르게 만듭니다. 당신은 이맥스 새끼 손가락으로 고통받지 않습니다 . 너무 화 나지 않습니다. 배우기가 더 쉽습니다.

선택한 프로그램에 많은 시간을 할애하지 않는 한 매일 매일 Emacs를 사용하고 사랑하지만 vim을 선택합니다.


154
Wrt를 사용할 수 없음 : .emacs와 .emacs.d를 소스 컨트롤 저장소에 넣는 것이 좋습니다. 따라서 완벽한 Emacs 설정을 얻는 것은 단순히 체크 아웃의 문제입니다.
Duncan Bayne

7
emacs와 vim은 모두 위에서 설명한 문제를 겪을 수 있습니다. 둘 다 바닐라 형태에 비해 인식 할 수없는 지점으로 구성 할 수 있습니다. 또한 두 번째 vc 사용을 사용합니다.
Alexej Magura

11
@Radu에서 어떤 시스템을 사용하십니까? 2010 년에는 실제 시스템과 별개가 vi아닌 실제 시스템을 본 적이 없습니다 vim.
ELLIOTTCABLE

9
아마도 Vim은 Emacs보다 배우기가 더 쉽지만, 이전에 경험이 없다면 처음 시작할 때 매우 혼란 스럽습니다! Google을 사용하여 파일을 닫을 수 있었지만 여전히 올바르게 사용하려면 여러 번 시도해야했습니다.
HelloGoodbye 2016 년

9
VIM의 "사전 설치된"특성을 결코 과소 평가하지 마십시오. 언제 어디서나 거의 항상 사용할 수 있으며 사용자 정의가 거의 또는 전혀 없이도 사용할 수 있습니다. ssh다른 기계를 사용할 때 항상 사용합니다 . 그렇기 때문에 내가 처음 알게 된 이유는 친구들이 VIM을 알고 나를 도울 수 있기 때문입니다. (친구의 지원도 과소 평가하지 마십시오!)
jvriesem

137

Vim은 쉘이 아닙니다. 그리고 하위 프로세스와 잘 통신하지 않습니다. 이것은 거의 디자인에 의한 것이지만 Emacs에서는 이러한 요소가 디자인에 포함됩니다. 즉, Vim에서는 디버거 또는 인터프리터 (일종의 IDE가 필요함) 내장과 같은 일부 작업이 어렵다는 것을 의미합니다.

또한 Emacs 단축키는 주로 수정자를 통해 액세스되며 Vim 인터페이스는 모달로 유명하며 조작을 위해 부당한 양의 직접 키에 액세스 할 수 있습니다.

Emacs는 프로그래밍이 가능한 두 프로그램의 유일한 편집자였으며 Vim은 Python과 Ruby 바인딩을 추가하여 프로그래밍 가능성에 대해 이상한 수준을 가지고 있지만 Vim은 대부분의 방식으로 프로그래밍 가능합니다. 당신은 걱정할 것입니다.

저는 Vim을 사용하고 있으며 매우 만족합니다.


6
작은 업데이트 : Vim은 8.0 및 8.1 버전부터 터미널 버퍼를 도입 한 이후 하위 프로세스와의 통신을 향상 시키므로 emacs에 조금 더 가까워지고 있습니다.
DarkWiiPlayer

110

정력:

  • 간단한 편집기로 더 나아짐 (간단한 작업에 필요한 키가 적음)
  • 보다 활발한 스크립팅 커뮤니티-내부 언어 : vimscript
  • 스크립트, 플러그인, 색 구성표 등의 하나의 중앙 저장소
  • 파이썬, 루비에서도 확장 가능
  • 휴대용으로 만들 수 있습니다 (emacs에는 문제가 있습니다)

이맥스 :

  • 기본적으로 모달이 아님 (오늘날 편집자의 대부분이이 방식을 취했습니다). vim 동작을 에뮬레이트하는 악의 모드 가 있지만 .
  • 확장을위한보다 강력한 언어 (elisp는 완전한 언어) emacs에서는 거의 모든 것을 재정의 할 수 있지만 vim에서는 편집기의 기능을 빌드 할 수는 없습니다. 거의 아무것도 닮지 않습니다)
  • 더 확장 가능한
  • GNU 도구에 대한 탁월한 지원

개인적으로, 나는 vim을 선호합니다-그것은 작고,해야 할 일을하고, 완전한 IDE를 원할 때 VS를 엽니 다. Emacs의 IDE 접근 방식 (또는 OS라고 말하고 싶지만)은 아니지만 IMHO는 구식입니다. 예전에는 이메일 클라이언트, ftp 클라이언트, 테트리스, ... 하나의 패키지 (emacs)에 포함 된 내용이 어떤 의미가 있었지만 요즘에는 더 이상 그렇지 않습니다.

그러나 둘 다 프로그래머와 수퍼 유저 커뮤니티 사용자 사이의 종교 토론 주제이며, 이와 관련하여 두 사람 모두 (동일한 문장 / 질문으로) 접촉하면 화염 전쟁을 시작하는 데 탁월합니다.


47
"편집자로서 더 낫다"는 꽤 모호하다. 이유를 보는 데 관심이 있습니다.
Allen

41
@Allen-그 안에 모호한 것이 무엇입니까? 나는 그 진술에 문제가있는 vim과 emacs의 사용자를 거의 만나지 않습니다. 하드 코어 이맥스 사용자조차도 보통 사실로 받아들입니다. 두 편집기를 모두 사용 했습니까? vim이 텍스트 편집 기능 측면에서 이점이 있다는 것은 비교적 분명합니다.
Rook

36
나는 누군가가 그것을 사실로 받아 들일 것이라고 믿어지지 않습니다. emacs와 일반 VI를 오랫동안 사용했던 저는 vim을 몇 번 사용했습니다. 그러나 "편집자로 더 나은"은 더 큰 주 모드와 부 모드를 선택하는 것 외에 다른 이유가 없다면 내 생각에 emacs로 가야합니다. 입력 할 때 도움이됩니다.
Kendall Helmstetter Gelner

61
Vim은 텍스트를 조작 할 때 적어도 내 경험 인 emacs보다 손과 손가락의 움직임이 덜 필요하기 때문에 편집자로서 더 좋습니다.
StackedCrooked

7
줄 번호, 시각 모드, 조작 :하지만 그것을 제외하고, 효과적으로 정력 더 나은 편집에 적합 wint1.kaist.ac.kr/files/attach/images/59/450/... . FCOL, 한 번에 한 줄씩 스크롤하여 이맥스를 얻는 데 어려움을 겪었습니다.
Rook

52

두 편집자 모두에 대한 객관적인 분석을 원한다면 각 디자인의 근원과 철학을 살펴보십시오. 어느 것이 당신에게 더 잘 어울리고 그것을 배우는지 생각하십시오. (그리고 IDE에 대한 진정한 유틸리티를 발견하기까지 시간이 걸리기 때문에 그것을 배우고 배우십시오.) Vi를 사용한 디스플레이 편집 소개 는 Bill Joy와 Mark Horton이 작성했으며 다양한 키 스트로크에 대해 모달 설계 및 이론적 근거를 선택하는 이유를 설명합니다 (CTRL-W + W (다음 W indow 및 CTRL 키를 길게 누른 경우를 대비하여 CTRL W + CTRL W의 경우와 동일합니다.

다음은 Emacs 타임 라인에 대한 링크 이며 Multics Emacs 용지에 대한 참조입니다. 여기 Emacs 에 관한 RMS 논문이 있는데, 여기서 스트레스는 프로그래밍 가능한 텍스트 편집기에 있습니다 (1981 년 이전과 그 이전 버전).

나는 emacs 논문을 읽지 않았지만 Bill Joy의 vi 논문을 두 번 읽었습니다. 둘 다 오래되었지만 여전히 철학을 얻었고 현재 도구를 사용하도록 선택할 수 있습니다 (vim 7.x 또는 emacs 25?)

편집 : 나는이 문서를 읽는 동안 시간이 걸리기 때문에 인내심과 상상력이 필요하다는 것을 언급하지 않았습니다. 그러나 가치가 있습니다.


43
  1. Vim은 항상 Emacs보다 시동 속도가 빠릅니다. 모든 컴퓨터에서 Vim의 기본 설치는 Emacs의 기본 설치보다 빠르게 시작된다고 말합니다. 그리고 어느 쪽이든 적당히 커스터마이징 한 후에도 Vim은 여전히 ​​Emacs보다 더 빨리 시작될 것이라고 생각합니다.

  2. 그 후 다른 실질적인 차이점은 Emacs 모드였습니다. XML, C / C ++ / 자바 / 라텍스, LaTeX 및 생각할 수있는 가장 인기있는 언어를 편집 할 때 인생이 훨씬 쉬워집니다. 긴 세션과 작업을 위해 편집기를 열어두기를 원합니다.

결론적으로 Vim은 짧고 빠른 편집 작업을 위해 당신을 끌어들입니다. Emacs는 오랜 시간 동안 다이빙을하도록 권장합니다.


1
반대로 모드가 삶을 더 쉽게 만들어주는 것은 아니라고 생각합니다. 그리고 Larry Tesler도 같은 생각을합니다 .
Eliran Malka

2
Emacs의 모드는 코딩에 어떻게 도움이됩니까? (나는 ...에 새 해요)
jvriesem

4
오래 전에 나는 네 가지 이유로 vi에서 emacs로 전환했습니다. (a) 한 번의 클릭으로 다음 컴파일러 오류를 가져옵니다. 지금 vim에서 이런 일을 할 수 있습니까?
zzz777

"Vim은 항상 Emacs보다 시동 속도가 빠릅니다."emacs 서버를 계속 실행하면 emacs-client를 tarting하는 것이 매우 빠릅니다. 모든 컴퓨터에서 (git을 사용하여) 복제하는 스크립트가 있습니다. (저도 vim을 사용합니다. 실제로는 항상 어디에 있고 어떤 작업인지에 따라 다릅니다)
Jay

"Vim은 이맥스보다 시작하는 것이 더 빨랐다"-로도, use-package:defer옵션, 내 이맥스는 거의 즉시 열립니다. 나는 심지어 emacsclient 사용을 포기했다.
Jay

37

VI는 항상 사용 가능하며 가장 잔인한 단일 사용자 모드, 깨진 그래픽, 키맵, 느린 링크 시스템에서 실행되므로 sysadmin 작업을 위해 간단한 파일을 편집하는 방법을 아는 것이 좋습니다.

Emacs는 편집기에서 완전한 사용자 인터페이스입니다. 기계를 시작할 때 Emacs를 가동시켜 두지 마십시오. 수천 개의 세션이있을 수 있습니다.

Emacs의 기능을 배우는 것이 GUI 편집기 / IDE를 사용하고 추가 작업을 위해 python / awk / etc와 같은 것을 사용하는 것과 비교하여 가치가 있는지 여부는 귀하에게 달려 있습니다.


2
나는 그 이유 때문에 VI를 알고 있습니다. 그러나 요즘에는 최소한 기본 EMACS를 설치하지 않고 UNIX 시스템을 접할 가능성이 거의 없으며, 쉘 환경이 열악 할 수 있습니다.
Kendall Helmstetter Gelner

3
또는 busybox를 initrd에 잼하고 부팅 장치의 손상된 스토리지 드라이버를 디버깅하십시오. 따라서 초기 프로세스 초기에는 초기 램 디스크이지만 여전히 편집기가 있습니다. vi.
smcameron

2
vi로 잠시 후 손가락이 움직임을 알고 있지만 실제 키가 무엇인지 기억할 수 없습니다!
Martin Beckett

10
ed"항상 사용할 수 있으며 가장 잔인한 단일 사용자 모드, 깨진 그래픽, 키맵 없음, 느린 연결 시스템에서 실행될 것" 이라고 생각했습니다 . 잠깐, 몇 년입니까? (한숨- ed, 나는 당신을 잊지 않을 것입니다.)
belacqua

2
@ 켄달 : 현재 우분투 리눅스에는 emacs가 설치되어 있지 않습니다.
intuited

25

나는 본격적인 Emacs 팬 보이지만, Emacs를 알기 훨씬 전에 VI를 알고있었습니다. 즉, 모든 사람들이 언제 어디서나 VI를 사용할 수 있기 때문에 모든 사람들이 VI를 배우게합니다. 그들 중 하나에 잘못 갈 수 없습니다.


2
이것은 내 경험이기도합니다 ... Emacs 또는 uEmacs는 사용할 수 없었습니다. 첫 번째 편집자는 uEmacs (Amiga) 였지만 vim을 배운 후에는 너무 편리했습니다.
Marius

이것은 기본적으로 나의 경험이기도합니다. Vi는 어디에나 있으며 일반적으로 유닉스 시스템에서 기본 $ EDITOR로 설치되므로 유닉스를 사용하는 경우이를 알아야합니다. 즉, 나는 매일 텍스트 편집을 위해 emacs를 사용하고 그것을 좋아합니다.
퍼기

14

답이 이미 선택된 것 같지만, 나에게 큰 차이점은 항상 모달 대 비 모달이었습니다. Vim은 모달이므로 특정 사용 모드 세트를 기반으로 최적화합니다. 적어도 그것이 내가 항상 본 방법입니다. 코드를 입력하는 작업 영역 대신 텍스트에 대한 작업 환경을 알려주기 때문에 Vim을 사용하는 환경이 달라집니다. 이것이 사람들이 Vim과 같은 언어를 배우는 이유입니다. : wq 및 : s / foo / bar는 모두 텍스트를 편집하고 읽는 환경과 같은 쉘의 일부입니다.

반면 이맥스는 대부분의 편집자 / 워드 프로세서 등에 훨씬 가깝습니다. 당신은 오늘 참조하십시오. 고도로 프로그래밍 가능한 인터페이스가있는 작업 공간이 있습니다. 그렇기 때문에 이메일, irc, 쉘 등을 볼 수 있습니다. 프로그래머로서 "내가있는 줄 번호를 사용하여 정보를 사용하여 무언가를합니다"라는 말로 생각하기 쉽습니다. 종료하고 다른 앱 / 언어를 열고 텍스트로 작업하는 대신 편집기 범위 내에서 이러한 작업을 수행 할 수있는 Emacs가 있기 때문에 편집기를 떠나려는 욕구가 줄어 듭니다.

두 아이디어가 반드시 대조되는 것은 아니지만 단순히 두 가지 다른 초점을 드러내는 것입니다. 개인적으로 저는 이맥스를 사용하지만 Vim을 잘 아는 사람들이 솔직히 말해서 당신이 선택한 것이 중요하지 않다고 말할 수 있습니다. Vim을 먼저 시도했지만 Emacs는 결국 나를 고집했습니다. 무엇을 선택하든, 항상 Vim을 항상 이용할 수 있기 때문에 Vim에 어느 정도 능숙해야합니다.


13

나는 vi로 시작해서 emacs로 갔다가 vim으로 갔다. 지난 5 년 동안 무엇이 바뀌 었는지 확인하기 위해 이맥스를 시험해 보려고했습니다. (IDE에 관해 말하면, 나는 일식으로 잠시 들어 왔지만 내 Mac을 (남편의) 리눅스 상자에 연결하는 터미널 창을 선호합니다).

잘라내어 붙여 넣기가 최근에 귀찮았습니다. Vim의 잘라 내기 및 붙여 넣기는 IIRC의 Emacs보다 더 많은 단계를 수행합니다. 그리고 내가 말하고 싶지 않은 멋진 일을하지 않으면 브라우저에서 터미널 창으로 붙여 넣기가 자극적이므로 이상한 들여 쓰기를 견뎌냅니다. emacs에서 여러 파일을 편집하는 것이 더 쉽다고 생각합니다. 화면에 둘 다있는 경우 적어도 한 파일에서 다음 파일로 점프합니다.

나는 코딩 사업에 뛰어 들기 위해 vi 또는 emacs의 멋진 기능을 사용하지 않았습니다. 필요한 것은 예쁜 색상과 적절한 탭 대 공간 변환 (특히 파이썬에서 중요)입니다.

멋진 것들에 관심이 없다면 파일을 저장 하기 위해 :wq또는 Ctrl-x Ctrl-s(IIRC)를 사용 하려는지 여부에 달려 있다고 생각합니다 .

@mgb가 정확했습니다. 나는 데비안 배포판에서 한두 달 전에 무언가를 고치기 위해 최소한의 리눅스를 사용했습니다. vi는 유일하게 사용할 수있는 편집기였습니다.


1
이것은 여전히 ​​한 것이 아니며 완료되었지만 터미널 붙여 넣기를 엉망으로 만드는 모든 설정을 조정하는 것보다 훨씬 쉽습니다. 를 사용한 :set paste다음 텍스트를 붙여 넣으면 완료 :set nopaste되면 일반 모드로 돌아갑니다. :set pastetoggle=<F2>선택한 키 콤보를 사용하여이를 전환 하는 명령 도 있습니다.
hbar

들여 쓰기 모드에서는 ^R^P+클립 보드에서 붙여넣고 현재 들여 쓰기를 유지할 수 있습니다. ^R^O+들여 쓰기가 떨어집니다. ^R+입력 한 것처럼 삽입합니다. :help i_^R^P더 많은 정보를 위해서.
intuited

3
잘라 내기 / 붙여 넣기가보다 쉽다는 것을 상상할 수 없습니다 yyp. 또한, 다른 창에서 잘라서 붙여 넣기하려면 여기를 참조하십시오. stackoverflow.com/a/8757876/654789
puk

@puk-Ctrl-k (yank) / Ctr-y (put)는 emacs에서와 마찬가지로 쉽습니다. 이맥스에서는 여러 레지스터 (AZ) 당신도 텍스트 나에 현재 위치 ... 저장할 수 있습니다
켄달 Helmstetter Gelner

3
vim은 여러 개의 레지스터를 가지고 있습니다
TamaMcGlinn

12

일상적인 수준에는 큰 차이가 있습니다. Vim (또는 vi 변형)은 본질적으로 모달 (편집 할 수없는 명령 모드로 이동)이며 Emacs (대부분의 다른 편집기와 함께)는 아닙니다.

물론 메뉴를 사용하면 실제로 Vim에서 실제로 명령 모드로 들어갈 필요가 없습니다. 그러나 Vim의 작은 부분조차도 사용하게 될 것입니다. 그것이 Vim / Emacs 토론의 핵심입니다.

개인적으로, 나는 또한 Emacs가 훨씬 확장 성이 있다고 생각합니다. 많은 것들을위한 Elisp 패키지를 찾을 수 있습니다.

그래도 왜 더 전통적인 IDE를 통해 이들 중 하나를 배우려고 생각하는지 궁금합니다. 이 중 하나를 배우고 싶은 것이 무엇입니까?


8
나는 단지 그것이 과대 광고에 맞서는지, 정직하기 위해 배우기를 원합니다. 나는 두 가지가 얼마나 유연한 지 보았고 전문가들이 미친 짓을하는 것을 보았으며 학습 곡선에 가치가 있는지 확인하고 싶습니다. 또한 내 IDE는 Lisp를 지원하지 않습니다. :)
Sasha Chedygov

3
흠. 문제는 너무 많은 Emacs가 있다는 것입니다 ...하지만 여전히 emacs를 사용하기 위해 IDE를 떠나는 것은 일련의 복잡한 반복 작업이며 매크로 기록을 사용하여 자동화합니다. 예를 들어 현재 단어 나 표현을 가져 와서 "버퍼"로 복사 한 다음 (잘라 내기 / 붙여 넣기 만 할 수 있음) 다른 파일로 이동하여 복사 된 값을 사용하여 일부 텍스트를 입력 한 다음 이전에 다른 텍스트를 입력 할 수 있습니다 복사 된 값도 커서를 이동하고 위치를 저장 한 후 첫 번째 버퍼로 다시 돌아갑니다. 그런 다음 원본 파일의 다음 줄에 대해 프로세스를 반복하십시오.
Kendall Helmstetter Gelner

1
vi와 Emacs에서 Macros를 많이 사용했습니다. 누락 된 것은 Emacs가 매크로를 사용하는 동안 액세스 할 수있는 훨씬 더 광범위한 방법을 가지고 있다는 사실과 검색어 중간에도 컷 버퍼를 사용할 수 있다는 사실입니다. 정규식을 기반으로 식의 한 단어를 선택하고 찾은 용어를 사용하고 해당 용어에 대한 다른 문서를 검색 한 다음 그 주위를 대체하는 매크로를 작성하는 방법을 알려주십시오.
Kendall Helmstetter Gelner

2
@ kendall-helmstetter-gelner-vimscript로 가능하거나 vim에 바인딩 된 언어 (예 : ruby ​​/ vim / tcl / perl). 스크립팅 언어에서 모든 vim 기능 및 편집기 버퍼에 액세스 할 수 있습니다.
segy

1
그것은 인상적이지만 Emacs에서 똑같이하려면 복잡한 매크로를 직접 작성하는 대신 이미 알고있는 키 입력 만 사용하면됩니다. emacs를 아는 사람이라면 누구나이 작업을 수행하는 매크로를 만드는 것은 쉽지만 공정한 조사 없이도 매크로를 구성 할 수있는 VI 사용자가 많지 않다고 말할 수 있습니다.
Kendall Helmstetter Gelner

11

두 편집자에 대해 많은 이야기가 있었지만 추가 할 5 펜스가 있습니다. 두 편집자 모두 훌륭하고 어느 쪽이든 틀릴 수 없습니다.

저는 약 15 년 동안 vi / vim 사용자입니다. 나는 여러 번 emacs로 변환을 시도했지만 매번 vim이 lisp 확장을 작성하거나 무언가를 설치할 필요없이 실제로 상자에서 누락 된 것을 수행 할 수 있음을 발견했습니다.

저에게 vim이 환경 / OS를 사용하게 만드는 편집기의 주요 차이점은 emacs가 환경을 캡슐화하거나 교체하려고 시도하는 것입니다. 예를 들어 vim에서 : r! date, 또는 : r! cal 1 2014로 달력으로 텍스트에 날짜를 추가하거나 버퍼의 내용을 16 진 버전의 내용으로 바꿀 수 있습니다. 예 : : %! xxd, 16 진수를 편집 한 후 : %! xxd -r로 돌아가서 grep, sed 등과 같은 다른 용도로 사용하십시오.

또 다른 예는 jqand 와 함께 사용하는 것 gron입니다. 예 : json blob을 편집기에 붙여 넣은 다음 변형을 위해 실행하십시오.

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

또는

:%!jq .path.to.stuff

위의 각 파이프 명령은을 통해 개별적으로 실행될 수 있습니다 :%!<command>. 여기서 %모든 문서를 의미하지만 선택, 선택된 행 등에서 실행될 output수도 있습니다 . 여기서 gron 은 jq경로 로 사용할 수 있습니다 .

예를 들어 EX 배치 편집 기능도 제공됩니다. 특정 단어를 바꾸고, 코드를 다시 포맷하고, dos-> unix 개행 문자를 변환하고, 한 번에 100 개의 파일에 대해 매크로를 실행하십시오. ex로 쉽게 수행됩니다. 이맥스에 비슷한 것이 있는지 확실하지 않습니다.

다시 말해 IMHO vim은 유닉스 철학에 더 가깝습니다. 일반적으로 더 간단하고 작지만 OS와 도구를 알고 있다면 VIM이 제공하는 것 이상을 필요로하지 않을 것입니다. 난 절대 안해

vi는 모든 유닉스 / 리눅스 시스템에서 사실상 표준이지만, 같은 일을하는 두 가지 도구를 사용하는 법을 배우십시오. 물론 일부 시스템은 mg 또는 이와 유사한 것을 제공하지만 모든 시스템을 제공하는 것은 아닙니다. 유닉스 + Vi <3.

글쎄, 내 5 펜스.


8
"Vim은 유닉스 철학에 가까워졌습니다." -여기서는 쉘에서 사용할 수있는 도구에 관한 철학에 대해 이야기하고 있습니다. 그러나 쉘 자체는 내장, 히스토리, 글 로빙 (globbing), 프로세스 제어, 프로그래밍 기능 등의 큰 덩어리입니다. Emacs는 유닉스 쉘의 철학에 더 가깝습니다. 툴을 함께 사용할 수있는 고도로 커스터마이징이 가능한 환경을 제공하며, 사용자가 자신의 코드 스 니펫을 사용하여 툴 세트를 쉽게 확장 할 수 있습니다. 나는 우리가 볼 수 있다고 생각 모두 이맥스정력이 강하게 유닉스의 전통에 뿌리를두고있다.
Matt

1
귀하의 의견에 감사드립니다. 에디터 전쟁을 시작하려는 의도는 결코 이맥스 사용자 를 화나게하는 것이 아니었다 . emacs 의 기능을 캡슐화하기 위해 복잡한 확장을 작성하는 것과는 반대로 쉘 (또는 편집기 내)에서 실제 명령을 호출하는 것이 더 쉽고 휴대하기 쉽다는 것을 알았습니다 . 이는 시간이 지남에 따라 환경이 부풀어 오르는 경향이 있습니다. 그러나 이러한 확장 기능은 사용자 기본 설정에 따라 달라 지지만 편집자는 어느 쪽도 수행 할 수 없습니다. 따라서 UNIX 전통 의 emacsvi (m) 위치에 대해 귀하와 동의하십시오 .
Alex

1
비 전쟁을 계속하기 위해, 나는 "vim은 유닉스 도구와 비슷하다"라는 당신의 비유에 동의하지 않았 음을 분명히 희망합니다. 이 직관은 "그리고 emacs는 유닉스 쉘과 비슷하다"고 확장 될 수 있다는 것이 나에게 일어났다. :-)
Matt

@ 매트 : 나는 비유를 좋아합니다. 아멘. ;)
Alex

2
emacs에서 언급 한 모든 것과 훨씬 더 많은 작업을 수행 할 수 있습니다 (예를 들어 hexl 모드는 측면에서 아스키 미리보기를 사용하여 16 진수로 파일을 편집합니다). VI도 잘 알고 있지만 Emacs에서는 매크로를 생성하는 것이 훨씬 쉽고 유연하며, 대부분의 최신 VIM 구현보다 더 많은 것을 할 수 있습니다. emacs는 대부분의 장소에 있으며 실제 텍스트 편집 향상을 제공 할 수 있기 때문에 알아야 할 이유입니다.
Kendall Helmstetter Gelner 2016 년

10

저에게 이맥스 전문가들은

  • tramp-mode를 사용하면 ssh를 통해 원격 파일을 편집 할 수 있습니다. 로컬 파일처럼.
  • 트램프 모드 + dired = 모든 기능을 갖춘 sftp 클라이언트
  • 필요한 모든 언어를 지원합니다.
  • 터미널 에뮬레이터 (term-mode)가 내장되어있어 응용 프로그램 간 전환없이 코딩을 유지할 수 있습니다.
  • 확장 성 lisp를 사용하여 마음에 들지 않는 것을 변경할 수 있습니다.

11
FWIW : vim은 처음 3 개를 거의 가지고 있습니다 (이름은 다르지만 "tramp-mode"는 vim의 "netrw"입니다). # 4는 일반적으로 vim 사용자의 기능이 아니라 버그로 간주됩니다. python / mzscheme / perl / ruby ​​/ tcl / vimscript로 "elisp"(가장 최악의 lisp 방언, 내 Emacs를 좋아하는 친구들이 말해 준다)를 바꾸면 vim에서 # 5는 사실입니다.
Laurence Gonsalves 5

3
왜 # 4 버그인지에 대해 언급 할 수 있습니까?
Hamza Yerlikaya

2
vim에서 임베디드 쉘에 대한 Conque 애드온을 확인하십시오 .
intuited

9

나를 위해 emacs는 더 나은 개발 도구를 가지고 있습니다 (태그 기반 도구뿐만 아니라).


9

나는 여기에 "The UNIX of Art Programming"이라는 책에서 인용하고 싶다.

vi와 Emacs를 모두 정기적으로 사용하는 많은 사람들은 다른 것들에 그것들을 사용하는 경향이 있으며, 둘 다 아는 것이 가치가 있다고 생각합니다.

일반적으로 vi는 소규모 작업 (메일에 대한 빠른 응답, 시스템 구성에 대한 간단한 조정 등)에 가장 적합합니다. 새 시스템 (또는 네트워크를 통한 원격 시스템)을 사용하고 Emacs 사용자 화 파일이없는 경우에 특히 유용합니다.

Emacs는 복잡한 작업을 처리하고 여러 파일을 수정하며 세션 중에 다른 프로그램의 결과를 사용해야하는 확장 된 편집 세션을 위해 자체 제공됩니다. 콘솔에서 X를 사용하는 프로그래머 (현대 유닉스에서 일반적 임)의 경우, 큰 창에서 로그인 한 직후 Emacs를 시작하고 영원히 실행하여 수십 개의 파일을 방문하고 심지어 여러 Emacs 하위 창에서 프로그램을 실행하는 것이 일반적입니다.

내가 여기서 강조하고 싶은 것은 :« 많은 사람들이 둘 다를 아는 ​​것이 가치가 있다고 생각합니다


아마도 구식 일 것입니다. 나는 이맥스의 브라우저, SSH, 뮤직 플레이어, 그리고 다른 앱을 멈춘 느린 시스템을 가질 수있는 능력이 내장되어 있다고 생각했다.
Nishant

좋은 소식은 구식이 아닙니다! Emacs 외부에서 브라우저, 음악 플레이어 등을 사용할 수 있지만 Emacs가 실제로 제공하는 것은 이러한 모든 기능에 대한 동일한 인터페이스와이를 확장하는 한 가지 방법 (Elisp)입니다.
Andriy Tykhonov

나에 따르면, 이맥스에 대한 TAUP의 관점은 구식이기 때문에, 이맥스는 하나의 앱이 실행되어 irc, 음악, 원격 편집 등과 같이 한 번에 여러 가지 일을 할 수 있기 때문에 하나를 갖는 이점이 있었다. 그러나 오늘날 당신은 이러한 각 목적에 대한 훌륭한 응용 프로그램을 가지고 있으며 메모리는 이전과 마찬가지로 문제가되지 않습니다 ... Emacs에서 Gmail을 읽는다고 상상해보십시오. Gmail 인터페이스에는 실제로 멋진 키 바인딩이 내장되어 Emacs Email Client에서 사용자 정의 할 수 있습니다. 상당한 시간이 걸리고 원래 Gmail 인터페이스만큼 좋지 않을 수 있습니다.
Nishant

구식이 아닙니다! :)
Andriy Tykhonov

> 그러나 오늘날에는 이러한 각 용도에 맞는 우수한 응용 프로그램이 있습니다. 예, 그러나 인터페이스, 구성, 사용자 경험 등이 매우 다른 모든 응용 프로그램이 있습니다 ... 그러나 Emacs는 하나의 도구입니다! 예를 들어, 나는 Emacs 키 바인딩을 매우 좋아하며 브라우저의 쉘에서 사용합니다. 그리고 응용 프로그램 내에서 적어도 일부는 동일하다는 것이 매우 좋습니다 ...
Andriy Tykhonov

9

이맥스의 장점

  • Emacs는 비 모달 인터페이스 (기본적으로)와 모달 인터페이스를 모두 가지고 있습니다 (예 : Evil, Viper 또는 Vimpulse를 통해 vim과 vi를 에뮬레이션 할 수 있음).

  • 가장 많이 이식 된 컴퓨터 프로그램 중 하나입니다. 대부분의 유닉스 계열 시스템 (Linux, 다양한 BSD, Solaris, AIX, IRIX, macOS 등), MS-DOS, Microsoft Windows, AmigaOS, OpenVMS. 무료 및 독점 유닉스 시스템은 종종 운영 체제와 함께 번들로 제공되는 Emacs를 제공합니다.

  • Emacs 서버 아키텍처를 사용하면 여러 클라이언트가 동일한 Emacs 인스턴스에 연결하고 버퍼 목록, 킬 링, 실행 취소 기록 및 기타 상태를 공유 할 수 있습니다.

  • 키 바인딩, 기능 및 명령이 즉시 문서화되어있는 광범위한 온라인 도움말 시스템.

  • 다음과 같은 기능을 포함하는 확장 가능하고 사용자 정의 가능한 Lisp 프로그래밍 언어 변형 (Emacs Lisp)

  • 강력하고 확장 가능한 파일 관리자 (디렉토리), 통합 디버거, 대규모 개발 및 기타 도구.

  • 모든 명령을 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에는 모달 인터페이스가 있습니다 (Emacs가 에뮬레이션 할 수 있음).
  • 역사적으로 vi는 Emacs보다 빠르게로드됩니다.
  • UNIX 전통과 깊은 관련이 있지만 UNIX, Linux, AmigaOS, DOS, Windows, Mac, BeOS, OpenVMS, IRIX, AIX, HP-UX, BSD 및 POSIX 호환을 포함하여 표준 C 라이브러리를 구현할 수있는 모든 시스템에서 실행됩니다. 시스템.
  • Python, Ruby, Perl 및 Lua와 같은 해석 언어에 대한 Vim 스크립트 또는 API를 통해 확장 가능하고 사용자 정의 가능
  • 어디에나 있는. 기본적으로 모든 유닉스 및 유닉스 계열 시스템에는 vi (또는 변형)가 내장되어 있습니다. Vi (및 ex는 있지만 vim은 아님)가 POSIX 표준에 지정되어 있습니다.
  • 시스템 구조 환경, 임베디드 시스템 (특히 busybox가있는 시스템) 및 기타 제한된 환경에는 vi가 포함되지만 emacs는 포함되지 않습니다.

출처 : https://en.wikipedia.org/wiki/Editor_war


7

이제 Spacemacs 때문에이 둘의 차이점에 대해 생각할 필요조차 없습니다 . 커뮤니티 중심의 Emacs 배포판입니다.

말했듯이

최고의 편집자는 Emacs도 vim도 아닙니다. Its는 Emacs와 Vim입니다.

Spacemacs는 Emacs와 Vim의 장점을 모두 결합하여 삶과 업무를 훨씬 쉽게 만듭니다.

아래 스크린 샷을 참조하십시오


(출처 : spacemacs.org )


3
이것은 속임수입니다 ... 그것은 약간의 펑키 구성을 가진 이맥스입니다;) 실제로 많은 구성
Alex

2
작동하면 좋습니다. 그렇지 않은 경우-elisp 및 emacs를 모르거나 gitter chat에서 핵심 기고자를 찾을 수없는 경우 일반적으로 운이 나빠집니다. (때로는 .emacs에서 melpa 디렉토리를 삭제하면 문제를 해결할 수 있습니다.)
Aaron Hall

1
필요한 것보다 훨씬 많은 것이 있지만 Spacemacs에 정말 만족합니다. github에 내 도트 파일이 있으므로 새 컴퓨터를 쉽고 빠르게 설정할 수 있으며 악의 (vim 키 바인딩)를 사용하기 때문에 spacemacs 구성을 설치할 수없는 컴퓨터에서 작업해야 할 때 충분한 기술을 갖추고 있습니다.
anr78

6

vim보다 emacs를 사용하기로 선택할 때 가장 큰 차이점은 emacs의 내장 gdb 지원이었습니다. Vim은 이것이 기본 배포판에 포함되어 있지 않으며 gdb와 vim을 통합하기위한 프로젝트는 MacVim으로 작업하는 것이 거의 불가능했습니다.


1
편집에 Vim을 사용하고 디버깅에 Xcode를 사용
했는데

4

사과와 오렌지와 같습니다. 둘 다 디자인과 철학이 다릅니다. Vim은 텍스트 편집기이고 Emacs는 텍스트 편집을하는 Lisp 인터프리터입니다.

Vim을 사용하면 텍스트를 빠르고 잘 다룰 수 있고 잘 처리 할 수 ​​있습니다. 개발 작업을 고조파로 만들 수있는 컴포저 블 자연 키 바인딩이 있습니다. Vim은 텍스트 조작과 같은 한 가지 일을 잘 수행하는 단순한 * nix 철학에 기반을두고 있습니다.

bash / zsh 및 tmux를 사용하여 Vim을 확장하는 것은 일반적으로 쉽고 많은 것을 배울 수 있습니다. IMHO 이것은 좋은 학습 곡선입니다. 중요한 것은 더 큰 응용 프로그램을 얻기 위해 이러한 것들을 통합하는 방법을 배우는 것입니다. Vim을 사용하면 통합 방법을 알려주지 않는 한 자연스럽게 통합되지 않기 때문에 통합을 배워야합니다. 내가 사용하는 또 다른 가치있는 확장은 Tig입니다. 그것의 ncurses 기반 Git 프론트 엔드. Tig를 자동으로 여는 바인딩이 있고 모든 Git 작업을 수행합니다.

가장 적합한 것을 결정하는 것은 최종 사용자의 책임입니다. Emacs와 Vim이 시간의 시험을 견뎌낸 것은 그들의 가치에 대한 증거입니다. 결국 좋은 프로그래머는 창의력을 발휘하기 위해 펜과 종이 만 있으면됩니다. 좋은 알고리즘은 편집기를 필요로하지 않습니다. 두 가지를 모두 시험해보고 생산성을 높이는 것이 무엇인지 확인하십시오. 배우고 발견해야 할 것이 많으므로이 두 소프트웨어에서 디자인 패턴을 배우십시오!



3

Emacs는 실제로 모든 것을수있는 프로그램이며, vi (m)은 실제로 편집기 일뿐입니다. 텍스트를 편집하는 경우 모두 훌륭하지만 이맥을 선호합니다. 왜냐하면 간단히 홈 행에서 하나를 이동하여 명령 모드에서 잘못된 것을 입력해야하기 때문입니다. 나는 당신에게 그런 문제가 없다, vi (m)은 당신을위한 편집자일지도 모른다.


2

황홀한 관점 :

vi (vim이 아님)는 전문적인 필요성입니다. 환경에 상관없이 항상 어떤 형태의 vi를 쉽게 사용할 수 있습니다. emacs에있을 때 vi에있을 수 있고, vi에 있으면 유닉스 랜드에 bash 명령을 만들 수 있습니다.

Microsquish조차도 정부 및 공개 표준을 준수하기 때문에 vi를 지원해야합니다.

제 생각에는 개발 환경이나 학계에서 하나의 멋진 장비에 갇혀있는 온실 꽃이 아닌 바쁜 환경에서 실무에 종사하는 경우 멋진 편집자에 대해 많이 아는 것이 직업 장애입니다. vim이나 emacs의 모든 멋진 트릭을 배우지 말고 편집 환경이 당신의 의지에 구부러 지도록 많은 매크로를 개발하지 마십시오. 팩토리 환경에서는 정당화 할 수없는 다른 머신에 참석할 때 방해가되는 엄청난 시간 싱크입니다.

Bill Joy의 논문을 읽으십시오-평범한 텍스트를 매우 빠르게 편집하는 데있어 매우 유능하고 아마도 아름답고 공학적인 연습입니다. Parito의 규칙이 여기에 적용됩니다 : 과일의 80 %가 바구니의 20 %에 있습니다. 일반 텍스트를 매우 빠르게 편집하는 것은 편집 능력의 요점입니다 (다른 모든 것은 선택 사항 임).


3
어떤 종이에 대해 이야기하고 있습니까? 링크가 아닌 경우 최소한 이름을 지정할 수 있습니까?
darkfeline

2
"MS조차도 vi를 지원해야합니다." 이것을 백업 할 수 있습니까?
dodgethesteamroller

1

사이트 간 이동이 많거나 업무 시스템에 로그온하는 경우 vim을 사용하는 것이 좋습니다.

모든 * nix 머신은 기본적으로 vi를 설치합니다.

대부분의 sysdamins는 ksh를 기본 쉘로 선호합니다. ksh는 vi (또는 emacs) 명령 키를 사용하여 기록을 검색하고 명령 행을 편집합니다.

vi를 잘 모르면 표준 구성으로 유닉스 박스에 로그인 할 때 심하게 장애를 겪게됩니다.

이런 이유만으로 vim을 평상시 매일 편집자로 추천합니다. 나는 이멕스 팬들이 베어 본 유닉스 서버에서 구성 파일을 수정하려고 노력하면서 머리카락을 찢어 버리는 것을 보았습니다.


1
떠들썩한 파티를 위해 사용해보십시오 set -o vi당신의 .bashrc대신에, set -o emacs기본적으로 사용된다. 나는 ksh를 사용한 적이 없지만 같을 수도 있습니다.
sjas

1

귀하의 질문에, 당신은 Lisp에서 프로그램하기를 원한다고 언급하지 않았습니다! 그러나 당신이 당신의 대답을 언급하면서, 나는 당신이 실제로 LISP 프로그래밍 인터페이스를 원한다는 것을 이해했습니다.

정확한 작업을 위해서는 Vi를 잊어 버리십시오. LISP와의 이맥스 통합은 훌륭합니다! SLIME을 사용해야합니다. 그런 다음 REPL과 훌륭하게 통합되어 eval기능, 버퍼 또는 파일을 emacs 버퍼의 실행중인 인터프리터 등으로 직접 변환 할 수 있습니다.


1
예, 나는 이것을 알고 있지만 괜찮은 Lisp 편집기를 찾고있는 것은이 질문을하는 이유가 아닙니다. 그것은 단지 예일뿐입니다. 그래도 답변 주셔서 감사합니다!
Sasha Chedygov

1

나는 현재 프로덕션 / 리서치 환경에서 약 2 년 동안 spacemacs와 약 1 년 동안 neovim을 사용 해왔다. Spacemacs는 레이어와 같은 멋진 추가 기능이있는 emacs입니다. 그리고 neovim은 몇 가지 추가 기능이있는 vim 포크입니다.

경험면에서 두 가지 모두 만족스럽지 않습니다. 그리고 나는 여전히 텍스트 편집 요구에 대한 장기적인 해결책을 찾고 있습니다.

간단한 비교는 다음과 같습니다.

  • Neovim, vim, emacs, spacemacs 등 모든 편집기는 대부분의 편집기에 비해 리소스를 덜 소비합니다.

  • Neovim / vim은 emacs보다 약간 빠르며 특히 spacemacs보다 빠릅니다.

  • 편집 경험의 관점에서. emacs 패키지가 우수하다고 쉽게 말할 수 있습니다. 나는 그것이 emacs의 핵심과 더 잘 혼합되기 때문이라고 생각합니다.

  • Vimscript는 훌륭하고 vim 생태계에도 훌륭한 프로젝트가 있습니다. 좋은 점은 지금까지 본 대부분의 emacs 프로젝트보다 더 잘 문서화되어 있다는 것입니다.

  • 사용중인 패키지에 따라 둘 다 결함이있을 수 있습니다. Spacemacs는 멈추는 경향이 있으며 neovim은 무서운 오류 메시지를 표시하는 경향이 있으므로 독을 선택하십시오.

  • vim의 모달 편집은 직관적 인 개념은 아니지만 일단 익숙해지면 아무 것도 원하지 않습니다. 두 편집자가 제공합니다.


1
"모달 편집 (...)에 익숙해지면 원하는대로 만들 수 있습니다."-흥미 롭습니다. 몇 년 동안 이멕스를 악의 모드로 사용하고 모달 편집에 익숙해졌으며 이제는 모달이 아닌 모드로 돌아갔습니다. 나는 이것이 사람뿐만 아니라 삶의 맥락 / 시간 / 무엇이든에 달려 있다고 생각합니다. 맛, 나는 생각한다. :)
Jay

1
@Jay 나는 추측하지만 열 선택과 같은 것들을 놓치지 않고 ": XX"로 뛰어 넘습니까?
Kaan E.

실제로는 아닙니다 ... 때때로 Emacs의 사각형 선택을 사용합니다. 그리고 : xx 대신에 "Mg g XX"를 사용합니다. 일반적으로 Emacs 응용 프로그램 (디버거 등)이 올바른 줄로 보내집니다.
Jay

0

키 입력 실행 ::: vi 편집은 입력 된 키의 각 순열을 유지합니다. 이 명령은 의사 결정 트리에 명령을 명확하게 식별하는 경로를 생성하는 반면, Emacs 명령은 즉시 실행되는 유형이 지정된 키 조합이므로 명령 사용 여부를 선택할 수 있습니다.

메모리 사용 및 사용자 지정 가능성 ::: vi는 더 작고 빠른 프로그램이며 사용자 지정 용량이 제한되어 있지만 Emacs는 시작하는 데 시간이 오래 걸리고 더 많은 메모리가 필요합니다. 그러나 텍스트 편집을 위해 설계된 Lisp 프로그램의 실행 환경이므로 사용자 정의가 가능하고 많은 기능이 포함되어 있습니다.


0

vim 은 편리한 편집기로 vim filename파일을 열고 편집하고 저장하고 닫는 간단한 유형 입니다.

emacs 는 편집기 인 척하는 "운영 체제"이며, eval동작을 변경하고 원하는대로 확장 할 수 있습니다. mode이맥스에 수신 / 송신 이메일은 운영 시스템에서 이메일 소프트웨어와 같다.

예를 들어 구성 파일을 수정하는 등 간단한 편집을 할 때는 vim을 사용 합니다.

그렇지 않으면, 나는 emacs를 떠나지 않습니다 .


0

가장 큰 차이점은 디자인 목표라고 생각합니다. VIM은 UNIX 용 작업 편집기입니다. Emacs는 GNU 및 lisp 해커를위한 것이므로 혼합 된 디자인 요소가 있습니다.

나는 emacs를 좋아하는 동안 내 워크 스테이션에서 vim을 사용합니다.


0

저는 Emacs 팬이지만 다음과 같은 이유로 다른 개발자가 VI를 배우도록 권장합니다.

  1. VI를 사용하여 emacs 메이크 파일을 편집 할 수 있습니다.
  2. VI는 ed 명령을 포함하며 모든 UNIX 사용자는 ed 및 sed를 알아야합니다.

VIM이 emacs보다 빨리 시작하는 것에 대한 몇 가지 의견을 발견했습니다. 정말로 관심이 있다면 서버 모드에서 emacs를 실행하고 별명 'emacs'를 'emacsclient'로 실행하십시오. 클라이언트는 어깨에서 서버를 탭하고 편집 할 파일을 알려주기 때문에 매우 빠릅니다. MacOSX에서 emacsclient는 33K에 불과하고 emacs는 287M입니다.

현대 하드웨어에 이것이 필요한지 확실하지 않습니다. MacBook Pro (2013 Retina)에서 셸에서 emacs를 실행하면 거의 즉시로드됩니다. 일시 정지가 전혀 감지되지 않습니다. Emacs.app (GUI 버전)을 실행하면 3 초가 소요될 수 있습니다.

내가 이맥스에 대해 듣는 대부분의 불만은 이맥스에 대해 잘못 알고있는 사람들로부터 온 것 같습니다. 1982 년 이래로 vi와 emacs를 모두 사용한 후, 나는 emacs가 vi보다 훨씬 느리게로드되어 초기 UNIX 박스에서 대부분의 물리적 메모리를 사용한 시간을 분명히 기억하지만, 그것은 더 이상 사실이 아니며 적어도 15-15 년이 아닙니다. 20 년.

내가 인정할 한 가지 불만은 "emacs pinkie"입니다. 내가 어렸을 때 이것은 결코 나를 귀찮게하지 않았다. 이제 58 세가 되었기 때문에 내 새끼 손가락은 이맥스 화음을 위해 Control 키에 반복적으로 액세스하여 약간 아프게됩니다. "fn"키를위한 공간을 만들기 위해 Control을 한 위치 오른쪽으로 이동 한 MacBook Pro 키보드에서 특히 그렇습니다. Control이 왼쪽 하단 키일 때 그리 성가신 것은 아닙니다.


emacs를 "덤프"할 수도 있습니다. 이는 기본적으로 원하는 컴파일 된 elisp 확장의 스냅 샷을 만드는 것을 의미합니다. Emacs는이 방법으로 훨씬 빨리 시작하지만 포함 할 확장을 결정하는 데 약간의 시간이 걸립니다.
Phil Harbison

또한 emacs에서 "Towers Of Hanoi"를 재생할 수 있습니다. 얼마나 멋진가요? :)
Phil Harbison 2018 년

다시 : "emacs pinkie". HHKB Professional이 기반으로하는 Sun Type 3/4와 같은 일부 구형 키보드에서는 컨트롤이 Caps Lock이있는 곳에 있습니다. 나는 당신이 경험 한 emacs 경험이 없지만, 홈 행에서 Control을 사용하는 데 익숙해졌습니다. 모든 키보드 (MacBook Pro도 마찬가지)에서 변경했습니다. HHKB는 Enter 바로 위에있는 Backspace와 1 옆에있는 Esc와 같은 몇 가지 추가 개선 사항이 있습니다.
martinweiss

@PhilHarbison은 "덤프"에 대해 자세히 설명 할 수 있습니까?
A_P 2019

0

나는 vim을 먼저 사용하고 나서 emacs로 전환 한 다음 vim으로 전환했다. 이제 emacs를 다시 실험하고있다.

  • 둘 다 훌륭한 편집자입니다.
  • 둘 다 오늘날 매우 확장 가능합니다
  • 둘 다 훌륭한 플러그인과 커뮤니티가 있습니다

개발자로서 우리는 많은 것을 입력하고 마침내 버퍼와 파일을 이동하는 것이 가장 큰 반복 작업이므로 빨리 움직일 수있는 편집기가 필요합니다!

emacs를 다시 실험하려는 동기는 Ctrl 키를 사용하여 vim보다 키 바인드가 더 빠르며 추론하기 쉽다는 것입니다.

vim에는 모드가 있으며 삽입 모드, 시각 모드, 일반 모드가 있습니다. 무언가를 누를 때 발생하는 현상은 사용자의 모드에 따라 다르며 편집에 대한 상태 저장 방식입니다. 이동하고 삽입 모드로 들어가고 편집하고 삽입 모드에서 나와 다시 이동합니다. ESC 프레스 나 이와 비슷한 것을 놓치면 자주 자아를 잃습니다.

emacs에는 모드가 없습니다. 기본적으로 분홍색으로 Ctrl을 누르고 Cx Cf, Cx Cs, Cx Cc와 같은 키 입력을 입력하십시오. Ctrl 키를 놓아야하는 키 바인드가 있습니다.이 키가 싫어 컨트롤을 누른 상태에서 항상 키 바인드로 바꿉니다.

나는 emacs 접근 방식이 생각하고 타이핑하는 것이 더 빠르다고 생각하지만 vim에는 또 다른 장점이 있습니다. 명령은 구성 가능하며 일반적으로 형식이 있습니다. 예를 들어, 줄 dd을 삭제하려면을 사용하여 단어를 삭제할 수 있습니다 dw. 플러그인은 그 벌채를 사용합니다. vim-surround 플러그인을 사용하면 ds "(인접 서라운드 삭제)로 따옴표를 삭제하고 다음 /까지 삭제할 수 dt/있습니다. 이전 / :까지 삭제하십시오 dT/. 당신이 배우는 한 움직이는 것들이 매우 흥미로워지기 시작합니다.

요약하면, 오늘 emacs 키 바인드가 매크로 편집에 더 빠르며 vim 명령이 미세 편집에 더 강력하다는 것을 알았습니다.

지난 5 년 동안 vim을 사용해 왔기 때문에 주로 단어, 줄, 주변, 블록 등에 대한 생각을 편집합니다.이 줄 삭제, 따옴표 제거, 따옴표 바꾸기, 커서에서 단어 삭제 그것을 위해 움직인다

마지막 인용으로 emacs 또는 vim보다 fzf에 더 관심 이 있으며 완전히 fzf 기반의 편집기를 사용하고 싶습니다.


-9

첫째로 Vi (원래 실현)는 오늘날 사용되지 않습니다. 당신이 말하는 것은 Vim 파생물입니다.

Vim 기능을 확장하려면 Emacs가 아닌 Vim을 다시 컴파일해야합니다.

이맥스는 자체적으로 Vim을 가지고 있습니다 (바이퍼 모드).

Emacs는 일반적으로 수동 설치가 필요합니다. Vim은 일반적으로 OS와 같은 모든 Unix에 사전 설치되어 있습니다.

Vim을 사용하면 Emacs를 싫어하므로 먼저 Emacs부터 시작하십시오.

또한 http://www.dina.dk/~abraham/religion/vi-tutorial.html을 읽으십시오 (링크가 내려 가서 사용 하십시오 )

hxxp : //en.wikipedia.org/wiki/Editor_war에서 답변 검색


8
vim을 확장하기 위해 다시 컴파일 할 필요는 없습니다. vim을 종료 할 필요조차 없습니다.
너무 많은 PHP

1
vimscript / Python / Ruby / etc가 모든 Vim 내부 구조에 액세스 할 수 있습니까? 편집기 코드베이스가 EDITOR의 한 수준의 복잡성에서 확장 또는 확장 복잡성을 만드는 데 도움이됩니까?
gavenkoa

1
Vim 스크립트의 많은 부분은 외적인 MACROS와 같습니다. Vim을 확장하려면 플러그인이 필요합니다 ((
gavenkoa

1
Vi는 사용되지 않습니까?!?! 뭐? NVI는 독창적 인 것으로 간주됩니까? 아니면 '전통적인 vi'? FreeBSD와 같은 많은 시스템, ArchLinix는 전통적인 vi 또는 nvi를 번들로 제공합니다. 데비안과 같은 일부 시스템은 기본적으로 호환 모드 인 vim을 사용합니다 (일반적인 vi와 거의 비슷 함)
Alex

1
@gavenkoa, Alex와 절대적으로 동의합니다. Gentoo, 일부 BSD 또는 Arch Linux와 같은 수동 설치가 필요한 시스템은 절대 시도하지 않았습니다. 또한«Vim을 사용하려면 Emacs가 싫으므로 먼저 Emacs부터 시작하십시오.» VIM을 먼저 시도하고 조금만 생각하면 그것은 사람들에게 함수형 프로그래밍을 먼저 시도하지 말라고 상기시킵니다. 나는 더 빨리 그것을 시도하지 않았다 슬프다 ...
JMCF125
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.