2011-11-09 4 views
38

vim에서 괄호 (또는 중괄호)로 일부 텍스트를 묶는 방법이 있습니까?Vim과 괄호로 묶음

즉, 어떻게하면 좋을까요?

초기 문자열 :

It is sunny outside. 

최종 문자열 : 재미 노트에

It is (sunny) outside. 

은, 난 그냥이 질문을 제출 :w을했다.

해피 viming, SOCommunity!

+0

마치 매크로처럼 쉽게 작업을 완료 할 수 있지만 특히 처방하지 않습니다. VIM에서는 여전히 아주 초록색입니다. 그러나 '단어의 시작 부분으로 이동, 왼쪽 괄호 삽입, 단어 끝으로 이동, 오른쪽 괄호 삽입'과 같은 것은 대부분의 경우 작동하는 매크로처럼 들립니다. – Triptych

+0

@Triptych - 내가 제안한 방식대로 매크로 대신 매핑. 내 대답을 보라. – Rook

답변

27

Surround.vim 트릭을 수행해야합니다. '.'을 사용하여이를 반복하려면 here을 참조하십시오.

3

:s// (search and replace)을 사용하지 않으시겠습니까?

예는 :

:s/sunny/\(sunny\)/ 

당신은 아마 마음에 다른 뭔가를 가지고 있지만, 나는 그것이 무엇인지 질문에서 말할 수 없다.

+2

이미 작성된 단어를 두 번 타이핑하기 때문에, 원하는 단어를 선택하고 괄호를 써야합니다. – Titou

6

당신은 그 sort'a 일에 대한 간단한 매핑을 정의 할 수 있습니다. 이것은 그것을해야만한다. 일반 모드에서 z를 입력하면 괄호 안에 단어가 나타납니다. 사용하여 공백 5 글자 단어, 그룹 경기를보기 위해

:%s~\v(\w{5}) ~(\1) ~g 

위 검색 : 이런 식으로 뭔가를 들어

:nnoremap <leader>z viw<esc>a)<esc>hbi(<esc>lel 
+0

굉장합니다. 간단한 2 버튼 "리더 + z"를 누르십시오. 이것은 내가 좋아하는 대답입니다 –

+0

왜보기 모드에서 전달합니까? 간단한 움직임은'그것을 을하는 것 : nnoremap (BI ( 일라이) ' 아니면 내가 뭔가를 그리워 Btw는 아주 좋은 답변 – Titou

0

는 외부 플러그인을 사용하는 것보다 범위 및 그룹과 재생 아마 더 낫다()를 사용하고 그룹화 된 일치 주변의 둘러싼 괄호로 대체합니다.

42

한 단어를 들어, 내가 사용하고 :이다

bcw()<Esc>P 

는 괄호 다음 종료 삽입 모드를 입력 한 단어를 잘라 삽입 모드로 전환, 단어의 시작으로 이동 다시 단어를 붙여 넣으십시오.

닉 등록을 ​​덮어 쓰게됩니다.

당신은 물론 당신이 필요로하는 어떤 움직임과 선택 유형 BCW을 대체 할 수있는 내가 어떤 플러그인을 사용하지 않으 쉽게 휴대 내 dotfiles로 제한 모두를 유지하려는

5cc{<Enter>}<Esc>P 
+12

내 양키스 덮어 얻을 때 나는 그것을 싫어 – d1str0

+0

위대한 필요 없음 플러그인을했다?.... 솔직히 surround.vim을 사용하면 같은 수의 키를 눌러 플러그인을 사용해야하는 이유가 무엇입니까? – hamid

+0

vim의 강도는 커서 제어 언어입니다! 감사합니다! 스크립트에 이것을 기록하고 매크로로 만드는 것이 쉽습니다. Qbcw() 단어를 빠르게 다시 쓰려면 Pq'와'@q'. –

0

있다. 내가 생각할 수있는 가장 쉬운 방법은 단순히 그것을 기록하고 재생하는 것입니다. 세션 전반에 걸쳐 더 자주 사용할 계획이라면 .vimrc에 키를 매핑 할 수 있지만 필자는 (그리고 어떤 키 스트로크를 매핑 할 것인지를 결정할 때 정말로 나쁘다).

vim에 대한 초보자 수준의 이해가 있다고 가정 할 때 대괄호로 묶으려는 라인이 있다고 가정 해 봅니다. 예 :

hello world

정상 모드로 이동합니다. 녹음을 시작하려면 q1을 누르십시오. 이제

ESC ^i[ ESC $a] ESC

이 괄호로 현재 행을 떠나 다음을 수행합니다. 이제 임의의 회선을 선택하고 @1을 눌러 반복 할 수 있습니다.

예를 들어 현재 단어가 단순히 다음과 같은 조리법을 기록하고 재생 paranthesised해야 할 것이다 경우

ESC bi[ ESC ea] ESC

당신은 키 입력을 최적화하기 위해 당연히 시도 할 수 있지만 지금은 나를 위해 역할을한다.

16

여기에 surround.vim을 사용하는 예가 나와 있습니다.

초기 문자열 :

It is sunny outside. 

ysiw 

그런 다음 그래서 )

