IT story

텍스트를 80 열로 재구성 / 강제하는 vim 명령

hot-time 2020. 4. 20. 20:31
반응형

텍스트를 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


textwidth80 ( :set textwidth=80)으로 설정 하고 파일의 시작 부분으로 이동 한 후 ( Ctrl- Home또는 으로 수행 가능 gg)를 입력하십시오 gqG.

gqG텍스트를 현재 위치에서 시작하여 파일 끝으로 서식을 지정합니다. 가능하면 연속적인 라인에 자동으로 연결됩니다. 두 줄을 연결하지 않으려면 두 줄 사이에 빈 줄을 둘 수 있습니다.


Michael의 솔루션이 핵심이지만, 현재 단락의 나머지 부분을 다시 포맷하려고합니다. 이 동작에는을 사용하십시오 gq}.


gq모든 이동 연산자와 함께 사용할 수 있습니다 . 예를 들어 현재 줄의 끝으로 만 서식을 바꾸려면 (예 : 커서가있는 줄을 줄 바꿈) 다음을 사용할 수 있습니다.gq$

시각 모드에서 텍스트를 선택하고 (`v를 사용하여 이동) gq를 입력하여 다시 포맷 할 수도 있습니다.

줄을 강제로 감는 다른 옵션도 있습니다.

텍스트를 재구성하기 위해 끝까지 기다릴 필요없이 텍스트를 삽입하는 동안 vim이 줄을 줄 바꿈하려면 다음 옵션이 유용합니다.

:set textwidth=80
:set wrapmargin=2

( wraplinebreak의해 추적되지 않으므로 화면에 표시되는 텍스트 만 다시 포맷하고 버퍼의 텍스트는 변경하지 않습니다)


DonaldSmith의 의견 덕분에 textwidth옵션이 긴 텍스트 줄을 다시 포맷하지 않기 때문에 이것을 찾았습니다 (16 진수 변환을 사용하여 게임을 변환하고있었습니다).

:%!fold -w 60

그것은 전체 파일 (나에게 한 줄)을 길이가 60 줄로 재구성했습니다.


비 Vim 방식을 찾고 있다면 , 항상 UNIX 명령 fmtpar가 있습니다.

메모:

  • 유니 코드에 대해서는 언급 할 수 없으며 다르게 동작하거나 그렇지 않을 수 있습니다.
  • @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

:formatprgpar 또는 fmt 및 override로 설정할 수도 있습니다 gq. 자세한 내용은 :help formatprgVim 내부에 문의하십시오 .


거의 항상 gq비주얼 모드에서 사용 합니다. 나는 학생들에게 까다로운 사람들을위한 잡지 인 "Gentlemens 'Quarterly"의 약자라고 말합니다.

참고 URL : https://stackoverflow.com/questions/3033423/vim-command-to-restructure-force-text-to-80-columns

반응형