Today
-
Yesterday
-
Total
-
  • 날아갈 듯 가벼운 mg 편집기
    Practice/Emacs 2019.02.28 11:02

    시스템 운영을 하는데 있어서 이맥스는 좀 무겁다.[각주:1]
    간단한 설정 파일 편집에는 적합하지 않다.
    대안으로, `nano', `vi(m)'이 있다.
    그런데, `nano'는 익숙하지 않은데다 배우기도 싫다.
    `vi(m)'은 이단으로 교리에 위배된다.


    여기에 `mg'라는 가벼운 유사 이맥스[각주:2]가 있다.
    명령이 떨어지기 무섭게 커서가 떨어진다.
    주요 키바인딩(단축키)이 이맥스와 같다.
    이맥스 사용자가 익숙하게 사용할 수 있다.


    마이너한 오픈 소스의 문제 중에 유지 보수가 잘 이루어지지 않는 것이 있다.
    `mg'는 그런 점에서는 안심해도 된다.
    OpenBSD의 요소로 간주되어 유지보수를 잘 해주고 있다.


    단순 편집기 기능 이외에 다중 윈도우[각주:3], dired[각주:4], ctags[각주:5], cscope[각주:6]와 같은 유용한 기능도 지원한다.


    우분투에서 설치하는 방법이다.

    $ sudo apt-get install mg

    시스템 운영의 표준 편집기로 지정한다.

    $ sudo update-alternatives --config editor
    There are 6 choices for the alternative editor (providing /usr/bin/editor).
    
      Selection    Path                Priority   Status
    ------------------------------------------------------------
    * 0            /bin/nano            40        auto mode
      1            /bin/ed             -100       manual mode
      2            /bin/nano            40        manual mode
      3            /usr/bin/emacs25     0         manual mode
      4            /usr/bin/mg          30        manual mode
      5            /usr/bin/vim.basic   30        manual mode
      6            /usr/bin/vim.tiny    15        manual mode
    
    Press <enter> to keep the current choice[*], or type selection number:

    이 화면에서 `mg'에 해당하는 번호를 입력하여 선택한다.
    위 화면으로 예를 든다면, `4'를 입력하고 엔터를 누른다.


    기본 편집기를 선택하는 화면이 뜨지 않으면 아래 명령으로 추가한다.

    sudo alternatives --install /usr/bin/editor editor /usr/bin/mg 30


    사용 방법은 `man mg'로 mg의 man 페이지에서 볼 수 있다.

    MG(1)                     BSD General Commands Manual                    MG(1)
    
    NAME
         mg — emacs-like text editor
    
    SYNOPSIS
         mg [-nR] [-f mode] [+number] [file ...]
    
    DESCRIPTION
         mg is intended to be a small, fast, and portable editor for people who
         can't (or don't want to) run emacs for one reason or another, or are not
         familiar with the vi(1) editor.  It is compatible with emacs because
         there shouldn't be any reason to learn more editor types than emacs or
         vi(1).
         ...
    DEFAULT KEY BINDINGS
         Normal editing commands are very similar to GNU Emacs.  In the following
         examples, C-x means Control-x, and M-x means Meta-x, where the Meta key
         may be either a special key on the keyboard or the ALT key; otherwise ESC
         followed by the key X works as well.
    
               C-SPC         set-mark-command
               C-a           beginning-of-line
               C-b           backward-char
               C-c s c       cscope-find-functions-calling-this-function
               C-c s d       cscope-find-global-definition
               C-c s e       cscope-find-egrep-pattern
               C-c s f       cscope-find-this-file
               C-c s i       cscope-find-files-including-file
               C-c s n       cscope-next-symbol
               C-c s p       cscope-prev-symbol
               C-c s s       cscope-find-this-symbol
               C-c s t       cscope-find-this-text-string
               C-d           delete-char
               C-e           end-of-line
               C-f           forward-char
               C-g           keyboard-quit
               C-h C-h       help-help
               C-h a         apropos
               C-h b         describe-bindings
               C-h c         describe-key-briefly
               C-j           newline-and-indent
               C-k           kill-line
               C-l           recenter
               RET           newline
               C-n           next-line
               C-o           open-line
               C-p           previous-line
               C-q           quoted-insert
               C-r           isearch-backward
               C-s           isearch-forward
               C-t           transpose-chars
               C-u           universal-argument
               C-v           scroll-up
               C-w           kill-region
               C-x C-b       list-buffers
               C-x C-c       save-buffers-kill-emacs
               C-x C-f       find-file
               C-x C-g       keyboard-quit
               C-x C-l       downcase-region
               C-x C-o       delete-blank-lines
               C-x C-q       toggle-read-only
               C-x C-r       find-file-read-only
               C-x C-s       save-buffer
               C-x C-u       upcase-region
               C-x C-v       find-alternate-file
               C-x C-w       write-file
               C-x C-x       exchange-point-and-mark
               C-x (         start-kbd-macro
               C-x )         end-kbd-macro
               C-x 0         delete-window
               C-x 1         delete-other-windows
               C-x 2         split-window-vertically
               C-x 4 C-f     find-file-other-window
               C-x 4 C-g     keyboard-quit
               C-x 4 b       switch-to-buffer-other-window
               C-x 4 f       find-file-other-window
               C-x =         what-cursor-position
               C-x ^         enlarge-window
               C-x `         next-error
               C-x b         switch-to-buffer
               C-x d         dired
               C-x e         call-last-kbd-macro
               C-x f         set-fill-column
               C-x g         goto-line
               C-x h         mark-whole-buffer
               C-x i         insert-file
               C-x k         kill-buffer
               C-x n         other-window
               C-x o         other-window
               C-x p         previous-window
               C-x s         save-some-buffers
               C-x u         undo
               C-y           yank
               C-z           suspend-emacs
               M-C-v         scroll-other-window
               M-SPC         just-one-space
               M-!           shell-command
               M-.           find-tag
               M-*           pop-tag-mark
               M-%           query-replace
               M-<           beginning-of-buffer
               M->           end-of-buffer
               M-\           delete-horizontal-space
               M-^           join-line
               M-b           backward-word
               M-c           capitalize-word
               M-d           kill-word
               M-f           forward-word
               M-h           mark-paragraph
               M-l           downcase-word
               M-m           back-to-indentation
               M-q           fill-paragraph
               M-r           search-backward
               M-s           search-forward
               M-t           transpose-words
               M-u           upcase-word
               M-v           scroll-down
               M-w           copy-region-as-kill
               M-x           execute-extended-command
               M-{           backward-paragraph
               M-|           shell-command-on-region
               M-}           forward-paragraph
               M-~           not-modified
               M-DEL         backward-kill-word
               C-_           undo
               )             blink-and-insert
               DEL           delete-backward-char
         ...


    1. 빠르게 문서를 여는 방법에 이맥스 서버 모드가 있다. 이맥스를 미리 띄워놓고, 필요할 때, `emacsclient'로 접속하여 문서를 편집한다. 이맥스를 실행시키는 시간이 줄어들어 빠르게 느껴진다. 실행 시간만 줄어들 뿐 여전히 많은 시스템 자원을 사용하여 개발 장비에서만 유용한다. [본문으로]
    2. 리습 엔진이 없어서 이맥스라고 부르기 어렵다. 단지, 이맥스와 키 바인딩이 같다. [본문으로]
    3. 이맥스의 윈도우는 GUI의 윈도우와 다른 개념이다. 이맥스는 화면을 분할하여, 각 분할된 영역을 윈도우라고 부른다. GUI의 윈도우에 해당하는 것을 이맥스에서는 프레임이라고 부른다. [본문으로]
    4. 이맥스 파일 브라우저. GUI이 파일 브라우저와 동일하게 파일 목록과 속성 보여주기, 디렉토리 이동, 파일 복사와 이동 등을 제공. [본문으로]
    5. 코드 내의 함수, 변수, 매크로 상수의 정의로 이동하는 기능 [본문으로]
    6. 소스 코드를 탐색하는 기능 [본문으로]

    댓글 0

Designed by Tistory.