[vim] Vim / Emacs가 GUI 텍스트 편집기를 통해 제공하는 특정 생산성 향상은 무엇입니까?

이것은 트롤이나 화염 미끼 또는 그와 비슷한 것을 의미하지 않습니다. 저는 지금 몇 달 동안 (제 터미널에서 설정 파일을 편집하기 위해) 선택한 콘솔 편집기로 Vim 을 사용해 왔지만 웹 애플리케이션을 작성하는 일상적인 일상 작업에는 견딜 수 없을 것 같습니다. , GUI 텍스트 편집기로 수행합니다 (중요하지 않음).

내 GUI 텍스트 편집기가 내 작업에 필요한 모든 것을 할 수 있다고 생각합니다. 둘 다에 대한 자동 완성 기록으로 괜찮은 검색 / 대체 기능이 있습니다. 구문 강조, 줄 번호, 탭 인터페이스, 쉬운 복사 및 붙여 넣기 등이 있습니다. 현재 편집기에서 누락 된 유일한 것은 정규식 일치이지만 정규식 검색 / 교체를 수행 할 GUI 텍스트 편집기가 많이 있습니다.

내가 방금 말한 것을 감안할 때 Vim (또는 Emacs)이 모든 컴퓨터에 설치되어 있다는 사실을 제외하고 GUI 텍스트 편집기에 비해 어떤 생산성 이점이 있습니다. Vim / Emacs에서 더 좋고 / 빠르거나 기존 GUI 텍스트 편집기로는 불가능한 특정 작업을 원합니다.



답변

