태그 보관물: text-editors

text-editors

탭으로 텍스트를 열화하는 방법 (vim 또는 셸) field2 abcdefghijkl

데이터 입력 및 기타 목적을 위해 탭으로 구분 된 텍스트를 수동으로 조작해야하는 경우가 자주 있습니다. 이 작업을 수행 할 때 텍스트가 열에 올바르게 정렬되면 도움이됩니다. 예를 들어 (4 개의 공백 탭으로 가정) :

# original format
abcdefghijklmnop    field2
abcdefgh    field2
abcdefghijkl    field2

# ideal format
abcdefghijklmnop    field2
abcdefgh            field2
abcdefghijkl        field2

column유틸리티를 사용 하여이 방법으로 텍스트를 열화 하는 데 익숙 하지만 문제는 공백을 사용하여 열을 정렬하며 탭이 필요하다는 것입니다. 이 요구 사항은 또한 테이블 형식 플러그인을 배제하는 것으로 보입니다.

vim쉘 내부 또는 쉘에서 탭을 사용하여 텍스트를 구체적으로 열화 할 수있는 방법이 있습니까? groff/ 로 할 수있는 것처럼 tbl보이지만 솔직히 나는 그것을 엉망으로 만드는 것보다 손으로 열화하고 싶습니다 ….



답변

csv.vim – CSV 파일에 대한 파일 유형 플러그인은 또한 탭으로 구분 된 파일을 지원하고있다 :ArrangeColumn그리고 :UnArrangeColumn그 명령을.


답변

탭 표시 크기를 가장 긴 필드보다 크게 설정하십시오.

# original format
abcdefghijklmnop<Tab>field2
abcdefgh<Tab>field2
abcdefghijkl<Tab>field2
I have spaces!<Tab>field2

Vim에서

:echo len("abcdefghijklmnop") " Reports 16
:set noexpandtab tabstop=17

이 명령을 하나의 명령으로 압축 할 수는 있지만 방법을 모르겠습니다. 최신 Vim을 실행하는 경우 :set list멋진 캐릭터로 하드 탭을 표시 할 수도 있습니다 (이 또한 구성 할 수 있음). 그렇지 않으면 그들은 ^I(원하는 것이 아닌) 또는 공백으로 표시됩니다.

# displays like this
abcdefghijklmnop>field2
abcdefgh>        field2
abcdefghijkl>    field2
I have spaces!>  field2

편집 : 실제 실행중인 vim의 예!


답변

언급 된 Tabularize 또는 대체 Align 플러그인을 사용 하여 테이블을 올바르게 공간 정렬 한 경우 다음 명령을 사용하여 공백을 탭으로 변환 할 수 있습니다.

:%retab!
:%substitute/ \+/\t/g

첫 번째 명령은 너비를 변경하지 않고 가능한 경우 들여 쓰기를 탭으로 바꾸고 ( :set noexpandtab두 번째로 가정 ) 왼쪽 공간을 (더 큰) 탭 정지 로 변환합니다.


답변

godlygeek / tabular 플러그인을 사용하여 선택할 수 있습니다

:%Tabularize /\t.*/

답변

탭으로 구분 된 열은 표시하는 데 사용 된 프로그램에서 실제 의미를 존중하기 위해 탭 문자를 확장 / 축소 할 수있는 경우에만 작동합니다. Vim은 필자가 대부분의 다른 일반 텍스트 편집기에서 탭의 너비가 고정되어 있기 때문에 탭을 탭으로 사용할 수 없다고 생각합니다. Vim은 탭과 공백을 혼합하여 비슷한 결과를 얻을 수 있지만 더 이상 탭으로 분리되지는 않습니다.

모든 탭 / 공백 믹스를 각 쓰기마다 단일 탭으로 변환해야합니다.

간단히 말해서, 일반 텍스트 편집기는 아마도 작업에 적합한 도구가 아닐 것입니다.


답변