다음과 같은 텍스트 블록이 있다고 가정 해보십시오.
// 댓글 1 // 댓글 2 // 댓글 3
그리고이 줄들 각각을 해당하는 3 줄의 코드 끝에 추가하고 싶습니다 :
foo = 1; 바 = 2; 바즈 = 3;
최종 결과는
foo = 1; // 댓글 1 바 = 2; // 댓글 2 바즈 = 3; // 댓글 3
Vim에서 이것을 쉽게 할 수있는 방법이 있습니까?
답변
비주얼 블록 모드 ( Ctrl+ v)를 사용하여 한 줄 세트를 선택한 다음 y또는 하나를 선택하십시오 d.
그런 다음 foo, bar, baz 행을 선택한 경우 시각적 블록 모드를 사용하여 주석 행의 첫 번째 열을 선택한 다음 Shift+ p를 사용하십시오 (또는 주석 행을 선택한 경우 foo bar baz의 마지막 열을 선택하십시오). 라인과 p그것들을 제자리에 고정시킵니다.
포지셔닝을 중단시키는 것은 약간의 연습이 필요할 수 있지만, 요령이 잡히면 날 수 있습니다. 블록을 선택하면 Shift+ A를 사용 하여 블록에 공백 등을 추가 할 수도 있습니다 (추가 할 때 새 텍스트는 맨 윗줄에만 표시되지만 esc 키를 누르면 선택한 모든 행에 마술처럼 나타납니다) . 마찬가지로 Shift+ i는 각 줄에서 선택한 블록의 시작 부분에서 동일하게 수행됩니다.
빈 줄은 나중에 정리해야합니다.
이러한 기술을보다 자세하게 보여주는 훌륭한 vimcast 에피소드 도 있습니다 .
답변
쉬운 지 아닌지 말해봐 이동에 // Comment 1
, 공격 dd
삭제합니다. 와 행으로 이동 foo = 1;
하고 히트 p
, 라인 아래에 붙여 넣습니다. foo
다시 위로 올라가서 J
행에 합류하십시오. 타다
답변
다음은 정확히 당신이 설명하는 것을 할 것입니다 :
:%s@\(\w\s\+=\s\+\(\d\+\)\)@\=submatch(1) . " // Comment" . submatch(2)@
실제로 필요한 작업에 따라 (예와 달리) 실제로 “// Comment1″등을 블록 선택하는 것이 더 간단 할 수 있습니다. 블록 ( Ctrlv), yank ( y), 코드 끝으로 이동 차단하고 붙여 넣습니다.