Vim의 경우 :

  • Vim은 대부분의 편집기보다 다른 도구 (셸 명령, 스크립트, 컴파일러, 버전 제어 시스템, ctag 등)와 더 잘 통합됩니다. :.!명령의 출력을 버퍼로 파이프하는 것과 같은 간단한 것조차도 대부분의 GUI 편집기에서 찾을 수없는 것입니다.

  • 탭 인터페이스는 Vim / Emacs가 제공하는 “윈도우”인터페이스만큼 좋지 않습니다. 두 개 이상의 파일을 동시에 나란히 볼 수 있습니다. 화면에서 더 많이 볼수록 변수 이름과 함수 시그니처를 정신적으로 부기하는 대신 문제에 대해 더 많이 생각할 수 있습니다.

  • Vim 정규 표현식의 힘을 과소 평가하지 마십시오. 특정 열, 마크, 커서 위치, 특정 문자 클래스 (키워드, 식별자) 등과 일치하는 Vim 관련 확장이 많이 있습니다.

  • 통합 diffgrep(플랫폼 독립적이므로 컴퓨터를 변경할 때마다 새로운 도구를 다운로드하고 배울 필요가 없습니다).

  • 비주얼 블록 모드 (열 편집 용)는 많은 편집자들에게 부족하지만, 내가 없이는 살 수 없습니다. 나는 이것을 사용하는 직장에서 사람들을 놀라게했고, 몇 번의 키 누름으로 누군가가 수동으로 10 분을 보냈을 것 같은 편집을했습니다.

  • 다중 복사 / 붙여 넣기 레지스터. 하나만 있으면 클립 보드가 막히는 것을 방지하기 위해 이상한 왜곡을 겪게됩니다. 그럴 필요가 없습니다.

  • Vim의 실행 취소 / 다시 실행 시스템은 타의 추종을 불허합니다. 무언가를 입력하고, 실행 취소하고, 다른 것을 입력해도 Vim은 스택이 아닌 실행 취소 트리를 사용하기 때문에 입력 한 첫 번째 항목을 다시 가져올 수 있습니다. 거의 모든 다른 프로그램에서는이 상황에서 처음 입력 한 내용의 기록이 손실됩니다.

  • Vim에서는 텍스트 이동, 복사, 붙여 넣기 및 삭제가 엄청나게 빠릅니다. 명령은 간단하고 단일 키 누르기이며 구성 가능합니다. 조심스럽고 힘든 마우스 강조 표시와 Ctrl-X를 수행하는 모든 시간을 더한 다음 모두를 a로 da(바꿉니다 (일치하는 괄호 세트와 그 안에있는 모든 항목 삭제). 생각보다 더 많은 시간을 절약합니다.

  • *커서 아래에있는 단어를 검색하거나 ., 명령을 반복하거나 %, 여는 괄호와 닫는 괄호 사이를 바운스 하는 것과 같은 사소한 것 입니다. 나열하기에는 너무 많습니다.

  • 기본 제공 스크립팅 언어와 강력한 키 매핑 및 매크로 기능을 통해 필요한 방식으로 편집기를 확장 할 수 있습니다. 이미 작성되고 다운로드 가능한 수많은 스크립트.

자세히 살펴보면 다른 편집자들도 가지고있는 기능조차 Vim이 더 잘하는 경우가 많다는 것을 알게 될 것입니다. 모든 편집기에는 구문 강조 기능이 있지만 Vim에는 거의 모든 파일 형식에 대한 구문 파일이 있으며 종종 많은 구성 옵션이 있으며 직접 작성하는 것이 간단합니다. 많은 편집기가 서로 다른 파일 인코딩을 처리하지만 Vim은 파일 인코딩을 설정하고 변환하는 매우 구체적이고 확실한 방법을 제공합니다. Vim에 대해 저에게 가장 깊은 인상을 준 것은 그 당시 문제가 있었던 다른 편집기에 비해 탭 / 스페이스 들여 쓰기 옵션과 Unix / DOS 줄 바꿈을 얼마나 완벽하게 처리하는지입니다.

이 포인트 중 많은 부분이 Emacs에 동일하게 잘 적용됩니다 (다르지만 일반적으로 동일하게 강력한 방식으로).


답변

(vim은 나의 독이다. 나는 emacs가 비슷한 이득을 제공한다고 확신한다)

가장 큰 이점은 마우스를 만질 필요가 없다는 것입니다.

나에게 가장 편리한 것은 특정 문자 또는 문자 조합으로 앞으로 (또는 바로 앞) 이동하거나 몇 번의 키 입력으로 뒤로 이동하는 것입니다. 같은 조건으로 두 번 또는 열 번 앞으로 점프하는 것은 단순히 숫자를 접두사로 붙이는 문제입니다.

편집을 반복해야하는 경우 해당 위치로 이동 (2 ~ 3 번 키 입력) 한 다음 “.”를 누릅니다. 마지막 편집을 반복합니다. 검색 조건이 같으면 앞으로 (또는 뒤로) 점프하는 것이 더 쉽습니다 (키 입력 한 번).

기본적으로 짧은 시간 내에 10 개 또는 20 개의 키보드 단축키를 배울 수 있습니다. 즉, 마우스를 잡기 위해 계속 손을 움직일 필요가 없습니다. 이렇게하면 마우스를 계속 잡아야하는 경우보다 3 ~ 4 배 많은 편집 동작 / 명령을 얻을 수 있습니다.

며칠이 지나면 <Down>GUI 편집기를 사용할 때 마우스에 손을 뻗어 야 할 때 (또는 15 번 누를 때마다) 심술 궂게 느껴질 것 입니다.


답변

나는 항상 왜 Vim에 대한 가가가 거의 없는지 궁금했습니다. Vim 파워 유저의 실제 동영상보기 :

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

현재 편집자가 자신이하는 일을 할 수 있다면 전환 할 필요가 없습니다! 🙂

또한 http://www.viemu.com/a-why-vi-vim.html을 읽으십시오 .

비디오를보고 그 기사를 읽은 후 VIM을 배우기 시작할 수밖에 없었습니다. VIM으로 전환 한 지 거의 1 년이 지났는데 다른 것을 사용하는 것은 상상할 수 없습니다.


답변

전용 텍스트 편집기의 진정한 힘 중 하나는 매크로 편집이라고 생각합니다. 반복은 많은 프로그래머에게 고통스럽고 적절한 매크로를 작성하는 것은 경계선이 재미있을 수 있습니다. 키보드를 통해 모든 작업을 수행하지 않는 경우 매크로를 만들려면 이미 사용중인 명령을 사용하는 대신 추가 명령 집합이 필요합니다.


답변

저는 vi 키 바인딩에 대해 약간의 능력이 있지만 전반적으로 Emacs를 선호합니다. 이러한 편집기가 열렬한지지를받는 ​​이유는 제공하는 편집 모델이 최신 시스템보다 강력하기 때문입니다. 따라서 확장 기능을 사용하지 않더라도 “vi keybindings”또는 “emacs keybindings”를 제공하는 것만으로는 충분하지 않습니다. 또는 emacs 또는 vi에 대한 사용자 정의.

나는 내가 그것을 가장 잘 이해하기 때문에 Emacs의 모델에 대해서만 이야기 할 것입니다. 오늘날 텍스트 편집을위한 일반적인 모델은 텍스트를 삽입, 삭제, 선택하고 시스템 클립 보드에 잘라 내기 / 복사 / 붙여 넣기 할 수있는 텍스트 버퍼를 포함합니다.

물론 Emacs 버퍼는 이러한 작업을 지원할 수 있습니다. 표시되는 각 창에 대한 커서 위치 추적과 함께 창에 만들어진 “마크”도 추적합니다. “포인트”(커서 위치)와 “마크”사이의 텍스트를 “지역”이라고하며 주류 편집자의 선택과 대략 일치합니다.

차이점은 Emacs는 마크 링에서 마크가 설정된 마지막 여러 위치를 추적하고 키 입력 (구성에 따라 두 개)으로 해당 위치로 돌아갈 수 있다는 것입니다. 특히 버퍼에서 위치를 변경하는 많은 Emacs 명령이 이전 위치에 표시를 설정하기 때문에이 기능이 매우 유용합니다. 예를 들어 Python 모듈을 편집 할 때 파일 맨 위에 import 문을 추가해야합니다. 버퍼의 맨 위로 이동하기위한 키 입력 (Alt- <)은 표시를 설정합니다. import 문을 추가합니다. Ctrl-u Ctrl-Space를 누르면 내가 시작한 곳으로 돌아 왔습니다. 이 작업을 계속해서 이전 위치로 돌아갈 수도 있습니다. (해당 import 문을 추가하는 동안 일부 텍스트를 선택해야 할 수도 있습니다.)

다른 (그리고 더 잘 알려진) Emacs의 차이점은 킬 링입니다. 버퍼에서 텍스트를 제거하기위한 대부분의 키 입력은 텍스트를 킬 링에 저장합니다. 그러면 “yank”명령 (Ctrl-y)으로 다시 불러올 수 있습니다. 필수 기능은 후속 yank 명령이 이전에 죽인 텍스트를 검색한다는 것입니다. 따라서 연속 된 텍스트의 여러 섹션을 죽인 다음 순서대로 검색 할 수 있습니다. 또한 yank 후 Alt-y로 킬 링을 순환하여 검색된 텍스트를 제거하고 링에 다음 항목을 삽입 할 수 있습니다.

Emacs는 1978 년에 이러한 기능을 가지고있었습니다. 어느 정도까지 적용 할 수있는 유일한 다른 주요 시스템은 NeXTStep입니다 (현재 Cocoa에 상 속됨). 다른 도구는 특정 작업에 대해 더 많은 기능을 제공하고 Emacs Lisp보다 사용하기 쉬운 언어로 확장 할 수 있으며 더 멋진 시각적 인터페이스를 제공합니다. 그렇기 때문에 일단 사용 방법을 알고 나면 종료하기가 너무 어렵습니다.


답변

이 정확히 특정 작업이 아니라 사람들을 위해, 심지어 사람 수 있습니다 RSI 고통, 당신의 손은 정력에 키보드를 떠나지 않을는 사실은 거의 한심하다. 실제로 직장에서 마우스를 왼손잡이로 만들었습니다. 마우스를 잡기 위해 손을 덜 움직일 수 있기 때문입니다 (집에있는 키보드에는 숫자 패드가 없어서 오른쪽에 둘 수 있습니다).

또 하나의 작은 이점은 IIRC, 원래 vi가 매우 느린 원격 연결을 통해 파일 편집 속도를 높이도록 설계되었다는 것입니다. 오늘날 거의 발생하지는 않지만 연결 속도가 느리다면 GUI 텍스트 편집기를 실행하고 응답 할 수 있기를 바랍니다.


답변

나에게 큰 생산성은

  • 키보드로 거의 모든 것을 할 수 있습니다.
  • 강력한 매크로.
  • 9 개의 OS를 사용하는 20 년 간직 원에서 기본 키보드 바인딩은 변경되지 않았습니다. 나는 거의 모든 시스템에 뛰어들 수 있으며 이미 편집기에 대해 알고 있습니다.
  • 텍스트 편집기에서 원할 수있는 거의 모든 기능이 이미 추가되었습니다.