Vim에서 강조 표시된 텍스트 주위에 괄호 추가


14

강조 표시된 텍스트 주위에 괄호를 추가 할 수있는 기능이 Vim에 있습니까?

내가 강조 예를 들어, 만약 n = getchar()if (n = getchar() == '\n'), 그 주위에 괄호를 넣어 할 것입니다.

답변:


18

멋진 플러그인 서라운드 가 필요합니다 . 그런 다음 텍스트와 유형을 선택 Sb하거나 S)( 대괄호) 또는 (자본 S!를 참고하십시오 ) 원하는대로 행복하게 수행합니다 .

실제로 다양한 따옴표, 태그 등 많은 주변 환경을 수행 할 수 있습니다. 큰 따옴표로 묶은 단어에 커서를 놓고 큰 따옴표를 작은 따옴표로 cs"'바꿀 수 있습니다 : (change-surround "to '). 또는 ds"(delete-surround ")를 입력하여 따옴표를 완전히 삭제할 수 있습니다 .

링크로 문서를 읽으십시오. 정말 훌륭합니다!


1
그러나 선택을 통해 수행하는 방법에 대해서는 설명하지 않았습니다. 나는 즉시 명확하지 않았기 때문에 여기로 이끌 렸다.
JackHasaKeyboard

@JackHasaKeyboard, 선택과 함께 수행하는 방법을 설명하지 않았다는 것은 무엇을 의미합니까? > 그리고, 행복하게 당신이 경우 당신이 원하는 것을 할 것입니다 : 내 대답의 두 번째 sentense 말한다 텍스트 선택 및 유형 sb(서라운드 중괄호), 또는 s).
드미트리 프랭크

1
그래서 했어요 그래도 나를 위해 일하지 않으면, 때리는 s것은 선택을 삭제하고 삽입 모드로 들어갑니다.
JackHasaKeyboard

1
내 답변에서 언급 한 "서라운드"플러그인이 올바르게 설치되지 않았 음을 의미합니다.
Dmitry Frank

정말 그렇습니다. 나는 오랫동안 그것을 사용하고 내기를 할 수 있습니다.
바이오 사이버 맨

20

Dmitry의 서라운드 플러그인 제안에 덧붙여 강조 표시된 텍스트 주위에 괄호를 추가하는 것은 다음 명령으로 수행 할 수 있습니다.

xi()<Esc>P

예를 들어 \s다음을 추가 하여 시각 모드에서지도를 설정할 수 있습니다.~/.vimrc파일에 .

xnoremap <leader>s xi()<Esc>P

1
이것은 훌륭하고 간단한 해결책처럼 보입니다. 앞으로 이와 관련하여 문제가 발견되지 않으면 추가 플러그인보다 선호합니다. 감사!
Zelphir Kaltstahl

3
좋은 솔루션이지만 서라운드 플러그인을 사용하는 것만 큼 완벽하지는 않지만 전체 줄을 선택하는 경우 작동하지 않습니다 ( V대신 대신 사용 v). 이 경우 그냥 당신의 parens 아래 줄을 붙여 넣습니다.
Rohan Orton

1

lh- 괄호는 단순히 바인딩( 은 선택 물을 괄호로 둘러싸 기 위해 됩니다. 서라운드 와 달리 vim 일반적인 키 바인딩 철학을 따르지 않습니다. 대신 더 적은 키가 필요합니다.

그렇지 않으면 여러 가지 방법으로 진행할 수 있습니다. 당신은 이름이 레지스터를 장난 괜찮다면, 당신은 또한 사용 s(^R")<esc>( ^R같은 CTRL-R)


0

dotancohens 대답을 바탕으로 다음을 내 안에 넣었습니다 .vimrc.

xnoremap <leader>( <ESC>`>a)<ESC>`<i(<ESC>

[], {} 등에 유사한 매핑을 쉽게 만들 수 있습니다. 시각적 모드 종료 후 암시 적으로 설정된 시작 및 끝 마커로 이동하여 작동합니다. 이 방법으로 전체 라인을 선택하면 첫 번째 / 마지막 라인의 시작 / 끝에 파 렌스가 추가됩니다. 그것은 당신의 yank 레지스터를 덮어 쓰지 않을 것입니다; 오프닝 파너 바로 앞에 커서를 둡니다.

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