Vim : 여러 줄의 끝에 텍스트 블록을 붙여 넣는 방법은 무엇입니까?


32

다음과 같은 텍스트 블록이 있다고 가정 해보십시오.

// 댓글 1
// 댓글 2
// 댓글 3

그리고이 줄들 각각을 해당하는 3 줄의 코드 끝에 추가하고 싶습니다 :

foo = 1;
바 = 2;
바즈 = 3;

최종 결과는

foo = 1; // 댓글 1
바 = 2; // 댓글 2
바즈 = 3; // 댓글 3

Vim에서 이것을 쉽게 할 수있는 방법이 있습니까?


@Flimzy, 불행히도 아니. 당신처럼 시간 의견에 시간에서 빔 질문에 나타납니다,하지만 확인 : meta.stackexchange.com/q/25925/160504
sidyll

이 질문에 대한 더 나은 커뮤니티는 vi.stackexchange.com
thinwybk입니다.

답변:


36

비주얼 블록 모드 ( Ctrl+ v)를 사용하여 한 줄 세트를 선택한 다음 y또는 하나를 선택하십시오 d.

그런 다음 foo, bar, baz 행을 선택한 경우 시각적 블록 모드를 사용하여 주석 행의 첫 번째 열을 선택한 다음 Shift+ p를 사용하십시오 (또는 주석 행을 선택한 경우 foo bar baz의 마지막 열을 선택하십시오). 라인과 p그것들을 제자리에 고정시킵니다.

포지셔닝을 중단시키는 것은 약간의 연습이 필요할 수 있지만, 요령이 잡히면 날 수 있습니다. 블록을 선택하면 Shift+ A를 사용 하여 블록에 공백 등을 추가 할 수도 있습니다 (추가 할 때 새 텍스트는 맨 윗줄에만 표시되지만 esc 키를 누르면 선택한 모든 행에 마술처럼 나타납니다) . 마찬가지로 Shift+ i는 각 줄에서 선택한 블록의 시작 부분에서 동일하게 수행됩니다.

빈 줄은 나중에 정리해야합니다.

이러한 기술을보다 자세하게 보여주는 훌륭한 vimcast 에피소드 도 있습니다 .


1
이 솔루션 :set ve=all은 매우 다재다능합니다. 개인적으로 UnconditionalPaste 플러그인 ( vim.org/scripts/script.php?script_id=3355 )을 개인적으로 사용합니다 .
피터 Rincker

1

쉬운 지 아닌지 말해봐 이동에 // Comment 1, 공격 dd삭제합니다. 와 행으로 이동 foo = 1;하고 히트 p, 라인 아래에 붙여 넣습니다. foo다시 위로 올라가서 J행에 합류하십시오. 타다


0

다음은 정확히 당신이 설명하는 것을 할 것입니다 :

:%s@\(\w\s\+=\s\+\(\d\+\)\)@\=submatch(1) . " // Comment" . submatch(2)@

실제로 필요한 작업에 따라 (예와 달리) 실제로 "// Comment1"등을 블록 선택하는 것이 더 간단 할 수 있습니다. 블록 ( Ctrlv), yank ( y), 코드 끝으로 이동 차단하고 붙여 넣습니다.

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