• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            syhd142  
            日歷
            <2011年2月>
            303112345
            6789101112
            13141516171819
            20212223242526
            272812345
            6789101112
            統(tǒng)計
            • 隨筆 - 23
            • 文章 - 122
            • 評論 - 31
            • 引用 - 0

            導航

            常用鏈接

            留言簿(2)

            隨筆檔案(23)

            文章分類(270)

            文章檔案(122)

            我的豆瓣

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

             

            轉至:http://www.zeuux.org/science/learning-emacs.cn.html


            學習GNU Emacs

            作者:夏武

            1 GNU Emacs介紹

            Emacs編輯器是最受歡迎、傳播范圍最廣、也是最強大和最靈活的UNIX文本編輯器。與其他文本編輯器的重要區(qū)別在于它是一個完備的工作環(huán)境,使用Emacs可以完成各種日常工作。對很多Emacs用戶來說,Emacs已經超越了編輯器的范疇,使用Emacs是一種文化,一種生活。 GNU Emacs是GNU開發(fā)的Emacs變體,也是最廣泛使用的Emacs編輯器。本文將以GNU Emacs為例講解GNU Emacs編輯器的使用和技巧。首先介紹一下常用的快捷鍵,接著介紹GNU Emacs擴展,最后是.emacs文件的配置。

            2 快捷鍵

            GNU Emacs的快捷鍵都是綁定于CTRL鍵和ALT鍵上。每個快捷鍵對應一個指令名稱,也就是一個對應的函數名稱,這允許你根據不同的喜好將快捷鍵綁定到不同的指令名稱。另外,在Emacs中有很多的指令沒有綁定快捷鍵,我們可以通過M-x 指令名稱來執(zhí)行指令。例如,全文替換我們可以使用M-x replace-strings。這樣,很多沒有綁定快捷鍵的功能都可以用到了。

            2.1 基本操作

            表1是基本操作指令列表。

            表1 基本操作指令

            快捷鍵指令名稱用途快捷鍵指令名稱用途
            C-SPset-mark-command設置標記C-qquoted-insert插入引用
            C-abeginning-of-line移動到行首C-risearch-backward向前查找
            C-bbackward-char向前移動一個字符C-sisearch-forward向后查找
            C-ttranspose-chars掉換前后二個字符位置C-ddelete-char刪除一個字符
            C-eend-of-line移動到行尾C-vscroll-up向下滾動一屏
            C-fforward-char向后移動一個字符C-wkill-region刪除選定區(qū)域
            C-x <scroll-left向左移動一屏C-x >scroll-right向右移動一屏
            TABforward-button縮進C-yyank粘貼
            C-zsuspend-frame暫停emacsC-nnext-line移動到下一行
            C-kkill-line刪除一行ESCESC-prefix取消前綴
            C-oopen-line增加一行DELdelete-backward-char向前刪除一個字符
            C-pprevious-line向上移動一行C-zsuspend-emacs暫停Emacs
            C-_undo取消C-lrecenter使光標所在行變?yōu)槠聊恢醒?/td>

            2.2 幫助

            表2是幫助指令列表。

            表2 幫助指令

            快捷鍵指令名稱用途快捷鍵指令名稱用途
            C-h wwhere-is查看命令菜單位置或者綁定熱鍵C-h kdescribe-key查看熱鍵詳細功能描述
            C-h thelp-with-tutorial查看Emacs教程C-h cdescribe-key-briefly查看熱鍵簡單功能描述
            C-h nview-emacs-news瀏覽Emacs新聞C-h bdescribe-bindings查看綁定熱鍵
            C-h mdescribe-mode查看編輯模式C-h C-c查看許可證信息
            C-h ?help-for-help查看幫助列表

            2.3 緩沖區(qū)操作

            表3是緩沖區(qū)操作指令列表。

            表3 緩沖區(qū)操作指令

            快捷鍵指令名稱用途快捷鍵指令名稱用途
            C-x C-dlist-directory列出當前目錄C-x =what-cursor-position顯示當前光標所在位置
            C-x C-ffind-file查找文件C-x TABindent-rigidly強制縮進
            C-x C-odelete-blank-lines刪除空白行C-x blist-buffers打開另外一個緩沖區(qū)
            C-x C-pmark-page全選C-x C-rfind-file-read-only以只讀方式打開文件
            C-x C-ssave-buffer保存當前緩沖區(qū)C-x iinsert-file插入文件
            C-x C-ttranspose-lines掉換前后行位置C-x hmark-whole-buffer標記當前全部緩沖區(qū)
            C-x C-vfind-alternate-file打開另外一個文件,關閉緩沖區(qū)C-x lcount-lines-page計算當前緩沖區(qū)行數
            C-x C-wwrite-file保存緩沖區(qū)內容到文件C-x kkill-buffer關閉緩沖區(qū)
            C-x mmail寫EmailC-x 4 mmail-other-window打開新窗口寫Email
            C-x ssave-some-buffers保存多個文件C-x uadvertised-undo取消上一步操作

            2.4 宏操作

            表4是宏操作指令列表。

            表4 宏操作指令

            快捷鍵指令名稱用途快捷鍵指令名稱用途
            C-x (start-kbd-macro開始錄制宏C-x )end-kbd-macro結束宏錄制
            C-x ecall-last-kbd-macro執(zhí)行上一次綁定的宏命令

            2.5 窗口操作

            表5是窗口操作指令列表。

            表5 窗口操作指令

            快捷鍵指令名稱用途快捷鍵指令名稱用途
            C-x 0delete-window關閉當前窗口C-x 1delete-other-windows保留當前窗口,關閉其他窗口
            C-x 2split-window-vertically水平分割窗口C-x 3split-window-horizontally垂直分割窗口

            2.6 C語言編程模式

            表6是C語言編程模式的指令列表。

            表6 C語言編程模式指令

            快捷鍵指令名稱用途快捷鍵指令名稱用途
            M-abackward-sentence移動到語句開頭M-eforward-sentence移動到語句結尾
            C-M-abeginning-of-defun移動到函數開頭C-M-eend-of-defun移動到函數結尾

            2.7 SGML語言編程模式

            表7是SGML語言編程模式指令列表。

            表7 SGML語言編程模式指令

            快捷鍵指令名稱用途快捷鍵指令名稱用途
            C-c C-tsgml-tag插入標記C-c C-asgml-attributes插入屬性
            C-c C-bsgml-skip-tag-backward移動到前一個標記C-c C-fsgml-skip-tag-forward移動到后一個標記
            C-c DELsgml-delete-tag刪除一個標記

            2.8 版本控制命令

            表8是版本控制指令列表。

            表8 版本控制指令

            快捷鍵指令名稱用途快捷鍵指令名稱用途
            C-x v dvc-directory列出目錄下修改過的文件C-x v =vc-diff顯示改動
            C-x v lvc-print-log顯示改動歷史記錄C-x v ivc-register加入文件到版本控制中
            C-x v hvc-insert-headers插入版本控制信息C-x v rvc-retrieve-snapshot取某一版本文件
            C-x v vvc-next-action進入提交改動狀態(tài)

            3 GNU Emacs擴展

            3.1 Emacs Lisp語言介紹

            3.2 有用的GNU Emacs擴展

            3.3 寫一個GNU Emacs擴展

            這里我們自己動手寫一個GNU Emacs擴展,實現(xiàn)復制一行的功能。下面是實現(xiàn)這個擴展的代碼。

            (defun copy-line (&optional arg)
             "Save current line into Kill-Ring without mark the line"
             (interactive "P")
             (let ((beg (line-beginning-position)) 
            	(end (line-end-position arg)))
             (copy-region-as-kill beg end))
            )
            			  
            將上面這段代碼拷貝到.emacs中,就可以開始使用這個功能了。

            4 .emacs文件

            4.1 樣例

            ;;顯示時間
            (display-time)
            ;;顯示行號
            (column-number-mode t)
            (show-paren-mode t)
            ;;設置TAB寬度為4
            (setq default-tab-width 4) 
            ;;以下設置縮進 
            (setq c-indent-level 4)
            (setq c-continued-statement-offset 4)
            (setq c-brace-offset -4)
            (setq c-argdecl-indent 4)
            (setq c-label-offset -4)
            (setq c-basic-offset 4)
            (global-set-key "\C-m" 'reindent-then-newline-and-indent)
            (setq indent-tabs-mode nil)
            (setq standard-indent 4)
            
            ;;開啟語法高亮。
            (global-font-lock-mode 1) 
            
            ;;設置默認工作目錄
            (setq default-directory "/home/test/source/") 
            
            ;; 去掉滾動條
            (set-scroll-bar-mode nil)
            
            ;;關閉開啟畫面
            (setq inhibit-startup-message t) 
            (setq indent-tabs-mode t)
            
            ;;不產生備份文件
            (setq make-backup-files nil) 
            
            ;;設置自定義變量
            (custom-set-variables
            '(column-number-mode t)
            '(current-language-environment "UTF-8")
            '(display-time-mode t)
            '(ecb-options-version "2.32")
            '(mouse-1-click-in-non-selected-windows t)
            '(mouse-drag-copy-region t)
            '(mouse-yank-at-point t)
            '(save-place t nil (saveplace))
            '(show-paren-mode t)
            '(transient-mark-mode t))
            (custom-set-faces
            ;;選擇小工具欄圖標
            (tool-bar-mode -1)
            				

            5 總結

            6 參考資料

            posted on 2010-11-03 21:01 Fucker 閱讀(844) 評論(0)  編輯 收藏 引用
             
            Copyright © Fucker Powered by: 博客園 模板提供:滬江博客
            欧美久久精品一级c片片| 久久精品极品盛宴观看| 99热精品久久只有精品| 久久精品中文字幕一区| 午夜天堂精品久久久久| 久久精品中文字幕久久| 亚洲国产成人精品女人久久久| 久久亚洲中文字幕精品有坂深雪| 青青草原1769久久免费播放| 热99RE久久精品这里都是精品免费 | 秋霞久久国产精品电影院| 久久中文字幕人妻丝袜| 国产亚洲精久久久久久无码AV| 亚洲国产精品久久电影欧美| 99久久精品免费| 99久久99这里只有免费的精品| 亚洲欧美国产精品专区久久| 色综合久久天天综合| 久久久久AV综合网成人| 精品国产99久久久久久麻豆 | 99精品久久精品一区二区| 国产农村妇女毛片精品久久| 婷婷伊人久久大香线蕉AV | 伊人久久大香线蕉亚洲五月天| 久久亚洲中文字幕精品一区四| 成人免费网站久久久| 少妇内射兰兰久久| 久久精品国产久精国产一老狼| 无码任你躁久久久久久久| 久久久人妻精品无码一区| 99国内精品久久久久久久| 欧美亚洲另类久久综合| 久久成人国产精品二三区| 97超级碰碰碰久久久久| 99麻豆久久久国产精品免费 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 精品久久久久久国产牛牛app | 久久人人爽人人爽人人AV| 亚洲午夜久久久影院| 精品久久人妻av中文字幕| 久久国产欧美日韩精品|