Emacs 또는 Vim에서 * live * 편집 차단


9

jEdit은 블록 편집을 지원하지만 Emacs와 Vim은 같은 주제에 대해 약간의 사용성 문제가있는 것 같습니다. 누군가가 미지의 것을 여기에 채울 수 있다면 어느 편집기를 사용하는 것이 훨씬 더 견딜 수 있습니다.

  • 실제 사각형 선택 : 화면 에서 선택 이 사각형 인 경우 선형 선택이 아니라 Emacs로 제한되는 영역을 계산하는 데 사용됩니다.
    • j 편집 : 누른 상태 Ctrl에서 선택하십시오.
    • Vim : 클릭 Ctrl-v하고 선택하십시오.
    • 이맥스 : 불명 ; 400 + 라인 플러그인 이 필요한 것 같습니다 .
  • 라이브 사각형 편집 : 블록 선택 후 편집 할 때 모든 라인 에서 결과가 어떻게 보이는지 확인합니다 .
    • jEdit : 입력하기 만하면 최종 결과가 나타납니다.
    • Vim : 클릭 Shift-i하여 입력하십시오. 를 눌러 Esc삽입 모드를 종료 할 때까지 첫 번째 줄에만 최종 결과를 표시 합니다. 모든 줄에서 결과를 즉시 볼 수있는 방법이 있는지 알 수 없습니다.
    • 이맥스 : 불명 ; 유일한 방법은 C-x r t을 누른 후 채울 텍스트를 설정하는 것 Ret입니다.
  • 텍스트 외부 위치에서 선택 시작 및 종료 : 예를 들어 각 줄의 첫 번째 N 문자를 제거하고 싶지만 첫 번째 및 마지막 행은 N 문자 미만입니다.
  • 블록 인라인 붙여 넣기 : 이미 텍스트를 밀어처럼 당신이 여러 줄을 붙여 것처럼 복사 한 블록을 붙여 넣기 아래 작성하지 못했습니다.
    • jEdit : 기본값입니다. 블록을 블록으로 붙여 넣으려면 먼저 다른 블록을 선택해야합니다.
    • Vim : OEscVp.
    • 이맥스 : 알 수 없음 .

일반적인 Emacs 블록 선택 기능은 cua-mode플러그인 에서 찾을 수 있습니다 .


분명히 Emacs의 열 편집 모드는 일종의 라이브 사각형 편집을 수행 할 수 있습니다. youtube.com/watch?v=k-6BVjlBSVo
— Tom

