다음과 같은 행이 포함된 HTML 테이블이 있습니다.
<tr> <td>DATE</td> <td>NUMBER</td> <td>DESCRIPTION</td> <td>DEADLINE</td> </tr>
<tr> <td>6/7</td> <td>1</td> <td>foo1</td> <td>bar1</td> </tr>
<tr> <td>6/15</td> <td>2</td> <td>foo2</td> <td>bar2</td> </tr>
<tr> <td>6/20</td> <td>3</td> <td>foo3</td> <td>bar3</td> </tr>
... etc ...
내가 하고 싶은 것은 DESCRIPTION 열의 모든 항목을 아래로 이동하는 것입니다. 그래서 한 단계 아래로 이동하고 싶습니다 foo1
. 한 단계 아래로 이동하고 싶습니다 foo2
. 하지만 테이블의 다른 모든 항목은 보존하고 싶습니다. vim에서 어떻게 할 수 있나요?
답변1
내가 이해하는 것은 테이블이 아래에 이상한 빈 셀이 있는 것처럼 보이길 원한다는 것입니다 DESCRIPTION
.
<tr> <td>DATE</td> <td>NUMBER</td> <td>DESCRIPTION</td> <td>DEADLINE</td> </tr>
<tr> <td>6/7</td> <td>1</td> <td></td> <td>bar1</td> </tr>
<tr> <td>6/15</td> <td>2</td> <td>foo1</td> <td>bar2</td> </tr>
<tr> <td>6/20</td> <td>3</td> <td>foo2</td> <td>bar3</td> </tr>
…
내가 맞나요? 여기는하나당신이 할 수 있는 방법:
:%!column -t
Vim 플러그인을 사용하여 이 코드의 형식을 지정하세요 .<tr> <td>DATE</td> <td>NUMBER</td> <td>DESCRIPTION</td> <td>DEADLINE</td> </tr> <tr> <td>6/7</td> <td>1</td> <td>foo1</td> <td>bar1</td> </tr> <tr> <td>6/15</td> <td>2</td> <td>foo2</td> <td>bar2</td> </tr> <tr> <td>6/20</td> <td>3</td> <td>foo3</td> <td>bar3</td> </tr>
첫 번째 항목으로 이동한 후 로 삭제하세요
dit
.foo1
이제 기본 레지스터에 있습니다.qx
(대신 사용 가능한 문자 사용 ) 로 매크로를 시작합니다x
.를 사용하여 아래 줄로 이동합니다
j
.를 사용하여 태그 내용을 시각적으로 선택합니다
vit
.를 사용하여 선택한 텍스트( )를 기본 레지스터( )
foo2
의 내용으로 바꿉니다 .foo1
p
로 매크로를 중지합니다
q
. 이제 기본 레지스터의 내용은foo2
다음에 매크로가 호출될 때 사용할 준비가 되었습니다..
<number of rows>@x
최종 결과:
<tr> <td>DATE</td> <td>NUMBER</td> <td>DESCRIPTION</td> <td>DEADLINE</td> </tr>
<tr> <td>6/7</td> <td>1</td> <td></td> <td>bar1</td> </tr>
<tr> <td>6/15</td> <td>2</td> <td>foo1</td> <td>bar2</td> </tr>
<tr> <td>6/20</td> <td>3</td> <td>foo2</td> <td>bar3</td> </tr>
…
요약 버전:
:%!column -t<CR>
(movement)
ditqxjvitpq
17@x
기본 레지스터(및 해당되는 경우 시스템 클립보드)를 엉망으로 만들고 싶지 않으면 2단계에서 다른 이름의 레지스터를 사용하십시오.
foo2
and Co 의 숫자만 증가시키려는 경우VisIncr 플러그인아주 좋습니다.