입력 : 정력 일반 모드에서 (이 경우 맑은 하늘) 유형 원하는 단어 위에 커서를 놓은

최종 문자열 :

It is (sunny) outside. 
,

여분 공간 : ysiw( 사용 개구 괄호 또는 브래킷, 괄호 및 괄호 사이의 공간을 둘러싸고 눌러 비주얼 모드로 들어가 카메라 모드

쉬운 단어 + 단부) 시작할 v. 이제 을 입력하면 단어가 공백으로 묶입니다. 그러나 S) 대신 닫음 )을 사용하면 공백으로 둘러싸이지 않습니다.

이것은 모든 브래킷 쌍 주변 인 <> [] {}()에만 적용되며 ()이 아닙니다. S<의 동작은 태그 인클로저가 S> 인 경우에만 <>으로 서라운드 할 수 있기를 기대합니다.

더 :

  • 유형 cs(' [C] hange : 중괄호

    여기서도 다른 예제 추가 할 수도 동일한 할 } 하였다

    타입 ysiw [s] 주변 지역 (에서 '

  • cs'(는에 주변 '에서 변경() [D] elete ( [S] urroundings 모두

더욱에

  • ds(. :

    왜 Tpope의 나머지를 인용하지 링크를 클릭하여 우리를 구하기위한 페이지?

    // 인용 시작 :

    이 예제와 함께 설명하는 것이 가장 쉬운 방법이다.

    을 눌러 내부 cs"'

    에 "Hello World!" 변경하려면

    'Hello world!'

    -

    이제 cs'<q> 안녕하세요

    로 변경 세계를 눌러!

    -

    완전한 원을 이동하려면를 눌러 cst"

    에 "Hello World!"를 얻을 수 있습니다

    -

    누르 완전히 ds".

    안녕하세요 세계 구분 기호를 제거하려면!

    -

    지금의 커서로 "안녕하세요"를 눌러 ysiw] (IW 텍스트 개체입니다).

    [안녕하세요] 전 세계!그 중괄호를 만들고 공백을 넣으려면 {공백이없는 경우} 대신 {cs]{

    {Hello} world!

    -

    지금 yssb 또는 yss) 괄호의 전체 라인을 포장.

    ({안녕하세요} 세계!)

    - 원본 텍스트

    되돌리기 : ds{ds)

    안녕하세요 세계!

    -

    안녕하세요 강조한다 : ysiw<em>

    안녕하세요 세상을!

    -

    마지막의 시각적 모드를 해보자. 대문자 V (줄 바꿈 시각 모드)을 누르고 S<p class="important">을 누릅니다.

    <p class="important"> 
        <em>Hello</em> world! 
    </p> 
    

    이 플러그인은 HTML 및 XML 편집, 현재 빔의 땅에서 언더필 보인다 틈새 시장에 매우 강력하다. (HTML/XML 삽입과 반대로, 많은 플러그인을 사용할 수 있습니다.) 태그 쌍을 동시에 추가, 변경 및 제거하는 것은 쉽습니다. 당신이 repeat.vim을 설치하는 경우

    . 명령은 ds, csyss 작동합니다.

  • 관련 문제