테이블을 쉽게 만들고 유지 관리하려면 어떻게해야합니까?


28

다음은 일부 설명서에서 사용하는 표의 일부입니다.

+---------------+------------------------+---------------------------------------+
| TASK NAME     | WHEN                   | DESCRIPTION                           |
+---------------+------------------------+---------------------------------------+
| db:seed       | On every update        | Data required for the application to  |
|               |                        | run; you should always be able to     |
|               |                        | safely execute this multiple times    |
|               |                        | for an update.                        |
| db:truncate   | Manually (dangerous!)  | TRUNCATE all tables but postal_codes  |
| postal_codes  | Once                   | Load the postal_codes table           |
+---------------+------------------------+---------------------------------------+

문제는 이것이 편집하기가 매우 어렵다는 것입니다. 한 가지를 변경하면 모든 것을 (수동으로) 다시 정렬해야합니다 .PITA

이것을 관리하는 더 쉬운 방법이 있습니까? 위의 정확한 레이아웃은 신경 쓰지 않지만 3 열의 줄 바꿈을 유지하고 싶습니다 ...


1
따로, 이것이 reStructuredText 인 경우 살펴볼 것을 고려할 수도 있습니다 list-table(아스키 테이블은 유지 보수가 어렵고
열등

답변:


35

나는 플러그인 vim-table-mode 의 저자입니다 . 나는 특히 커뮤니티 피드백을 통해 이것을 구축하고 개선하는 데 많은 시간을 보냈 으며이 유스 케이스에 정확하게 부합합니다.

짧은 빠른 시작 : :TableModeEnable명령을 사용하여 '테이블 모드'를 시작하면 다음 과 같이 입력 할 수 있습니다.

||
| MOVIE | QUOTE|
||
| Blade Runner | Like tears in the rain |
| Monty Python's quest for the holy grail | Are you suggesting that coconuts migrate? |
||

vim-table-mode는 자동으로 정렬을 자동으로 처리하여 다음과 같이 표시됩니다.

|-----------------------------------------+-------------------------------------------|
| MOVIE                                   | QUOTE                                     |
|-----------------------------------------+-------------------------------------------|
| Blade Runner                            | Like tears in the rain                    |
| Monty Python's quest for the holy grail | Are you suggesting that coconuts migrate? |
|-----------------------------------------+-------------------------------------------|

나중에 테이블을 편집 할 때 vim-table-mode는 정렬을 처리합니다.

로 '테이블 모드'를 떠날 수 있습니다 :TableModeDisable.


핵심은 입력하는 동안 자동 서식이 지정된 테이블을 쉽게 만드는 것입니다. 테이블을 이동하고 조작하는 많은 매핑을 제공합니다 (특히 유용한 <Leader>tdc것은 전체 열을 제거하는 것입니다). 테이블 모드를 활성화하기 만하면됩니다. 포맷이 시작될 것입니다.

여기에 표시된 것보다 더 많은 기능이 있습니다 (예 : 머리글에 작은 힌트로 열을 올바르게 정렬하는 기능). 또한 깔끔한 스프레드 시트 수식 엔진을 사용하여 일반 스프레드 시트처럼 수식을 정의하고 계산을 수행 할 수 있습니다.

매우 유연하고 구성 할 수 있도록 만들어 졌으므로 생성 된 테이블 및 테두리의 여러 측면을 변경할 수 있습니다.

또한 그 강점을 보여주기 위해 몇 가지 스크린 캐스트를 만들었습니다. 이 스크린 캐스트는 가장 최근의 화면 이지만 이후 많은 개선이 이루어졌습니다.


5
감사; 실제 사용법 정보를 추가하기 위해 귀하의 답변을 약간 편집했습니다 (이전에 광고와 약간 읽음) ... vim-table-mode로 할 수 없었던 한 가지는 3 번째 열 줄 바꿈입니다. 내 질문의 예에서와 같이 ... 이것이 가능합니까?
Martin Tournoij

@Carpetsmoker 편집 해 주셔서 감사합니다. 글쎄 수동으로 감쌀 수는 있지만 자동으로 할 수있는 방법은 없습니다.
Dhruva Sagar 5

6

sedand 를 사용할 수 있다면 가장 column가까운 명령 줄 솔루션은 다음과 같습니다.

!sed 's/[- ]*\([+|]\)/'$'\x01''\1/g' | column -ts $'\x01' | sed '/^[-+ ]*$/s/ /-/g'

이것을 시각적 선택 및 '<,'>줄 번호 와 결합 할 수 있습니다.

단점 :

  • 사용 sedcolumn. Vim은 부수적입니다. sed명령은 아마 정력에 변경 될 수 있습니다 :substitute명령 만 column중요합니다.
  • 행 구분 기호 ( ---...-)가 채워지지만 안정성에 의구심이 있습니다.
  • 나는 휴대용 $'\x01'이 얼마나 몰라요 .

출처 :


사소한 결함은 제쳐두고 (아마 수정 될 수 있음), 유망 해 보입니다 ... 내가 할 수없는 한 가지는 세 번째 열의 포장입니다 :-/
Martin Tournoij

5

플러그인을 설치하지 않고 정렬을 유지하는 테이블을 편집하려는 경우 :

-에 의해 활성화 된 내장 VREPLACE 모드를 사용하십시오 gR.

(vim 최신 버전 을 사용하고 터미널에 +vreplace입력하여 기능으로 컴파일되었는지 확인하십시오 vim --version)

여기에 이미지 설명을 입력하십시오 (내 상태 표시 줄은 REPLACE 및 VREPLACE 모드 모두에 대해 REPLACE를 표시하도록 설정되어 있습니다)

REPLACEVREPLACE 모드 에 대한 자세한 내용은 이 문서를 확인 하십시오 .


3

이 목적을 위해 명령 줄 도구 tablign 을 만들었습니다 . 그것은 vim 안에서도 작동합니다. 간단히 설치

[sudo -H] pip3 install tablign

vim에 테이블을 표시하고 전화

:'<,'>:!tablign

(vim은 표를 표시 한 경우 처음 몇 글자를 채 웁니다.)

아직 고정 열 너비를 수행 할 수는 없지만 필요한 경우 추가 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

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