Emacs의 Function key 설정 공개

16810 단어 emacs-lispEmacs
덜 유용한 팁은 아니지만 자신의 설정을 게시합니다. 여러분의 「나의 경우는…

F1: help-command



F1은 Deault에서 다양한 help-commad에 대한 prifix로 설정되어 있으므로 그대로 사용합니다. which-key.el을 도입하면 각 명령의 가이드가 미니 버퍼에 표시되므로 편리합니다.

(use-package which-key)
(add-hook 'after-init-hook #'which-key-mode)

F2:hydra-compile



일반적으로는 여기에 M-x compile 를 할당하고 있는 사람이 많다고 생각합니다. 나는 다양한 작업을 makefaile로 자동화하고 있으므로 목적에 따라 명령을 구분할 수 있도록 hydra로 메뉴 설정하고 있습니다.


(bind-key
 [f2]
 (defhydra hydra-compile (:color red :hint nil)
   "
 🗿 Compile: make _k_  _a_ll  _u_pftp  _m_ove  _b_klog  _g_it  _c_lean   🐾 "
   ("k" my:make-k :exit t)
   ("a" my:make-all :exit t)
   ("u" my:make-upftp :exit t)
   ("m" my:make-move :exit t)
   ("g" my:make-git :exit t)
   ("b" my:make-bklog :exit t)
   ("c" my:make-clean)))
  • hydra-compile의 상세 설정은 이쪽

  • F3: term-current-dir-open



    열려 있는 buffer의 현재로 시스템의 터미널을 엽니다. 또한 Shift+F3에서 Filer를 엽니다.
    (bind-key
     [f3]
     (defun term-current-dir-open ()
       "Open terminal application in current dir."
       (interactive)
       (let ((dir default-directory))
         (when (eq system-type 'darwin)
           (shell-command (concat "open -a iterm.app " dir)))
         (when (eq system-type 'gnu/linux)
           (shell-command (concat "gnome-terminal --maximize " dir))))))
    
    (bind-key
     [S-f3]
     (defun filer-current-dir-open ()
       "Open filer in current dir."
       (interactive)
       (when (eq system-type 'darwin)
         (shell-command "open ."))
       (when (eq system-type 'gnu/linux)
         (shell-command (concat "xdg-open " default-directory)))))
    

    F4: goto-chg



    텍스트를 편집하고 있고 이전 편집한 부분으로 돌아가고 싶을 때가 종종 있습니다. 그 때 편리한 것이 goto-chg.el입니다.
    (use-package goto-chg
     :bind
     ([f4] . goto-last-change)
     ([S-f4] . goto-last-change-reverse))
    

    F5: quickrun



    매우 perl 이나 ruby 등의 미니 스크립트를 자작하는 경우도 있으므로 quickrun으로 간단하게 시운전할 수 있도록 하고 있습니다.
    (use-package quickrun)
    (bind-key [f5] 'quickrun)
    

    F6: countel commands



    다기능 counsel의 커맨드군을 키 바인드해도 매우 기억할 수 없네요.
    자주 사용하는 주요 커맨드만 키 바인딩하고, 나머지는 F6를 두드리면 counsel-M-x가 마음대로 좁혀주므로 필요한 커맨드를 선택 할 수 있습니다.

    (bind-key [f6] (lambda ()
               (interactive)
               (counsel-M-x "^counsel ")))
    
    

  • counsel의 상세 설정은 이쪽

  • F7: calendar



    리타이어하고 나서는, Emacs에서의 GTD는 그만두었습니다만, 작업중에 캘린더를 칠라 보고 싶을 때도 있습니다. Calfw까지는 필요 없기 때문에 표준 기능의 calendar를 사용하고 있습니다. F7을 눌러 표시/숨기기를 토글합니다.


    (use-package calendar
      :commands calendar
      :bind (([f7] . calendar)
         :map calendar-mode-map
         ("n" . calendar-forward-day)
         ("b" . calendar-backward-day)
         ([f7] . calendar-exit))
      :config
      (setq calendar-mark-holidays-flag t))
    
    

  • calendar의 상세 설정은 이쪽

  • F8 : iconfy-or-deiconfy-frame



    Emacs 숨기기 (최소화)/다시 표시를 toggle합니다.
    ;; Iconify-frame
    (bind-key [f8] 'iconify-or-deiconify-frame)
    

    F9: display-line-numbers-mode



    linum-mode는 무겁기 때문에 사용하지 않았습니다만, Emacs26 이후가 되어 동작이 가벼운 display-line-numbers-mode 를 사용할 수 있게 되었으므로, F9로 toggle하고 있습니다.
    (add-hook 'prog-mode-hook 'display-line-numbers-mode)
    (add-hook 'text-mode-hook 'display-line-numbers-mode)
    (bind-key [f9] 'display-line-numbers-mode)
    

    F10: 대시보드



    Emacs에서 작업을 재설정 할 때는 dashboard로 돌아가려고합니다. 다시 돌아갈 때는 dashboard buffer를 Refresh합니다.


    (use-package dashboard
      :bind (([f10] . open-dashboard)
         :map dashboard-mode-map
         ([f10] . quit-dashboard))
      :hook
      (after-init . dashboard-setup-startup-hook)
      :config
      (defun open-dashboard ()
        "Open the *dashboard* buffer and jump to the first widget."
        (interactive)
        (delete-other-windows)
        ;; Refresh dashboard buffer
        (if (get-buffer dashboard-buffer-name)
        (kill-buffer dashboard-buffer-name))
        (dashboard-insert-startupify-lists)
        (switch-to-buffer dashboard-buffer-name)
        ;; Jump to the first section
        (goto-char (point-min))
        (dashboard-goto-recent-files))
    
      (defun quit-dashboard ()
        "Quit dashboard window."
        (interactive)
        (quit-window t)
        (when (and dashboard-recover-layout-p
               (bound-and-true-p winner-mode))
          (winner-undo)
          (setq dashboard-recover-layout-p nil)))
    
      (defun dashboard-goto-recent-files ()
        "Go to recent files."
        (interactive)
        (funcall (local-key-binding "r"))))
    

  • dashboard의 상세 설정은 이쪽

  • F11: neotree-toggle



    클래식한 설정이군요.


  • neotree의 상세 설정은 이쪽

  • F12: darkroom-mode



    내 Emacs는 문장 쓰기가 메인이므로 Darkroom-mode를 F12의 toggle에서 사용하고 있습니다. darkroom-mode로 작업할 때는 flycheck-mode git-gutter-mode display-line-numbers-mode 를 각각 OFF로 합니다.
    (use-package darkroom
      :bind (([f12] . my:darkroom-mode-in)
         :map darkroom-mode-map
         ([f12] . my:darkroom-mode-out ))
      :config
      (defun my:darkroom-mode-in ()
        "Darkroom mode in."
        (interactive)
        (display-line-numbers-mode 0)
        (flycheck-mode 0)
        (git-gutter-mode 0)
        (darkroom-mode 1))
      (defun my:darkroom-mode-out ()
        "Darkroom mode out."
        (interactive)
        (darkroom-mode 0)
        (git-gutter-mode 1)
        (flycheck-mode 1)
        (display-line-numbers-mode 1)))
    

    좋은 웹페이지 즐겨찾기