VIM의 문자열 서식이 나를 괴롭 히고 있습니다.VIM의 문자열 서식 (패딩)
필자는 파이썬에서 문자열 형식을 지정하는 데 매우 익숙해 보입니다. 출력 문자열이 얼마나 많은 공백으로 구분되는지 지정할 수 있습니다. 내가 버퍼에 추가하기 전에 해당 문자열을 구축하고 모든 환상적인 작품
Line: 1 ==>> ErrorName ==>> File Path: /foo
:
그래서 나는처럼 보이는 스크래치 버퍼에 정보를 출력하는 VIM 플러그인을 가지고있다. 내가하고 탭 대신 공백이 일을 시도했다Line: 1 ==>> Error ==>> File Path: /foo
Line: 123 ==>> ErrorNameLong ==>> File Path: /foo
Line: 12 ==>> ErrorShort ==>> File Path: /foo
하지만 그것은 단지 (공간이 더 큰 성장) 더 나쁜 것이 있습니다 : 당신이 다른 줄 번호가있을 때마다하지만 (자리 현명한)이 같은 일을 얻는다.
Line: 1 ==>> Error ==>> File Path: /foo
Line: 123 ==>> ErrorNameLong ==>> File Path: /foo
Line: 12 ==>> ErrorShort ==>> File Path: /foo
내가 도와 플러그인 (예 : tabular.vim) 잘 알고 있지만,이 플러그인 자체이기 때문에, 내가 종속성을 필요로하지 않습니다 그래서 내 이상적인 최종 결과는 다음과 같이 할 것 간단한 문자열 포맷팅을 위해서만 다른 플러그인에.
이 내가 지금까지 시도했던 사항은 다음과 같습니다
- 탭 (및 탭 + 공간)
- 검색 (버퍼에 렌더링 후 공백과 탭) 탭으로 대체
나는 이것에 대한 좋은 접근이 있어야하며 나는 그것을 놓치고있는 것처럼 보인다.
VIM에서 필요한 문자열 서식을 어떻게 얻을 수 있습니까?
처음에는이 접근 방식이 효과가 있을지 의심 스러웠습니다. 처음에 나를 버렸던 것은'a : amt-len (a : s)'입니다. 왜냐하면 당신은 그것을 작동시키기 위해 충분한 패딩이 필요하기 때문입니다. 이것은 내 문제를 해결해 주는데 시간을내어 여기에 기능을 가져다 주셔서 감사합니다. – alfredodeza
@alfredodeza 만약 당신이 ascii 만 받아 들일 때만'len()'을 사용해야합니다. 모든 len을'strwidth()'(vim-7.3 만) 또는'len (split (a : s, '\ zs'))'(전각 문자를 처리하지 않음)으로 바꾸어보십시오. – ZyX
@alfredodeza ascii 만 처리하면 정상적으로 작동하지만이 두 함수를 버리고 내장 된 printf를 사용할 수 있습니다.'echo printf ('Line : % - * u == >> - % s *= >> >> 파일 경로 % s ', 8, linenum, 12, errmsg, path)' PrePad의 경우'%'다음에'-'를 제거하십시오. – ZyX