emacs 400+ 라인 "plugin"에 대한 관찰 .. 멀티-편집 (multi-edit) 이라고 불리는 gedit와 비슷한 애드온 은 1000 줄 이상의 파이썬 코드를 가지고있다. 나를 위해, pugin은 매우 유용합니다 (어떻게하지 않고 어떻게 살아 남았습니까 ). 크기는 학문적입니다 ... 나는 그것을 실행했을 때 "1", ": 범위를 벗어난 인수 명령 줄-정상화-파일 이름이" :( ... 그것은 내가 너무 .. 찾고 있었어요 단지 무엇
— Peter.O

4
jEdit을 사용하지 않은 사람들을 위해 용어를 설명하십시오. 여기서 "라이브"가 의미하는 바, "라이브 사각형 편집"이 무엇인지 또는 "블록 인라인 붙여 넣기"가 무엇인지 이해하지 못합니다.
— Gilles 'SO- 악마 중지

답변:


7

Vim은 대답 할 수 있지만 Emacs는 대답 할 수 없습니다.

텍스트 밖의 위치에서 선택 시작 및 종료 :

:set virtualedit=block원하는 동작을 활성화합니다. 초기 콜론을 삭제하고 원하는 경우 .vimrc에 추가 할 수 있습니다. 자세한 내용 :help 'virtualedit'은 Vim에서 확인하십시오.

블록 인라인 붙여 넣기 :

방금 p명령 모드를 누르면 Vim은 블록을 삽입하고 각 줄의 오른쪽으로 문자를 밀어 넣습니다. 다른 블록을 선택 p하고을 누르면 Vim은 해당 블록을 붙여 넣은 블록으로 바꿉니다.

명령 모드 키 시퀀스를 사용하여 블록을 "선으로"붙여 넣을 수 있습니다 OEscVp. 이렇게하면 현재 줄 위에 줄을 삽입하고 ( O Esc) 줄 단위로 선택 ( V) 한 다음 붙여 넣습니다 ( p). 예를 들어 -type that yp과 같은 매핑을 사용하여 이를 단축 할 수 있습니다 :nmap yp O<Esc>Vp. <Esc>Esc 키를 누르는 대신 다섯 번의 키 입력을 사용 하십시오.


에 대한 좋은 팁 virtualedit; 그것을 시도해야합니다. 인라인 붙여 넣기에 대한 예상 기능에 대한 설명은 업데이트 된 질문을 참조하십시오.
— l0b0

블록을 줄 단위로 붙여 넣는 방법으로 답변을 업데이트했습니다.
— Jander

5

예를 들어, 각 줄의 N 첫 문자를 제거하고 싶지만 첫 번째와 마지막 행에 N 문자 미만이 포함되어 있습니다.

이맥스 : 첫 번째 줄에서 선택을 시작하고 마지막 줄에 누락 된 문자 수 (예 : 공백)를 추가 한 다음 kill-rectangle을 사용하십시오.

또는 선 길이에 관계없이 창에서 자유롭게 이동할 수있는 artist-mode또는 참조하십시오 picture-mode.

블록 인라인 붙여 넣기

Emacs : 먼저 kill-rectangle을 사용하여 블록을 저장하거나 레지스터에 저장 한 다음 삽입 점으로 이동하고 delete-rectangle을 사용하여 저장된 사각형을 삽입하십시오.

400+ 라인 플러그인이 필요한 것 같습니다.

이맥스의 경우 왜 문제입니까? 플러그인을 컴파일 할 수 있고 emacs 철학은 모든 것을 핵심에 넣지 않고 플러그인을 사용하여 편집기를 확장한다는 것입니다.


4

이 'CUA 모드' Emacsen에서 22.1 함께 제공하고 이상 또는 이맥스 이전 버전의 다운로드 링크를 따르십시오. 기능을 소개 하는 짧은 비디오 가 있습니다.

일반적인 사각형 명령의 경우, 매뉴얼을 읽으면 쉽게 소개 할 수 있습니다.


이맥스 cua-mode는 좋아 보인다! +1 .. 언급 한 비디오를 찾을 수 없습니다 . 질문 바로 아래에있는 주석에서 Tom의 링크를 참조하십시오 . (다른?) 정보 비디오에 대한 링크는 ...
— Peter.O

@fered Ooops, 잘라 내기 / 붙여 넣기 오류가 수정되었습니다.
— Trey Jackson

0

vim에서 첫 n 개의 문자를 삭제하는 일반적인 방법은 다음과 같은 작업을 수행하는 것 :%s/.\{0,6\}//입니다.

%전체 문서를 수행합니다. 당신은 그것을 선택이나 관심있는 실제 줄로 바꿀 수 있습니다. s명령은 "대신"입니다. 정규 표현식을 사용자가 제공 한 것으로 바꾸고 특정 옵션을 추가하지 않으면 각 행에서 한 번만 일치합니다. 는 /이 모든 문자를 할 수 있지만, - 구분자이다 /가 다른 사용 뭔가에 유리하다 않는 한 (당신이 탈출하지 않아도 일반적으로 사용되는 /명령의 나머지 부분에서). 첫 번째 구분 기호 뒤의 인수는 선택에서 일치하는 문자열을 찾는 데 사용되는 정규식입니다. 두 번째 구분 기호 뒤의 인수는 일치하는 항목으로 대체됩니다.

따라서이 명령은 모든 문자의 0 ~ 6 개의 인스턴스를 찾은 후 아무것도 아닌 것으로 바꾸라고 말합니다.


내가 요구 한 것이 아닙니다.
— l0b0

그러나이 질문을 찾는 다른 사람들에게는 유용하지 않다고 생각합니까? 나는 그것이 그렇게 생각하기 때문에 여기에 넣었습니다.
— Shawn J. Goff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.