2011년 5월 6일 금요일

[Emacs] 긴 줄을 나눠서 표시해보자

Emacs에서는 긴 라인을 나눠어주는 기능은 fill-paragraph라는 기능이 제공된다. 정확히는 fill-column 수치에 맞게 긴 라인을 나눠주는 기능이다.

하지만 이 기능은 특정 수치에 맞게 텍스트 자체를 가공해 버리는 기능이다. 따라서 원래대로 돌리려먼 수동으로 편집해야 한다. (주. 물론 기능이 있을지도 모르겠지만 잘 안 쓰기 때문에...)

80컬럼 이하로 라인 길이를 조절하는 건 구형 터미널(콘솔)에서나 쓰일 만한 기능이다. 요즘처럼 GUI가 대세인 세상에서는 굳이 쓸 필요가 없는게 아닌가 하는 생각이 든다.

하여간 그래서 Emacs에서도 라인을 여러줄에 걸쳐서 표시해 주게 할 수도 있다. (물론 긴 라인을 줄을 나누지 않고 가로 스크롤 해서 보게 할 수도 있지만 개인적으로는 혐오한다 -_-)
(global-visual-line-mode t)
기본적으로 제공되는 기능이니 망설일 필요 없이 그냥 써 넣으면 된다.

visual-line-mode는 긴 라인을 워드랩(word wrap)으로 나눠서 여러 라인에 걸쳐서 표시해 주는 기능을 제공한다.
위 스크린샷의 텍스트는 모두 한 줄이지만 여러 줄에 나눠서 표시되어 있다. 여기서 Emacs 창 크기를 바꾸면...
이렇게 크기에 맞춰서 다시 배열시켜 보여준다.

물론 원본 텍스트 자체를 수정하는 것도 아니기 때문에 안심(?)하고 사용할 수 있다.

댓글 6개 :

manki kim :

글 잘봤습니다. 한가지 궁금한게 들여쓰기가 되있는 긴글일 경우 줄바꿈된 글이 첫줄에 표시가 되어 눈이 어지럽고 지저분한데, editplus나 다른 편집기에서는 들여쓰기 한곳에서부터 표시가 되어 깔끔하더라구요. 예를들면 아래와 같습니다. emacs에서도 editplus처럼 할 수 없을까요?

>>emacs
   동해물과 백두산이 마르고 닳도록 하느님이
보우하사 우리나라 만세

>>editplus
   동해물과 백두산이 마르고 닳도록 하느님이
   보우하사 우리나라 만세

Renn Seo :

mankl kim//
http://elpa.gnu.org/packages/adaptive-wrap-0.1.el 이런걸 이용해 보는 방법도 있습니다만 아무래도 원하시는 것과는 좀 다를 것 같습니다.

코딩 시에는 들여쓰기 표현이 길 줄에 같이 적용되어 버리면
들여쓰기가 깊어지면 굉장히 난해하게 보일지도 몰라서
이맥서들은 필요성을 못 느끼나 봅니다. ^^;

언제가 될 진 모르겠지만 좀 더 찾아보고 관련된 내용을 찾으면 다른 글로 포스팅 한번 해 보겠습니다. ;-)

manki kim :

답변 감사합니다. ^^ 저도 방금 막 찾았는데요.

http://stackoverflow.com/questions/1771981/how-to-keep-indentation-with-emacs-org-mode-visual-line-mode

노트나 TODO리스트 작성에 사용되는 org mode의 org-indent-mode 사용하니 깔끔하게 들여쓰기가 되는군요. 이 모드를 모든 주모드의 마이너모드로 적용되게 하면 될것같습니다.


manki kim :

.emacs 파일에 아래와 같이 설정하니 마이너모드로 잘 작동되는군요.(text-mode-hook은 텍스트파일 및 html파일에 적용되고, prog-mode-hook은 모든 프로그래밍 모드에 적용됩니다)
(add-hook 'text-mode-hook (lambda () (org-indent-mode t)))
(add-hook 'prog-mode-hook (lambda () (org-indent-mode t)))


Renn Seo님이 알려주신 adaptive-wrap은 아래와 같이 설정하였습니다.
(add-hook 'text-mode-hook (lambda () (adaptive-wrap-prefix-mode t)))
(add-hook 'prog-mode-hook (lambda () (adaptive-wrap-prefix-mode t)))


이맥스 어렵긴한데 입맛대로 꾸밀 수 있어서 너무 좋은것 같아요.
키맵도 상당히 중독적이구요.. ㅠㅠ

Renn Seo :

mankl kim//
좋은 정보 감사합니다. 저도 한번 써 봐야 겠네요. :-)

vim이든 emacs든 키맵 중독되면 참 이래저래 문제죠.
다른 데서 단축키 때문에 문제를 일으키니...;;;;

Jeong-min Lee :

글 잘 봤습니다~!!