.emacs에 무엇이 있습니까?
최근에 컴퓨터를 몇 번 바꾸었고 어딘가에 .emacs를 잃어 버렸습니다. 나는 그것을 다시 구축하려고 노력하고 있지만, 나는 그것을하는 동안 다른 사람들이 사용하는 다른 좋은 구성을 선택할 것이라고 생각했습니다.
당신은 이맥스를 사용한다면, 무슨 일에있어 귀하의 이맥스?
내 것은 현재 매우 불모지이며 다음 만 포함합니다.
- 글로벌 글꼴 잠금 모드!
(global-font-lock-mode 1)
- 들여 쓰기, 탭 및 공백에 대한 개인적 선호도.
- perl-mode 대신 cperl-mode를 사용하십시오.
- 컴파일 단축키.
무엇이 유용하다고 생각하십니까?
궁극의 dotfiles 사이트를 사용하십시오 . 여기에 '.emacs'를 추가하십시오. 다른 사람들의 '.emacs'를 읽으십시오.
내가 가장 좋아하는 스 니펫. Emacs 눈 사탕의 궁극 :
;; real lisp hackers use the lambda character
;; courtesy of stefan monnier on c.l.l
(defun sm-lambda-mode-hook ()
(font-lock-add-keywords
nil `(("\\<lambda\\>"
(0 (progn (compose-region (match-beginning 0) (match-end 0)
,(make-char 'greek-iso8859-7 107))
nil))))))
(add-hook 'emacs-lisp-mode-hook 'sm-lambda-mode-hook)
(add-hook 'lisp-interactive-mode-hook 'sm-lamba-mode-hook)
(add-hook 'scheme-mode-hook 'sm-lambda-mode-hook)
따라서 lisp / scheme을 편집 할 때 다음과 같이 표시됩니다.
(global-set-key "^Cr" '(λ () (interactive) (revert-buffer t t nil)))
나는이 변경해야 yes
하거나 no
프롬프트에 y
또는 n
프롬프트 :
(fset 'yes-or-no-p 'y-or-n-p)
이 질문 에서 얻은 "팬 페어"없이 Emacs를 시작할 수 있습니다.
(setq inhibit-startup-echo-area-message t)
(setq inhibit-startup-message t)
그리고 스티브 예그의 기능은 그 해당 버퍼와 함께 편집하고있는 파일의 이름을 변경합니다 :
(defun rename-file-and-buffer (new-name)
"Renames both current buffer and file it's visiting to NEW-NAME."
(interactive "sNew name: ")
(let ((name (buffer-name))
(filename (buffer-file-name)))
(if (not filename)
(message "Buffer '%s' is not visiting a file!" name)
(if (get-buffer new-name)
(message "A buffer named '%s' already exists!" new-name)
(progn
(rename-file name new-name 1)
(rename-buffer new-name)
(set-visited-file-name new-name)
(set-buffer-modified-p nil))))))
매우 유용하다는 것을 증명할 수있는 한 가지 : 너무 커지기 전에 다양한 작업을 위해 여러 파일로 분할 해보십시오. 내 .emacs는 내로드 경로를 설정하고 여러 파일을로드합니다. 모든 모드가 있습니다. 의 특정 설정 mode-configs.el
,의 키 바인딩 keys.el
등
내 .emacs는 127 줄에 불과합니다. 다음은 가장 유용한 작은 스 니펫입니다.
;; keep backup files neatly out of the way in .~/
(setq backup-directory-alist '(("." . ".~")))
이것은 내가 디렉토리를 어지럽게 찾은 * ~ 파일을 특별한 디렉토리로 이동하게 만듭니다.이 경우. ~
;; uniquify changes conflicting buffer names from file<2> etc
(require 'uniquify)
(setq uniquify-buffer-name-style 'reverse)
(setq uniquify-separator "/")
(setq uniquify-after-kill-buffer-p t) ; rename after killing uniquified
(setq uniquify-ignore-buffers-re "^\\*") ; don't muck with special buffers
이것은 파일의 전체 경로를 최대한 많이 사용하여 여러 파일이 동일한 이름을 가질 때 얻는 추악한 file <2> 등의 버퍼 이름을 훨씬 깔끔한 이름으로 변경하는 uniquify를 설정합니다.
그게 다예요. 나머지는 모두가 알고있는 꽤 표준적인 것들입니다.
이것은 전체 키트와 kaboodle은 아니지만 내가 수집 한 더 유용한 스 니펫 중 일부입니다.
(defadvice show-paren-function (after show-matching-paren-offscreen
activate)
"If the matching paren is offscreen, show the matching line in the
echo area. Has no effect if the character before point is not of
the syntax class ')'."
(interactive)
(let ((matching-text nil))
;; Only call `blink-matching-open' if the character before point
;; is a close parentheses type character. Otherwise, there's not
;; really any point, and `blink-matching-open' would just echo
;; "Mismatched parentheses", which gets really annoying.
(if (char-equal (char-syntax (char-before (point))) ?\))
(setq matching-text (blink-matching-open)))
(if (not (null matching-text))
(message matching-text))))
;;;;;;;;;;;;;;;
;; UTF-8
;;;;;;;;;;;;;;;;;;;;
;; set up unicode
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
;; This from a japanese individual. I hope it works.
(setq default-buffer-file-coding-system 'utf-8)
;; From Emacs wiki
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
;; Wwindows clipboard is UTF-16LE
(set-clipboard-coding-system 'utf-16le-dos)
(defun jonnay-timestamp ()
"Spit out the current time"
(interactive)
(insert (format-time-string "%Y-%m-%d")))
(defun jonnay-sign ()
"spit out my name, email and the current time"
(interactive)
(insert "-- Jonathan Arkell (jonathana@criticalmass.com)")
(jonnay-timestamp))
;; Cygwin requires some seriosu setting up to work the way i likes it
(message "Setting up Cygwin...")
(let* ((cygwin-root "c:")
(cygwin-bin (concat cygwin-root "/bin"))
(gambit-bin "/usr/local/Gambit-C/4.0b22/bin/")
(snow-bin "/usr/local/snow/current/bin")
(mysql-bin "/wamp/bin/mysql/mysql5.0.51a/bin/"))
(setenv "PATH" (concat cygwin-bin ";" ;
snow-bin ";"
gambit-bin ";"
mysql-bin ";"
".;")
(getenv "PATH"))
(setq exec-path (cons cygwin-bin exec-path)))
(setq shell-file-name "bash")
(setq explicit-shell-file-name "bash")
(require 'cygwin-mount)
(cygwin-mount-activate)
(message "Setting up Cygwin...Done")
; Completion isn't perfect, but close
(defun my-shell-setup ()
"For Cygwin bash under Emacs 20+"
(setq comint-scroll-show-maximum-output 'this)
(setq comint-completion-addsuffix t)
(setq comint-eol-on-send t)
(setq w32-quote-process-args ?\")
(make-variable-buffer-local 'comint-completion-addsuffix))
(setq shell-mode-hook 'my-shell-setup)
(add-hook 'emacs-startup-hook 'cygwin-shell)
; Change how home key works
(global-set-key [home] 'beginning-or-indentation)
(substitute-key-definition 'beginning-of-line 'beginning-or-indentation global-map)
(defun yank-and-down ()
"Yank the text and go down a line."
(interactive)
(yank)
(exchange-point-and-mark)
(next-line))
(defun kill-syntax (&optional arg)
"Kill ARG sets of syntax characters after point."
(interactive "p")
(let ((arg (or arg 1))
(inc (if (and arg (< arg 0)) 1 -1))
(opoint (point)))
(while (not (= arg 0))
(if (> arg 0)
(skip-syntax-forward (string (char-syntax (char-after))))
(skip-syntax-backward (string (char-syntax (char-before)))))
(setq arg (+ arg inc)))
(kill-region opoint (point))))
(defun kill-syntax-backward (&optional arg)
"Kill ARG sets of syntax characters preceding point."
(interactive "p")
(kill-syntax (- 0 (or arg 1))))
(global-set-key [(control shift y)] 'yank-and-down)
(global-set-key [(shift backspace)] 'kill-syntax-backward)
(global-set-key [(shift delete)] 'kill-syntax)
(defun insert-file-name (arg filename)
"Insert name of file FILENAME into buffer after point.
Set mark after the inserted text.
Prefixed with \\[universal-argument], expand the file name to
its fully canocalized path.
See `expand-file-name'."
;; Based on insert-file in Emacs -- ashawley 2008-09-26
(interactive "*P\nfInsert file name: ")
(if arg
(insert (expand-file-name filename))
(insert filename)))
(defun kill-ring-save-filename ()
"Copy the current filename to the kill ring"
(interactive)
(kill-new (buffer-file-name)))
(defun insert-file-name ()
"Insert the name of the current file."
(interactive)
(insert (buffer-file-name)))
(defun insert-directory-name ()
"Insert the name of the current directory"
(interactive)
(insert (file-name-directory (buffer-file-name))))
(defun jonnay-toggle-debug ()
"Toggle debugging by toggling icicles, and debug on error"
(interactive)
(toggle-debug-on-error)
(icicle-mode))
(defvar programming-modes
'(emacs-lisp-mode scheme-mode lisp-mode c-mode c++-mode
objc-mode latex-mode plain-tex-mode java-mode
php-mode css-mode js2-mode nxml-mode nxhtml-mode)
"List of modes related to programming")
; Text-mate style indenting
(defadvice yank (after indent-region activate)
(if (member major-mode programming-modes)
(indent-region (region-beginning) (region-end) nil)))
이미 언급 된 다른 많은 사람들이 있지만 제 의견으로는 절대적으로 필요합니다.
(transient-mark-mode 1) ; makes the region visible
(line-number-mode 1) ; makes the line number show up
(column-number-mode 1) ; makes the column number show up
여기에서 볼 수 있습니다 : http://www.dotemacs.de/
그리고 내 .emacs도 여기에 넣는 데 꽤 길기 때문에 대답을 너무 읽기 어렵게 만들 것입니다. 어쨌든, 당신이 원한다면 내가 당신에게 보낼 수 있습니다.
또한 다음을 읽어 보시기 바랍니다 : http://steve.yegge.googlepages.com/my-dot-emacs-file
다음은 내가 의존하게 된 몇 가지 키 매핑입니다.
(global-set-key [(control \,)] 'goto-line)
(global-set-key [(control \.)] 'call-last-kbd-macro)
(global-set-key [(control tab)] 'indent-region)
(global-set-key [(control j)] 'join-line)
(global-set-key [f1] 'man)
(global-set-key [f2] 'igrep-find)
(global-set-key [f3] 'isearch-forward)
(global-set-key [f4] 'next-error)
(global-set-key [f5] 'gdb)
(global-set-key [f6] 'compile)
(global-set-key [f7] 'recompile)
(global-set-key [f8] 'shell)
(global-set-key [f9] 'find-next-matching-tag)
(global-set-key [f11] 'list-buffers)
(global-set-key [f12] 'shell)
주로 C ++ 개발을위한 기타 기타 사항 :
;; Use C++ mode for .h files (instead of plain-old C mode)
(setq auto-mode-alist (cons '("\\.h$" . c++-mode) auto-mode-alist))
;; Use python-mode for SCons files
(setq auto-mode-alist (cons '("SConstruct" . python-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("SConscript" . python-mode) auto-mode-alist))
;; Parse CppUnit failure reports in compilation-mode
(require 'compile)
(setq compilation-error-regexp-alist
(cons '("\\(!!!FAILURES!!!\nTest Results:\nRun:[^\n]*\n\n\n\\)?\\([0-9]+\\)) test: \\([^(]+\\)(F) line: \\([0-9]+\\) \\([^ \n]+\\)" 5 4)
compilation-error-regexp-alist))
;; Enable cmake-mode from http://www.cmake.org/Wiki/CMake_Emacs_mode_patch_for_comment_formatting
(require 'cmake-mode)
(setq auto-mode-alist
(append '(("CMakeLists\\.txt\\'" . cmake-mode)
("\\.cmake\\'" . cmake-mode))
auto-mode-alist))
;; "M-x reload-buffer" will revert-buffer without requiring confirmation
(defun reload-buffer ()
"revert-buffer without confirmation"
(interactive)
(revert-buffer t t))
Emacs에서 편집중인 웹 페이지를 새로 고치려면
(defun moz-connect()
(interactive)
(make-comint "moz-buffer" (cons "127.0.0.1" "4242"))
(global-set-key "\C-x\C-g" '(lambda ()
(interactive)
(save-buffer)
(comint-send-string "*moz-buffer*" "this.BrowserReload()\n"))))
http://hyperstruct.net/projects/mozlab 과 함께 사용
내 사이트 에서 내 구성 (html 및 tar'ed 아카이브 모두)을 찾을 수 있습니다 . 다양한 모드에 대한 많은 설정이 포함되어 있습니다.
이 블록은 나에게 가장 중요합니다.
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
그래도 그 차이에 대해서는 잘 모르겠습니다. 화물 컬트, 내 생각 엔 ...
.emacs를 체계적으로 유지하려고합니다. 구성은 항상 진행중인 작업이지만 전체 구조에 만족하기 시작했습니다.
모든 항목은 ~/.elisp
버전 제어하에있는 디렉토리 아래에 있습니다 (관심있는 경우 git 사용). ~/.emacs
단순히 ~/.elisp/dotemacs
자신이로드하는 지점을 가리 킵니다 ~/.elisp/cfg/init
. 이 파일은 차례로를 통해 다양한 구성 파일을 가져옵니다 require
. 이것은 구성 파일이 모드처럼 동작해야 함을 의미합니다. 즉, 의존하는 항목을 가져오고 provide
파일 끝에 (provide 'my-ibuffer-cfg)
. 내 구성에 정의 된 모든 식별자 앞에 my-
.
나는 기술적 인 의미가 아니라 모드 / 주체 / 작업과 관련하여 구성을 구성합니다. 예를 들어 모든 키 바인딩 또는 얼굴이 정의 된 별도의 구성 파일 이 없습니다 .
My init.el
는 저장 될 때마다 Emacs가 구성 파일을 다시 컴파일하도록 다음 후크를 정의합니다 (컴파일 된 Elisp는 훨씬 빠르게로드되지만이 단계를 수동으로 수행하고 싶지 않습니다).
;; byte compile config file if changed
(add-hook 'after-save-hook
'(lambda ()
(when (string-match
(concat (expand-file-name "~/.elisp/cfg/") ".*\.el$")
buffer-file-name)
(byte-compile-file buffer-file-name))))
다음은에 대한 디렉토리 구조입니다 ~/.elisp
.
~/.elisp/todo.org
: 아직 수행해야하는 항목 (+ 위시리스트 항목)을 추적하는 조직 모드 파일입니다.
~/.elisp/dotemacs
:에 대한 Symlink 타겟이 ~/.emacs
로드됩니다 ~/.elisp/cfg/init
.
~/.elisp/cfg
: 내 자신의 구성 파일.
~/.elisp/modes
: 단일 파일로만 구성된 모드입니다.
~/.elisp/packages
: lisp, 문서 및 리소스 파일이 포함 된 정교한 모드.
나는 GNU Emacs를 사용하는데, 그 버전은 실제로 패키지를 지원하지 않습니다. 따라서 보통 다음과 같이 수동으로 구성합니다 ~/.elisp/packages/foobar-0.1.3
. 패키지의 루트 디렉토리입니다. 하위 디렉토리 lisp
는 모든 lisp 파일을 보유하고 info
있으며 문서가있는 곳입니다. ~/.elisp/packages/foobar
업데이트 할 때 구성 파일을 변경할 필요가 없도록 현재 사용되는 패키지 버전을 가리키는 심볼릭 링크입니다. 일부 패키지의 ~/.elisp/packages/foobar.installation
경우 설치 프로세스에 대한 메모를 보관하는 파일을 보관합니다. 성능상의 이유로 새로 설치된 패키지의 모든 elisp 파일을 컴파일합니다.
여기 몇 가지 내 작업이 있습니다.
ISO 8601 형식으로 날짜를 삽입합니다.
(defun insertdate ()
(interactive)
(insert (format-time-string "%Y-%m-%d")))
(global-set-key [(f5)] 'insertdate)
C ++ 프로그래머의 경우 클래스 스켈레톤을 생성합니다 (클래스 이름은 확장자가없는 파일 이름과 동일합니다).
(defun createclass ()
(interactive)
(setq classname (file-name-sans-extension (file-name-nondirectory buffer-file-name)))
(insert
"/**
* " classname".h
*
* Author: Your Mom
* Modified: " (format-time-string "%Y-%m-%d") "
* Licence: GNU GPL
*/
#ifndef "(upcase classname)"
#define "(upcase classname)"
class " classname "
{
public:
"classname"();
~"classname"();
private:
};
#endif
"))
닫는 괄호 자동 생성 :
(setq skeleton-pair t)
(setq skeleton-pair-on-word t)
(global-set-key (kbd "[") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "(") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "{") 'skeleton-pair-insert-maybe)
(global-set-key (kbd "<") 'skeleton-pair-insert-maybe)
쉬운 (e) lisp 처리 및 ido 모드 미니 버퍼 완성을 위해 paredit를 사용합니다.
모든 사람들이 매우 다른 목적으로 Emacs를 사용하기 때문에이 질문에 답하기는 어렵습니다.
또한 더 나은 방법은 dotemacs를 KISS하는 것입니다. Easy Customization Interface 는 Emacs 모드에서 광범위하게 지원 되기 때문에 모든 사용자 정의를 사용자 custom-file
(dotemacs에서 별도의 위치 일 수 있음) 에 저장해야 하며 dotemacs의 경우로드 경로 설정, 패키지 필요, 후크 만 넣어야합니다. 및 키 바인딩. Emacs Starter Kit 사용을 시작하면 도 테맥에서도 유용한 설정이 제거 될 수 있습니다.
EmacsWiki의 DotEmacs 카테고리를 참조하십시오 . 이 질문을 다루는 페이지에 대한 많은 링크를 제공합니다.
(put 'erase-buffer 'disabled nil)
(put 'downcase-region 'disabled nil)
(set-variable 'visible-bell t)
(set-variable 'tool-bar-mode nil)
(set-variable 'menu-bar-mode nil)
(setq load-path (cons (expand-file-name "/usr/share/doc/git-core/contrib/emacs") load-path))
(require 'vc-git)
(when (featurep 'vc-git) (add-to-list 'vc-handled-backends 'git))
(require 'git)
(autoload 'git-blame-mode "git-blame"
"Minor mode for incremental blame for Git." t)
webjump를 사용하여 웹 페이지 및 검색에 대한 몇 가지 편리한 바로 가기를 설정했습니다.
(require 'webjump)
(global-set-key [f2] 'webjump)
(setq webjump-sites
(append '(
("Reddit Search" .
[simple-query "www.reddit.com" "http://www.reddit.com/search?q=" ""])
("Google Image Search" .
[simple-query "images.google.com" "images.google.com/images?hl=en&q=" ""])
("Flickr Search" .
[simple-query "www.flickr.com" "flickr.com/search/?q=" ""])
("Astar algorithm" .
"http://www.heyes-jones.com/astar")
)
webjump-sample-sites))
이것이 어떻게 작동하는지에 대한 블로그 게시물
http://justinsboringpage.blogspot.com/2009/02/search-reddit-flickr-and-google-from.html
또한 다음을 권장합니다.
(setq visible-bell t) ; no beeping
(setq transient-mark-mode t) ; visually show region
(setq line-number-mode t) ; show line numbers
(setq global-font-lock-mode 1) ; everything should use fonts
(setq font-lock-maximum-decoration t)
또한 불필요한 GUI 항목을 제거합니다.
(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(if (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(if (fboundp 'menu-bar-mode) (menu-bar-mode -1)))
로드 경로를 수정하는 한 줄 내 init 라이브러리를로드하는 한 줄 내 emacs init 파일을로드하는 한 줄
물론, "emacs init 파일"은 결정적인 순서로로드 된 특정 항목 당 하나씩 상당히 많습니다.
이맥스 스타터 키트 의 거점으로, 나는 추가 한 ... vimpulse.el
, whitespace.el
, yasnippet
, textmate.el
와 newsticker.el
.
내 ~ / .emacs.d / $ USERNAME.el (dbr.el) 파일에서 :
(add-to-list 'load-path (concat dotfiles-dir "/vendor/"))
;; Snippets
(add-to-list 'load-path "~/.emacs.d/vendor/yasnippet/")
(require 'yasnippet)
(yas/initialize)
(yas/load-directory "~/.emacs.d/vendor/yasnippet/snippets")
;; TextMate module
(require 'textmate)
(textmate-mode 'on)
;; Whitespace module
(require 'whitespace)
(add-hook 'ruby-mode-hook 'whitespace-mode)
(add-hook 'python-mode-hook 'whitespace-mode)
;; Misc
(flyspell-mode 'on)
(setq viper-mode t)
(require 'viper)
(require 'vimpulse)
;; IM
(eval-after-load 'rcirc '(require 'rcirc-color))
(setq rcirc-default-nick "_dbr")
(setq rcirc-default-user-name "_dbr")
(setq rcirc-default-user-full-name "_dbr")
(require 'jabber)
;;; Google Talk account
(custom-set-variables
'(jabber-connection-type (quote ssl))
'(jabber-network-server "talk.google.com")
'(jabber-port 5223)
'(jabber-server "mysite.tld")
'(jabber-username "myusername"))
;; Theme
(color-theme-zenburn)
;; Key bindings
(global-set-key (kbd "M-z") 'undo)
(global-set-key (kbd "M-s") 'save-buffer)
(global-set-key (kbd "M-S-z") 'redo)
항상 svn http://my-trac.assembla.com/ez-conf/browser/emacs.d에 내 구성을 저장 하십시오.
이 글을 읽은 후, 나는 최상의 .emacs 수정을위한 간단한 사이트를 갖는 것이 좋을 것이라고 생각했습니다. 여기에 게시하고 투표하십시오.
https://b7j0c.org/stuff/dotemacs.html
I'm new to emacs, in my .emacs file there are
- indentation configuration
- color theme
- php mode, coffee mode and js2 mode
- ido mode
FWIW, my .emacs is here:
http://svn.red-bean.com/repos/kfogel/trunk/.emacs
lots of stuff: https://github.com/tavisrudd/emacs.d
el-get has made managing it and dependencies a lot easier: https://github.com/tavisrudd/emacs.d/blob/master/dss-init-el-get.el
For Scala coders
;; Load the ensime lisp code... http://github.com/aemoncannon/ensime
(add-to-list 'load-path "ENSIME_ROOT/elisp/")
(require 'ensime)
;; This step causes the ensime-mode to be started whenever ;; scala-mode is started for a buffer. You may have to customize this step ;; if you're not using the standard scala mode.
(add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
;; MINI HOWTO: ;; Open .scala file. M-x ensime (once per project)
My emacs configuration has grown up pretty big over the years and I have lot of useful stuff for me there but if I have two functions it probably would have been those ones.
Define C-x UP and C-x DOWN to move the current line or down keeping the cursor at the right place :
;Down/UP the current line
(global-set-key '[(control x) (up)] 'my-up-line)
(global-set-key '[(control x) (down)] 'my-down-line)
(defun my-down-line()
(interactive)
(let ((col (current-column)))
(forward-line 1)
(transpose-lines 1)
(forward-line -1)
(forward-char col)
)
)
(defun my-up-line()
(interactive)
(let ((col (current-column)))
(transpose-lines 1)
(forward-line -2)
(forward-char col)
)
)
ReferenceURL : https://stackoverflow.com/questions/154097/whats-in-your-emacs
'programing' 카테고리의 다른 글
Django URLS, 루트를 앱에 매핑하는 방법은 무엇입니까? (0) | 2021.01.16 |
---|---|
운영자 '??' (0) | 2021.01.16 |
중복을 찾기 위해 T-SQL 코드를 얻는 방법은 무엇입니까? (0) | 2021.01.16 |
cocoaLumberjack을 사용하여 로그 파일이 저장되는 위치 (0) | 2021.01.16 |
왜 new String (“”)은 컴파일되지만 char c = ''는 컴파일되지 않습니까? (0) | 2021.01.16 |