정규식 대체를 통해 VIM으로 붙여넣기

정규식 대체를 통해 VIM으로 붙여넣기

VIM의 y명령을 사용하여 일부 코드(여러 줄)를 복사하고 p-command를 사용하여 파일의 다른 곳에 붙여넣고 싶습니다.

그런데 복사한 코드를 일부 변경한 후 빠르게 붙여넣고 싶습니다. 예를 들어, 복사한 코드를 대문자로 변환하고 싶습니다("hello"를 복사하고 "HELLO" 붙여넣기).

추가 예는 들여쓰기를 추가하는 것입니다.

복사:

function hello() {
}

그러나 붙여넣기:

   function hello() {
   };

이 작업을 수행하는 빠른 방법이 있나요? 최소한의 명령, 파일/구성 변경을 사용하고 이전 플랫폼을 포함하여 많은 플랫폼에서 작동하는 솔루션을 원하므로 표준 방법/명령/프레임워크를 사용하는 것이 더 좋습니다., macOS vim 등

PS 특히 붙여넣기 위치에 따라 올바른 들여쓰기로 코드를 붙여넣기 위한 다른 기본 제공 방법이 있다면 알고 싶습니다. 그러나 복사한 콘텐츠를 붙여넣기 전에(소스 코드가 아니더라도) 무작위 정규 표현식을 수행하는 방법을 이해하고 싶습니다.

답변1

, 및 vim(줄 기반) 또는 ,(문자 기반) 의 마커는 '[이전에 변경했거나 가져오거나 붙여넣은 텍스트의 경계를 식별합니다.']`[`]

따라서 >']커서 위치와 붙여넣은 텍스트 끝 사이의 코드는 들여쓰기됩니다 p.

gU`[after p/ P커서부터 붙여넣기 시작 부분까지의 텍스트를 대문자로 표시합니다.

답변2

문자나 단어의 대소문자를 변경하기 위해 정규식 검색 및 바꾸기가 필요하지 않습니다.

  • ~문자, 단어, 방향, 선택 항목 등의 대소문자를 바꿀 수 있습니다. 예를 들어, 커서를 hof 로 이동 hello하고 입력하면 ~w전체 단어가 다음으로 변경됩니다.HELLO
  • gU대소문자를 바꾸지 않고 텍스트를 대문자로 변경합니다. 예를 들어 가 있는 경우 hElLo커서를 로 이동 h하고 을 입력하면 gUw다음과 같이 됩니다.HELLO
  • gu 텍스트를 소문자로 변경 - 예를 들어 커서를 HHELLO로 이동하고 입력하여 guw로 변경합니다 hello.

이는 최소한의 개요일 뿐입니다. 더 많은 옵션과 세부정보를 입력하세요 :help case.vim


반복적인 편집 작업을 자동화하기 위해 vim의 매크로/키 매핑 기능을 살펴볼 수도 있습니다( :help macro). 나는 일반적으로 현재 필요한 반복적이지만 임시 편집 작업에 매핑 ,하거나 매핑합니다. (예, 이미 vi에서 사용된다는 것을 알고 있지만 거의 사용하지 않습니다.) 그리고 모두 및 근처에서 서로 쉽게 맞습니다 . , 그래서 줄의 시작 부분으로 이동을 매핑하고 한 단어 앞으로 이동한 다음 커서에서 시작하는 단어를 대문자로 표시할 수 있습니다.;.,

:map , 0wgUw

그 후 ,이 버튼을 누르면 줄의 두 번째 단어가 대문자로 표시됩니다. 예를 들어, 가 포함된 줄에서는 function hello() {HELLO를 대문자로 표시합니다. 완벽할 필요는 없으며, 반복해서 수행해야 한다면 짜증날 정도로 작은 일이면 됩니다. 더 이상 지도 작성 동기를 부여하기 위해 수십, 수백 번 반복하지 않아도 됩니다.)

예, 전체 함수를 끌어오고, 커서를 이동하고, 붙여넣고 들여쓰기한 다음 함수 이름을 대문자로 표시하는 매크로를 생성할 수 있습니다. 지금은 스스로 그렇게 할 동기가 없습니다. 그러나 저는 이를 두 개의 맵으로 분할하는 것을 권장합니다. 하나는 ^function전체 콘텐츠를 검색하고 추출하는 것이고, 다른 하나는 함수 이름을 붙여넣고 대문자로 표시하는 것입니다. (이런 것들은 제가 즐겨 사용 ,하고 ;임시 맵으로 사용하는 것인데...키를 서로 가까이 두는 것이 매우 편리합니다.)

현재 편집된 파일 외부에서 재사용하는 내용에 대해서는 기능키에 매핑하거나 레지스터에 기록합니다. 지루하고 반복적인 작업의 대부분은 현재 작업 중인 작업과 매우 관련이 있고 특정하기 때문에 이 작업을 자주 수행하지 않습니다. ~/.vimrc에서 이 작업을 수행하는 경향이 있습니다. 매우 일반적인 작업에 대한 기능 키 매크로를 정의합니다. 형식을 다시 지정하기 위해 현재 단락을 파이핑하는 것과 같습니다 par.

관련 정보