[vim] 텍스트를 80 열로 재구성 / 강제하는 vim 명령
Vim 80 열 레이아웃 문제set textwidth
와 같이 vim에서 텍스트 너비를 자동으로 설정하는 방법이 있다는 것을 알고 있습니다 . 내가 찾고있는 것은 (indent line 명령) 과 비슷 하지만 80으로 줄 바꿈하는 것입니다. 사용 사례는 때로는 텍스트 너비로 텍스트를 편집하고 줄을 결합하거나 텍스트를 삭제 / 추가 한 후 제대로 줄 바꿈되지 않는 경우가 있습니다.=
이상적으로,이 명령은 내가 선택한 줄을 완전히 재구성하고 짧은 줄을 추가하면서 긴 줄을 잘라냅니다. 예를 들면 :
long line is long!
short
명령을 실행 한 후 (랩이 13 열이라고 가정) :
long line is
long! short
이것이 진정한 vim 명령으로 가능하지 않다면, 아마도 입력을 파이프 할 수있는 명령 행 프로그램이 있습니까?
검색 후 나는 더 많은 옵션이있는이 참조를 발견했다 : http://www.cs.swarthmore.edu/help/vim/reformatting.html
답변
textwidth
80 ( :set textwidth=80
)으로 설정 하고 파일의 시작 부분으로 이동 한 다음 ( Ctrl– Home또는 으로 수행 가능 gg
)을 입력하십시오 gqG
.
gqG
텍스트를 현재 위치에서 시작하여 파일 끝으로 서식을 지정합니다. 가능하면 연속적인 라인에 자동으로 연결됩니다. 두 줄을 연결하지 않으려면 두 줄 사이에 빈 줄을 둘 수 있습니다.
답변
Michael의 솔루션이 핵심이지만, 현재 단락의 나머지 부분을 다시 포맷하려고합니다. 이 동작에는을 사용하십시오 gq}
.
답변
gq
모든 이동 연산자와 함께 사용할 수 있습니다 . 예를 들어 현재 줄의 끝으로 만 서식을 바꾸려면 (예 : 커서가있는 줄을 줄 바꿈) 다음을 사용할 수 있습니다.gq$
시각 모드에서 텍스트를 선택하고 (`v를 사용하여 이동) gq를 입력하여 다시 포맷 할 수도 있습니다.
줄을 강제로 감는 다른 옵션도 있습니다.
텍스트를 재구성하기 위해 끝까지 기다릴 필요없이 텍스트를 삽입하는 동안 vim이 줄을 줄 바꿈하려면 다음 옵션이 유용합니다.
:set textwidth=80
:set wrapmargin=2
( wrap
및로 측면 추적하지 마십시오 linebreak
. 화면에 표시되는 텍스트 만 다시 포맷하고 버퍼의 텍스트는 변경하지 않습니다)
답변
DonaldSmith의 의견 덕분에 textwidth
옵션이 긴 텍스트 줄을 다시 포맷하지 않았기 때문에 이것을 찾았습니다 (16 진수 변환을 사용하여 게임을 변환하고있었습니다).
:%!fold -w 60
그것은 전체 파일 (나에게 한 줄)을 길이가 60 줄로 재구성했습니다.
답변
비 Vim 방식을 찾고 있다면 항상 UNIX 명령이 있습니다. fmt 및 par가 있습니다.
노트:
- 유니 코드에 대해서는 언급 할 수 없으며 다르게 동작하거나 그렇지 않을 수 있습니다.
- @nelstrom은 이미 사용하여 언급했습니다.
par
그의 웹 캐스트에서 을 했습니다.
다음은 두 가지 예를 모두 사용하는 방법입니다.
$ echo -e 'long line is long!\nshort' > 3033423.txt
$ cat 3033423.txt
long line is long!
short
$ fmt -w 13 3033423.txt
long line is
long! short
$ par 13gr 3033423.txt
long line is
long! short
Vim 내부에서 사용하려면 :
:%! fmt -w 13
:%! par 13gr
:formatprg
par 또는 fmt 및 override로 설정할 수도 있습니다 gq
. 자세한 내용은 :help formatprg
Vim 내부에 문의하십시오 .
답변
거의 항상 gq
비주얼 모드에서 사용 합니다. 저는 학생들에게 까다로운 사람들을위한 잡지 인 ‘신사 분기’를 의미한다고 말합니다.