방금 바뀐 단어의 다음 항목으로 이동


12

내가 다음을 가지고 있다면 :

function foo(bar) {
    return bar + 1;
}

그리고 내가 사용하는 cw처음을 변경하는 barbaz, 어떻게 일치하는 다음으로 이동 않습니다 bar그래서 사용할 수있는, .같은 변화를 만들기 위해?

내가 사용할 수 없습니다 *그를 검색하기 때문에, 현재 커서 아래 단어, 나는 어리석게도 검색하지 않았다 bar때문에, 처음 n작동하지 않습니다.

단어를 변경 하기 전의 다음 단어를 검색하는 간단한 방법 이 있습니까?

나는 하지 않는 하나의 다른 사건이 있기 때문에, 검색을 수행하고 교체 할 bar의 두 인스턴스가, 나 때문에 내가 변경하지 않는 것이 내 파일이 bar, 내가 잊어 :%s/bar/baz/내가 시작되기 전에 그 너무입니다 남은 인스턴스를 변경하려는 많은 노력.


2
그것은 당신이 설명한 워크 플로우를 완전히 따르지 않지만 vim-oblique*검색을 향상시킵니다 . 특히 *커서를 움직이지 않고 현재 단어를 시각적으로 선택합니다. 일단 설치되면 *ciw이전 단어를 검색 레지스터에 넣고 단어를 변경할 수 있습니다. 그런 다음 n및 을 사용할 수 있습니다 ..
statox

n을 누르면 다음에 마지막으로 검색된 패턴으로 이동합니다. 왜 안 해봤 어?
SibiCoder 10

... 처음으로 검색하지 않았기 때문에 n작동하지 않습니다.
Roger Lipscombe

답변:


14

방금 변경 한 텍스트 cw는 이름이없는 레지스터로 잘려서 다음과 같이 재사용 할 수 있습니다.

/<C-r>"<CR>

마지막 변경 내용이 포함 된 다음 텍스트로 이동합니다.


5

완벽한 워크 플로로로 메인에서 확장하려면 ...

이런 종류의 편집을 수행하고 단락 / 함수에 동일한 편집을 적용해야한다는 것을 알고 있다면 ".레지스터를 사용할 수 있습니다 .

예제에서 인수의 초기 편집을 수행 할 수 있습니다. 시각적 모드로 들어가면 (Visual Line을 사용하여 모든 것을 올바르게 선택했는지 확인한 다음) 찾기 및 바꾸기를 적용하십시오.

V]] -비주얼 라인, 단락 / 함수의 끝.

  • : -당신이 시각적 모드에 있기 때문에 이것은 :'<,'>
  • s/ - 찾기
  • CTRL+ "-마지막 yank / delete 항목 (예제에서 bar)
  • / -교체
  • CTRL+ .-마지막 삽입 (예제에서 baz)

이 패턴은 사용해야하기 때문에 약간의 시간이 걸립니다. 대부분의 경우 인수를 포함하여 전체 함수에 찾기 및 바꾸기를 적용하려고하지만 반 패턴을 수행하지 않는 좋은 방법입니다. "작업을 수행하십시오. 바르게."


2

와 다른 조합을 누르는 것이 마음에 들지 않으면 cw바로 가기를 정의하여 원하는 것을 쉽게 얻을 수 있다고 생각합니다. 당신이 할 수있는 일은 다음을 배치하는 것입니다

nmap <leader>a "1yiw:let @/=@1^Mciw

당신의 .vimrc파일. 참고 ^M 리턴 키의 캡처입니다, 그리고 문자 ^M. 삽입 모드에서 Ctrl+ V를 누른 다음을 눌러 얻을 수 있습니다 Enter. 이제 이것을 정의한 상태에서을 누르면와 <leader>a동일한 작업을 수행 cw하지만 단어 (변경 전)는 "마지막 검색 레지스터"(즉, /레지스터)에 있으므로 n변경 한 후을 누르면 리턴됩니다. 일반 모드로 전환하면 다음 발생으로 이동합니다. 마찬가지로을 누르면 N이전 항목으로 이동합니다.

바로 가기 당신은 물론 다른 바로 가기를 선택할 수 <leader>a있지만, 이것은 매우 접근하기 쉬운 바로 가기라는 것을 알았습니다. 개인적으로 나는 설정 <leader>,난 그냥 눌러야 있도록 ,다음 a,하지만 난 미국 키보드를 사용하지 않기 때문에이 내가 그래서입니다 \(저는 믿습니다 다소 숨겨져 \기본값입니다 <leader>).

설명 은 정말 간단합니다. 커서 아래의 단어를 검색 레지스터에 붙인 /다음 수행하십시오 cw. 따라서 nmap <leader>a "/yciw내가 목표로 삼았지만 불행히도 검색 레지스터로 이동할 수 있다고 생각하지 않으므로 해결 방법은 커서 아래의 단어를 레지스터로 가져간 1다음 /레지스터를 그와 동일하게 설정 한 다음 수행하는 것 cw입니다. "1yiw커서 아래에있는 내부 단어를 레지스터에 붙여 넣는 부분도 마찬가지 입니다 1. 내면의 단어에 대해 모르는 경우를 확인할 수 있습니다 :help iw. 그 후, 레지스터 의 내용을 :let @/=@1로 캡처 한 다음에 . 이 시점 에서Enter1/nN커서 아래에서 단어의 다음 및 이전 단어로 작동 한 다음 커서 ciw아래의 단어가 삭제되고 Vim이 삽입 모드가되도록 a 가 수행됩니다.

단어와 내면의 단어 나는 단지 당신이 단지 curser의 시점부터가 아니라 curser 의 전체 단어 를 원한다고 가정한다는 것을 깨달았습니다 . 이것이 내가 어디에서나 iw대신 사용했던 이유 w입니다. 그렇지 않은 경우 사용해야합니다

nmap <leader>a "1yw:let @/=@1^Mcw

대신에. 커서가 단어의 첫 글자에 있으면 차이가 없습니다.

면책 조항 당신이 커서 스탠드를함으로써, 예를 들어, 편지에서 물건을 다른이 들어 뭔가를 사용하려고하면이 솔루션은 아마 잘 작동하지 않습니다 \또는 교체로 iw하여 iW, ib, is또는 ip이나 뭐 (난 당신이 왜 모르는 불구하고 전체 문장으로이 기능을 원합니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.