[vim] 단어를 인용 / 인용하는 데 사용할 수있는 Vim 명령은 무엇입니까?

내가 어떻게 빨리 인용 / 인용을 끝내 말과 변화 (예를 들어, 인용 '"빔에서)? Surround.vim 플러그인 에 대해 알고 있지만 Vim 만 사용하고 싶습니다.



답변

Surround.vim이 가장 쉬운 해답이 될 것입니다. 실제로 사용하지 않으면 다음과 같이 할 수 있습니다. 반드시 가장 효율적인 것은 아니지만 서라운드 .vim이 작성된 이유입니다.

  • 작은 따옴표를 사용하여 단어를 인용하십시오.
    ciw'Ctrl+r"'

    • ciw -커서가있는 단어를 삭제하고 삽입 모드로 끝납니다.
    • ' -첫 번째 견적을 추가하십시오.
    • Ctrl+r""마지막 yank / delete로 알려진 레지스터 내용을 삽입하십시오 .
    • ' -닫는 따옴표를 추가하십시오.
  • 작은 따옴표로 묶인 단어를 인용 해제하십시오
    di'hPl2x

    • di' -작은 따옴표로 묶은 단어를 삭제하십시오.
    • hP -커서를 한 자리 (열기 따옴표 상단)로 이동하고 방금 삭제 한 텍스트를 따옴표 앞에 놓습니다.
    • l -커서를 한 자리 (오픈 시세 상단) 오른쪽으로 이동하십시오.
    • 2x -두 따옴표를 삭제하십시오.
  • 작은 따옴표를 큰 따옴표로 변경
    va':s/\%V'\%V/"/g

    • va' -인용 된 단어와 따옴표를 시각적으로 선택하십시오.
    • :s/ -교체를 시작하십시오.
    • \%V'\%V -시각적으로 선택된 영역 내에있는 작은 따옴표 만 일치시킵니다.
    • /"/g -큰 따옴표로 모두 바꾸십시오.

답변

작은 따옴표를 사용하여 단어를 인용하십시오.

ciw'Ctrl+r"'

이런 식으로하는 것이 더 쉬웠습니다

ciw '' Esc P


답변

다음은 도움이 될 수있는 몇 가지 매핑입니다.

:nnoremap <Leader>q" ciw""<Esc>P
:nnoremap <Leader>q' ciw''<Esc>P
:nnoremap <Leader>qd daW"=substitute(@@,"'\\\|\"","","g")<CR>P

mapleader 변수를 변경하지 않은 경우 \q" \q'또는 을 사용하여 매핑을 활성화하십시오 \qd. 커서 아래 단어 주위에 큰 따옴표를 추가하고 커서 아래 단어 주위에 작은 따옴표를 추가하고 커서 아래 단어 주위의 따옴표를 각각 삭제합니다.


답변

다른 명령 외에도 모든 단어를 큰 따옴표로 묶습니다 (댓글에 따라)

:s/\(\S\+\)/"\1"/

또는 백 슬래시 수를 줄이려면 \v패턴의 시작 부분에 (매우 마술적인) 수정자를 넣을 수 있습니다

:s/\v(\S+)/"\1"/


답변

매크로 방법!

  1. Enter 키를 눌러 qqQ 레지스터에 기록 (우리는 “따옴표”를 기억하는 바로 가기로 “q”를 사용한다).

  2. 를 눌러 shift+의 b현재 단어의 앞쪽으로 이동 커서

  3. 프레스 i타입 '(작은 따옴표)

  4. esc누른 후 e를 눌러 단어 끝으로 이동

  5. 단어를 따옴표로 묶으려면을 누른 a다음을 '다시 누르 십시오.

  6. 를 눌러 esc일반 모드로 들어갑니다.

  7. 마지막으로 눌러 qq 레지스터 에 기록됩니다 .

사용하는 방법

  1. 커서를 원하는 단어로 이동하십시오.
  2. 프레스 @q단어를 따옴표로 묶으려면 .
  3. 프레스 @@다른 단어로 반복하려면을 .

당신은 변경할 수 있습니다 step 4{줄, 문자를 찾을 때까지의 단어 등}과 같은 내용으로 .

기록 된 매크로를 영구적으로 유지

  1. .vimrc를여십시오
  2. 파일 끝으로 이동
  3. 삽입 모드로 변경하십시오. 이것을 영구적으로 만들려면 다음을 입력하십시오.
@ q = ' ctrl+ r ctrl+ rq' 하자
  1. 저장하고 종료

  2. 파일을 열고 몇 마디로 이동

  3. 지금 눌러 @q

당신이 올바르게하면 마법의 말이 당신의 말에 나타납니다.

좋아하는 다른 매크로에 대해이 단계를 수행 할 수 있습니다.


답변

작은 따옴표로 묶는 것은 (예를 들어) ciw'<C-r>"'<esc>작동하지만 반복 은 작동하지 않습니다. 시험:

ciw'<C-r><C-o>"'<esc>

기본 레지스터의 내용을 “문자 그대로”넣습니다. 이제 .아무 단어 나 눌러 따옴표로 묶을 수 있습니다. , 자세한 내용 :h[elp] i_ctrl-r에서 텍스트 개체에 대한 더:h text-objects

출처 : http://vimcasts.org/episodes/pasting-from-insert-mode/


답변

VSCodeVim 사용자는 다음을 수행 할 수 있습니다

vwS"

  • 교체 가능 "포장하고 싶은 .
  • w다른 선택 연산자로 바꿀 수 있습니다