따옴표로 서라운드 최적화

Dec 22 2020

단어를 따옴표로 둘러싸고 싶습니다.

다음은 내 명령 집합입니다.

  • ciw
  • 그런 다음 삽입 모드에있을 때 입력합니다 '(
    비주얼 코드 에서 vim 확장을 사용 하므로 '"일반"vim의 경우인지 모르겠습니다.)
  • 그런 다음 Ctrl+ C+t
  • 그때 p

작동하지만이를 달성하기위한 더 짧은 버전이있을 수 있습니다. 도와 주 시겠어요?

답변

2 Macunaíma Dec 22 2020 at 20:54

vim-surround 플러그인을 시도해 볼 수 있습니다 . 따옴표에 단어를 넣으려면 갈 것입니다 ysiw'. 플러그인은 다음과 같은 기능을 제공합니다.

  • 추가 ( ysiw")

    word -> "word"
    
  • 변경 ( csiw"')

    'word'
    
  • 삭제 ( ds')

    word
    

한글 단어뿐만 아니라 모든 종류의 텍스트 개체의 주변 환경 :

  • 괄호 ( ysi)") 안에 단어를 묶습니다.

    def func(some sequence of words) -> def func("some sequence of words")
    
  • 괄호를 대괄호 ( cs)])로 변경

    list = (var1, var2, var3) -> list = [var1, var2, var3] 
    
2 BLayer Dec 22 2020 at 20:43

내가 생각하는 VS Code 확장을 사용하는 경우 적어도 일부 플러그인을 지원하고 그중 하나가 vim-surround 입니다. 이 경우 플러그인을 사용할 수 있다면 마지막 단락으로 이동하십시오. 그렇지 않으면 계속 읽으십시오.

일반 모드에서 커서를 단어의 첫 번째 문자에 놓고 수행 할 수 있습니다.

i"<C-O>f<Space>"<Esc>

Ctrl-O, 삽입에서 삽입으로 돌아 가기 전에 하나의 일반 모드 명령을 입력 해 보겠습니다.

f<Space> 줄의 다음 공백 문자 (단어 뒤)로 이동합니다.

이 문제는 단어 뒤에 공백이없는 경우입니다 (예 : 줄의 끝에 있거나 문장 부호가 뒤 따르는 경우). 일반 모드 명령을 조정해야합니다 (예 : f.또는 $<Left>).

이는 이를 수행하는 방법의 예일 뿐이지 만 수동 명령을 최적화하는 대신 더 강력한 (그러나 복잡한) 것을 사용하여 매핑에 넣어야한다고 생각합니다. 예를 들어 다음 대체 명령 :

:%s/\<\w*\%#\w*\>/"&"

즉, 커서 위치 ( \%#)와 그 주변의 모든 단어 문자 (둘 다 \w*)를 가져 와서 따옴표로 둘러싸인 자체로 대체합니다.

이에 대한 일반 모드 매핑 :

:nnoremap <leader>q :%s/\<\w*\%#\w*\>/"&"<CR>

이제 선택한 매핑 길이에 관계없이 키 누르기 한두 번으로 최적화했습니다.

그러나 내가 정말로 제안하고 싶은 것은 vim-surround 플러그인을 얻는다는 것 입니다. 그런 다음 일반적으로 단어를 줄 바꿈하는 (예 : 괄호) 무엇이든 쉽게 단어를 줄 바꿈 할 수 있습니다.