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.