Programing

VIM의 명령 줄에서 "커서 아래에있는 단어"를 어떻게 지정합니까?

lottogame 2020. 10. 9. 08:44
반응형

VIM의 명령 줄에서 "커서 아래에있는 단어"를 어떻게 지정합니까?


VIM에서 "커서 아래에있는 단어"를 지정하는 명령을 작성하고 싶습니다. 예를 들어, 커서를 단어 위에 놓고 두 번 표시한다고 가정 해 보겠습니다. 예를 들어, 단어가 "abc"이고 "abcabc"를 원하면 다음을 입력 할 수 있습니다.

:s/\(abc\)/\1\1/

하지만 커서를 "def"로 이동하고 동일한 명령을 사용하여 "defdef"로 변경할 수 있기를 바랍니다.

:s/\(def\)/\1\1/

이 작업을 수행하도록 명령 줄에 명령을 작성하려면 어떻게해야합니까?

:s/\(*whatever is under the commandline*\)/\1\1

<cword>커서 아래에있는 단어입니다 (: help <cword>).

죄송합니다.이 답변이 더 완전해야했습니다.

명령을 nmap하거나 게으른 사용자를위한 일련의 키 입력이 작동합니다.

b #go to beginning of current word
yw #yank to register

그런 다음 패턴을 입력 할 때 <control-r>0<enter>0 번째 레지스터의 내용을 명령에 붙여 넣을 수 있습니다 .

다음과 같이 명령을 작성할 수도 있습니다.

:nmap <leader>w :s/\(<c-r>=expand("<cword>")<cr>\)/

'\'와 'w'를 동시에 매핑하여 명령 줄을

:s/\(<currentword>\)/

명령 줄 모드에서 CTRL+ R CTRL+ W는 커서 아래에 단어를 삽입합니다.

c_CTRL-R기타 모든 특수 레지스터 목록은 도움말을 참조하십시오 .

:help c_CTRL-R

yiwP

yiw: 내부 단어 (커서 아래에있는 단어)를 Yank합니다. 이 명령은 또한 커서를 단어의 시작 부분으로 이동합니다.

P: 커서 앞에 붙여 넣습니다.

그런 다음 eg : < ALT > - D를 다음 명령에 매핑 할 수 있습니다 .

:nmap < ALT >-D yiwP

이를 수행하는 또 다른 쉬운 방법은 *명령 을 사용하는 것 입니다.

일반 모드에서 단어 위에 입력하면

*:s//\0\0<Enter>

* 검색 패턴을 현재 단어로 만듭니다 (예 : \ <abc \>).

:s//현재 검색 패턴을 사용하여 대체를 수행 \0하고 대체 섹션에는 일치하는 문자열이 있습니다.

그런 다음 동일한 내용을 다시 입력하거나 입력하여 "def"라는 단어 위에이 동작을 반복 할 수 있습니다.

*@:

@: <Enter>없이 마지막 ex 명령을 반복합니다.이 경우 대체입니다.

q명령을 사용하여이 작업을 수행하는 빠른 매크로를 기록 할 수도 있습니다.

qd*:s//\0\0<Enter>q

그런 다음 입력하여 마음에 드는 내용을 반복하십시오.

@d

두배로하고 싶을 때. 이것은 이전 솔루션보다 한 문자 적기 때문에 단어 배가 사이에 다른 전 명령을 수행하지 않는 한 가치가 없을 수 있습니다.@:


매핑 내에서 백 슬래시를 이스케이프해야합니다. 매핑 내에 대체 문자열을 포함 할 수도 있습니다.

:nmap <leader>w :s/\\(<c-r>=expand("<cword>")<cr>\\)/\\1\\1<cr>

ywPx

당신이 설명하는 것을 할 것입니다.

ywPxw

커서를 다음 단어로 이동합니다.


@ user11211 에는 커서 아래의 단어를 복제 하는 가장 간단한 방법 이 있습니다.

yiwP

내부 단어를 잡아 당기고 (커서를 단어의 시작 부분으로 이동), 붙여 넣기 (커서 앞).

예. straigh [t] forward ----> 똑바로 [d] straightforward

[]은 커서입니다.

자세히 설명하기 위해 ...

중복 된 단어 뒤에 커서를두고 싶을 것입니다.

yiwPea

straigh [t] forward ----> straightforwardstraightforward []

노트:

yiw

내부 단어를 잡아 당깁니다 (공백 없음).

yaw

모든 단어를 잡아 당깁니다 (후행 공백 포함).

yawPea

따라서 공백 및 위치 커서를 포함한 중복 단어입니다.

straigh [t] forward ----> 직선 직선 []


" count word  (case sensitive)
nmap <F4> :%s/\(<c-r>=expand("<cword>")<cr>\)//gn<cr>

참고URL : https://stackoverflow.com/questions/48642/how-do-i-specify-the-word-under-the-cursor-on-vims-commandline

반응형