emacs에서의 세미콜론전에 자동들여쓰기하는 법이 있나요?

fox9의 이미지

현재 emacs를 사용하고 있습니다. 그런데 불편한 점이 있어서 이것을 어떻게 바꿀수 없을까 해서 질문을 올리게 되었습니다.
불편한 점은 자동들여쓰기(?)와 관련된 것인데
우선 어떤 것인가를 설명해보면

#include <stdio.h>

main()
{
int i=0

입력을 할때는 위처럼 있다가 맨 뒤에 세미콜론을 쳐주면 그때서야 아래와 같이 자동들여쓰기가 됩니다.

#include <stdio.h>

main()
{
    int i=0;

어짜피 따로 탭을 치거나 하지는 않지만 그래도 작업할때 아예 {, } 등의 괄호 표시가 나오면 자동들여쓰기를 먼저 해주고 그 위치에서 입력을 하도록 할 수 는 없을까요?
이것저것 찾아보니 {,} 등의 괄호를 치면 아예 엔터를 치지 않아도 바로 자동 들여쓰기가 되는 모드가 있긴 하던데 제가 원하는 것은 엔터를 쳤을 때 그때 들여쓰기가 되도록 하는 것입니다. (Windows용의 Ultraedit처럼 동작하는 것을 하고 싶습니다)
관련 내용을 아시는 분 계시면 답변 부탁드립니다.

그럼...

monpetit의 이미지

흠... 원하시면 답변은 아니지만, 전 그냥 탭 키 먼저 눌러 들여쓰기부터 한 다음에 내용을 써 넣습니다. :)

aqwerf의 이미지

유사한게 두가지가 있습니다.

c-toggle-auto-state (C-c C-a)
c-toggle-auto-hungry-state (C-c C-t)

단축키는 아마 위처럼 되어 있을 겁니다.

auto-state는 { 또는 ; 를 입력할 경우 auto-newline이 되는 것이고,
auto-hungry-state는 위 기능에다가 backspace시에 모든 공백을 한번에 지우는 기능이 추가됩니다.

.emacs에다가 추가하려면
(add-hook 'c-mode-hook
'(lambda ()
(c-toggle-auto-state)))
하시면 되고요...

wannabe95의 이미지

(add-hook 'c-mode-hook
          '(lambda ()
             (define-key c-mode-base-map "\C-m" 'newline-and-indent)))

~/.emacs 에 추가하시면 됩니다.

다른 여러가지 방법들도 가능합니다. emacswiki.org/cgi-bin/wiki 을 참고하시면 좋을 것 같습니다.

mooore의 이미지

; c, c++, java mode에서 return을 누르면
; 줄바꾸고 indent
(load "cc-mode")               ; C++ mode¸¦ È£Ãâ
(define-key c++-mode-map "\r" 'reindent-then-newline-and-indent)
(define-key c-mode-map "\r" 'reindent-then-newline-and-indent)
(define-key java-mode-map "\r" 'reindent-then-newline-and-indent)

저같은 경우엔 위와 같은 코드를 .emacs에 설정해두고 사용합니다.

별은 바라보는 자에게 빛을 준다.

fox9의 이미지

아 감사합니다.
너무 너무 잘 동작합니다 :)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.