日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

emacs 入门教程,菜单汉化,配置文件等杂乱文章

發布時間:2023/11/29 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 emacs 入门教程,菜单汉化,配置文件等杂乱文章 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先來一發ArchWiki的Emacs簡體中文的入門教程

https://wiki.archlinux.org/index.php/Emacs_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)


怎樣設置,Emacs中文菜單?

把包內的3個文件丟到 emacs/share/emacs/site-lisp下面。
在~/ 建一個 .emacs的文件,在里面添加一下內容,次序據說是不能顛倒:
(require 'english-menu)
(require 'chinese-menu)
(require 'mule-menu)

來源:http://forum.ubuntu.org.cn/viewtopic.php?t=193161
文件注釋:?X window下emacs的菜單漢化 。
作者是:葉文彬。

?chinese_emacs_menu.tar.gz?[49.09 KiB]?

漢化方案2:

https://sourceforge.net/projects/emacslocale/files/ 下下載相應的emacs漢化包文件

按照對應的版本,把本漢化包下的 emacs-xx.x 目錄整個復制到原 Emacs 目錄,合并到原來的文件夾即可,不需要額外調整注冊表內容
* 先發布 23.1 - 24.2 for Windows 漢化包, for Linux 還需進一步調試和細節調整,稍后發布;
* 已編寫翻譯開發包模板,軟件包暫定名為: emacs-locale-dev.deb, 可以參照模板進行其它語言,
如繁體中文,法語,德語等的翻譯。調試完成后稍后一并發布;
* 已編寫 man 手冊,用于指導 emacs-locale 的翻譯注意事項。用法:
man emacs-transor?
稍后會包含在 emacs-locale-dev.deb 中;
* 基于翻譯原始版本進行的腳本翻譯,各版本譯詞統一;
* 相對之前發布的漢化包,結構進行了優化;
* 默認設置能完美支持gb2312/gbk/gb18030 (Emacs 22.3 及更早的版本,因自身原因,無法直接支持gb18030);

來源論壇:http://forum.ubuntu.org.cn/viewtopic.php?t=212467&f=17#p2743210


Emacs的個人配置文件:(與vim和sublime一樣,Emacs是一款自由的可個人定制的編輯器)

http://emacser.com/dea.htm 來源Emacs中文網。


Emacs中的Color Theme以及字體設置

參考:http://www.cnblogs.com/Jerry-Chou/archive/2011/02/21/1960011.html


windows下配置gcc/g++/gdb +?emacs編譯環境只需兩三步

步一、下載以下安裝包并安裝

1、mingw-get-inst在線安裝包下載地址:http://sourceforge.net/projects/mingw/files/

2、emacs安裝包下載地址:http://www.gnu.org/software/emacs/

步二、設置環境變量

鼠標右鍵點擊“我的電腦” -> 點擊"屬性" -> 選擇"高級"選項卡 -> 點擊"環境變量按鈕" ->設置系統環境下變量名path的變量值 如下圖


在變量值輸入框里分別加入以下目錄路徑

1、emacs安裝目錄下的bin文件夾路徑?

2、mingw安裝目錄下的bin文件夾路徑

注意:兩個路徑之間要以分號隔開,如:D:\work\tools\emacs-23.2\bin;D:\work\tools\MinGW\bin

設置成功后就可以使用emacs或dos下使用放在bin文件夾里的gcc/g++/gdb等工具了



emacs 快捷鍵(包括C/C++模式)

符號

??????C-? 意思是按住 Ctrol 鍵
M-?? 意指 Meta 鍵 (鍵盤上若無Meta?鍵,則可以ALT?ESC?鍵來取而代之)
DEL? 意指退格鍵 (不是?刪除(Delete) key)
RET? 意指回車鍵
SPC? 意指空格鍵
ESC? 意指Escape鍵
TAB? 意指Tab鍵

像 "C-M-" (or "M-C") 這樣連在一起的意味著同時按住 Control 和 Meta 鍵不放.
用方向鍵
?? C-p 、 C-b 、 C-f 和 C-n 這四個命令。它們的功能和方向鍵是一樣的,如下圖所示:

??????????? 上一行 C-p (Prev line)
????????????????????????? .
????????????????????????? .
?????????????? ? ???????? .??????????????????????????????
? 向左移 C-b .... 。.... 向右移 C-f (Forward? character)
?(Backward )???? .?
????????????????????????? .
???????????? ???????????? .
????????????? 下一行 C-n (Next line)

“P N B F”四個字母分別代表了四個詞,用這四個詞記憶這些組合鍵會更容易:
P 代表 previous(上一行),
N 代表 next(下一行),
B 代表 backward(回
退),
F 則代表 forward(前進)

進入Emacs
要進入GNU Emacs,只需鍵入它的名字???????????? emacs
離開Emacs
掛起Emacs:??????????????????????????????????? C-z
永久離開Emacs????????????????????????????????? C-x C-c

文件
讀取文件到Emacs??????????????????????????????? C-x C-f
保存文件到磁盤????????????????????????????????? C-x C-s
保存所有文件??????????????????????????????????? C-x s
插入其它文件的內容到當前緩沖??????????????????? C-x i
用將要讀取的文件替換當前文件??????????????????? C-x C-v
將當前緩沖寫入指定的文件??????????????????????? C-x C-w
Version control checkin/checkout???????????????????? C-x C-q

取得幫助
進入幫助系統很簡單,只需要輸入C-h(或F1)并跟隨要獲取幫助的對象,初次使用Emacs的用戶可以輸入C-h t進入使用手冊
離開幫助窗口??????????????????????????????????? C-x 1
滾動幫助窗口??????????????????????????????????? C-M-v
匹配:顯示與字符a串匹配的命令?????????????????? C-h a
顯示一個鍵的功能??????????????????????????????? C-h c
詳細描述一個功能??????????????????????????????? C-h f
取得詳細模式的信息????????????????????????????? C-h m

錯誤恢復
取消當前要執行的命令??????????????????????????? C-g
恢復系統崩潰后丟失的文件??????????????????????? M-x recover-file
撤銷更新??????????????????????????????????????? C-x u或C-_
使緩沖回復到初始內容??????????????????????????? M-x revert-buffer
Redraw garbaged scree?? n???????????????????????? C-l

增量查找(Incremental Search)
向前查找??????????????????????????????????????? C-s
向后查找??????????????????????????????????????? C-r
規則表達式查找????????????????????????????????? C-M-s
反向規則表達式查找????????????????????????????? C-M-r
選擇前一個查找字符串??????????????????????????? M-p
選擇下一個查找字符串??????????????????????????? M-n
退出增量查找??????????????????????????????????? RET
取消上一個字符的作用??????????????????????????? DEL(Backspace)
退出當前查找模式??????????????????????????????? C-g
在查找的過程中可重復使用C-s和C-r來改變查找方向

移動(Motion)
向前一個字符??????????????????????????????????? C-f
向后一個字符??????????????????????????????????? C-b
向前一個字????????????????????????????????????? M-f
向后一個字????????????????????????????????????? M-b
向上一行??????????????????????????????????????? C-p
向下一行??????????????????????????????????????? C-n
到行首????????????????????????????????????????? C-a
到行尾????????????????????????????????????????? C-e
到句首????????????????????????????????????????? M-a
到句尾????????????????????????????????????????? M-e
到段首????????????????????????????????????????? M-{
到段尾????????????????????????????????????????? M-}
到頁首????????????????????????????????????????? C-x [
到頁尾????????????????????????????????????????? C-x ]
到表達式首部??????????????????????????????????? C-M-f
到表達式尾部??????????????????????????????????? C-M-b
到函數首部????????????????????????????????????? C-M-a
到函數尾部????????????????????????????????????? C-M-e
到緩沖首部????????????????????????????????????? M-<
到緩沖尾部????????????????????????????????????? M->
滾動到下一屏??????????????????????????????????? C-v
滾動到上一屏??????????????????????????????????? M-v
滾動到右邊一屏(內容向左移動)????????????????? C-x <
滾動到左邊一屏(內容向右移動)????????????????? C-x >
滾動當前行到屏幕中央??????????????????????????? C-u C-l

Killing和Deleting
向前delete字符????????????????????????????????? C-d
向后delete字符????????????????????????????????? DEL(Backspace)
向前delete到字首??????????????????????????????? M-d
向后delete到字尾??????????????????????????????? M-DEL(Backspace)
向前delete到行首??????????????????????????????? M-0 C-k
向后delete到行尾??????????????????????????????? C-k
向前delete到句首??????????????????????????????? C-x DEL(Backspace)
向后delete到句尾??????????????????????????????? M-k
向前delete到表達式首部????????????????????????? M-- C-M-k
向后delete到表達式尾部????????????????????????? C-M-k
Kill區域??????????????????????????????????????? C-w
拷貝區域到Kill Ring????????????????????????????? M-w
Kill到下一個給定字符出現的位置????????????????? M-z <char>
拉回(yank)上次kill的內容????????????????????? C-y
用更早kill的內容取代拉回的上次kill的內容??????? M-y

標記(Marking)
標記當前位置??????????????????????????????????? C-SPC或C-@
以字符為單位使用移動命令動態標記區域??????????? C-x C-x
以字為單位使用移動命令動態標記區域????????????? M-@
標記一段??????????????????????????????????????? M-h
標記一頁??????????????????????????????????????? C-x C-p
標記一個表達式????????????????????????????????? C-M-@
標記一個函數??????????????????????????????????? C-M-h
標記整個緩沖區????????????????????????????????? C-x h

Query Replace
交互式地替換一個文本串????????????????????????? M-%
交互式地替換一個規則表達式????????????????????? M-x query-replace-regexp
替換當前的并移動到下一處??????????????????????? SPE
替換當前的但不移動到下一處????????????????????? ,
不替換當前的并移動到下一處????????????????????? L(Backspace)
替換所有剩下的符合條件的文本??????????????????? !
退出替換模式??????????????????????????????????? RET
進入遞歸的編輯模式????????????????????????????? C-r
退出遞歸的編輯模式????????????????????????????? C-M-c

多窗口(Multiple Windows)
(When two commands are shown,the second is for “other frame”)
刪除所有其它窗口??????????????????????????????? C-x 1
上下分割當前窗口??????????????????????????????? C-x 2 C-x 5 2
左右分割當前窗口??????????????????????????????? C-x 3
刪除當前窗口??????????????????????????????????? C-x 0 C-x 5 0
滾動其它窗口??????????????????????????????????? C-M-v
切換光標到另一個窗口??????????????????????????? C-x o
選擇另一個窗口中的緩沖????????????????????????? C-x 4 b C-x 5 b
顯示另一個窗口中的緩沖????????????????????????? C-x 4 C-o C-x 5 C-o
在另一窗口中查找并打開文件????????????????????? C-x 4 f C-x 5 f
在另一窗口中以只讀方式打開文件????????????????? C-x 4 r C-x 5 r
在另一窗口中運行dired命令?????????????????????? C-x 4 d C-x 5 d
在另一窗口中查找tag???????????????????????????? C-x 4 . C-x 5 .
增加窗口高度??????????????????????????????????? C-x ^
減小窗口寬度??????????????????????????????????? C-x {
增加窗口寬度??????????????????????????????????? C-x }
格式(Formatting)
縮進當前行(與模式相關)??????????????????????? TAB
縮進區域(與模式相關)????????????????????????? C-M-
縮進表達式(與模式相關)??????????????????????? C-M-q
Indent region rigidly arg. Columns??????????????????? C-x TAB
在光標后插入一個新的行????????????????????????? C-o
靜態地將一行下移??????????????????????????????? C-M-o
刪除光標附近的空行(留下一行)????????????????? C-x C-o
與上一行合并成一行????????????????????????????? M-^
刪除光標附近的所有空格????????????????????????? M-
刪除光標附近的空格(留下一格)????????????????? M-SPC
Fill paragraph???????????????????????????????????? M-q
Set fill column??????????????????????????????????? C-x f
設置每一行開始的前綴??????????????????????????? C-x .
設置字體??????????????????????????????????????? M-g

Case Change
將一個字設置為大寫????????????????????????????? M-u
將一個字設置為小寫????????????????????????????? M-l
將一個字首字母設置為大寫??????????????????????? M-c
將一個區域設置為大寫??????????????????????????? C-x C-u
將一個區域設置為小寫??????????????????????????? C-x C-l

The Minibuffer
(the following keys are defined in the minibuffer)
最大程度地補全命令????????????????????????????? TAB
補全命令中的一個字????????????????????????????? SPC
完成并執行一個命令????????????????????????????? RET
列出命令所有可能的后續部分????????????????????? ?
列出在當前命令之前輸入的命令??????????????????? M-p
列出在當前命令之后輸入的命令??????????????????? M-n
用規則表達式在命令歷史記錄中向后搜尋??????????? M-r
用規則表達式在命令歷史記錄中向前搜尋??????????? M-s
重復執行上一條命令????????????????????????????? C-x ESC ESC

緩沖(Buffer)
選擇另一個緩沖????????????????????????????????? C-x b
列出所有的緩沖????????????????????????????????? C-x C-b
Kill一個緩沖???????????????????????????????????? C-x k

置換(Transposing)
字符置換??????????????????????????????????????? C-t
字置換????????????????????????????????????????? M-t
行置換????????????????????????????????????????? C-x C-t
表達式置換????????????????????????????????????? C-M-t

拼寫檢查(Spelling Check)
對當前的字進行拼寫檢查????????????????????????? M-$
檢查區域內所有的字????????????????????????????? M-x ispell-origin
檢查緩沖內所有的字????????????????????????????? M-x ispell-buffer

標記 (Tags)
查找標記??????????????????????????????????????? M-.
查找標記下一次出現的位置??????????????????????? C-u M-.
指定一個新的標記文件??????????????????????????? M-x visit-tags-table
Regexp search on all files in tabs table???????????????? M-x tags-search
在所有文件中執行查詢-替換?????????????????????? M-x tags-query-replace
繼續進行上一次標記查找或查詢-替換?????????????? M-,

Shells
執行一個shell命令?????????????????????????????? M-!
在一個區域上執行sheel命令?????????????????????? M-|
通過shell命令過濾區域?????????????????????????? C-u M-|
在窗口中啟動一個shell??????????????????????????? M-x shell

矩形(Rectangles)
拷貝一個矩形到寄存器??????????????????????????? C-x r r
Kill矩形???????????????????????????????????????? C-x r k
拉回矩形??????????????????????????????????????? C-x r y
打開一個矩形, 將文本移動至右邊????????????????? C-x r o
清空矩形??????????????????????????????????????? C-x r c
為矩形中每一行加上一個字符串前綴??????????????? C-x r t

規則表達式(Regular Expressions)
除換行符外的所有單個字符??????????????????????? .
零個或多個重復????????????????????????????????? *
一個以上的重復????????????????????????????????? +
零個或一個重復????????????????????????????????? ?
轉譯字符????????????????????????????????????????
選擇(or)????????????????????????????????????? |
分組??????????????????????????????????????????? (…)
與第n個組相同的文本??????????????????????????? n
At work break??????????????????????????????????? b
Not at work break???????????????????????????????? B

寄存器(Register)
存儲區域到寄存器??????????????????????????????? C-x r s
插入矩形內容到緩沖????????????????????????????? C-x r i
存儲光標位置到寄存器??????????????????????????? C-x r SPC <num>
跳躍到寄存器中存儲的光標位置??????????????????? C-x r j <num>

鍵盤宏(Keyboard Macros)
開始定義一個鍵盤宏????????????????????????????? C-x (
結束鍵盤宏的定義??????????????????????????????? C-x )
執行上一次定義的鍵盤宏????????????????????????? C-x e
追加到上一個鍵盤宏????????????????????????????? C-u C-x (
為上一個鍵盤宏命名????????????????????????????? M-x name-last-kbd-macro
在緩沖中插入Lisp??????????????????????????????? M-x insert-kbd-macro

Tags
??? Tags 是一個顯為人知的功能? 所以我想提一下. 這不是emacs發明的, 而是vi 原本的特異功能. emacs只是發揚光大而已.
? ? 假設你有一個目錄, 里面是一個程式的原始碼, 比如說, tin 的原始碼, 放在 ~/tin-1.3beta 下面. 你想看它們.
? ? 首先,?叫emacs cd到該目錄:  M-x cd
? ? 然后,?建立tag table. tag table 就是一張對照表, 記錄哪個符號(variable/function call) 對映到哪個檔案的哪個地方. 有這張表, emacs可以讓我們快速的在程式碼內游走. 一般這張表是一個檔案, 叫作TAGS (大寫)
  M-! etags *.c
? ? ?M-! 是執行external shell command的意思. etags就是emacs的建表程式. 你只要告訴它你的source code在那里即可.
? ? ?vi的話是使用ctags這個程式, 它建出來的檔名叫tags (小寫). 因為我們介紹emacs, 所以不管它.
? ? ?然 后, 怎么看程式? 你知道所有的C 程式都是由main()開始, 所以你想找到main()在哪個檔案. 這時只要按 M-. 然后emacs會問你tag table在哪里. 因為我們已經cd到該目錄, 直接按enter就好了. 然后輸入main, emacs就會把你帶到main(){ ... }去.
? ? ?如果 你看到某個程式片斷呼叫一個你沒看過的函式, 你可以把游標移到該函式的名字上, M-. ENTER 就搞定了.
? ? ?如果 emacs找錯了 (比如有變數和函式同名, emacs跳到變數去), 那你可以用 C-u M-. 找下一個.
? ? ?在編輯程式碼的時候, M-SPC 很有用, 它會把游標附近的空白縮成一個. 在其它地方也有效.

拼寫檢查

當然只是針對英文。
Ispell
選中一塊區域,或者對整個編輯緩沖區進行拼寫檢查: M-x ispell-buffer RET, 這時會打開ispell緩沖區,C-h可以查看一些拼寫檢查的幫助信息。
檢查單詞。在一個單詞上執行M-$,會對這個單詞進行拼寫檢查。
單詞拼寫補全。在一個未拼完的單詞后執行ESC TAB(M-TAB)。
只要啟用過Ispell, 他就將一直在后臺運行。M-x ispell-kill-ispell,可以殺死這個進程。
感覺很好用。

flyspell

一個擴展,可以在編輯的時候直接進行拼寫檢查,也就是spell-check on the fly。它也是利用Ispell。
M-x flyspell-mode RET
Tips
改變buffer的只讀屬性
M-x toggle-read-only
在C模式下輸入tab
C-q TAB : 對TAB不做解釋,直接輸


C和C++模式

===指定為C++模式的方法===

一般根據擴展名自動設定,不用指定,不過有時候若希望.h文件是C++模式的(缺省是C模式),在文件第一行(或其末尾)上加入

<span style="font-size:12px;">// -*- C++ -*- </span>

===語法高亮===

不是C模式專有,M-x global-font-lock-mode RET 或在.emacs中加入(global-font-lock-mode t)。

===子模式===

auto-state 輸入時自動縮進,自動換行

hungry-state Backspace時,自動刪除盡可能多的空白和空行

C-c C-t 同時轉換(開/關)auto-state和hungry-state子模式

C-c C-a 轉換 auto-state 子模式

C-c C-d 轉換 hungry-state 子模式

===編輯命令===

C-c . 設置縮進風格(按TAB鍵可列出可用的風格,缺省的為gnu,其縮進為2個字符;linux為8個;k&r為5個,java為4個)

TAB 重新縮進當前行

M-/ 自動補齊(緩沖區中能找得到的串)

M-; 行尾加入注釋

C-c C-e 擴展宏

C-c C-c 注釋掉整個區域

C-u C-c C-c 取消注釋

C-c C-/ 將區域中的每一行結尾都加入一個'/'字符

M-x c-beginning-of-defun
M-x c-end-of-defun? 跳到函數的開頭或結尾

C-c C-u ?? 跳轉到前面的一個#ifdef?

C-c C-p

C-c C-n ? 跳轉到宏的開頭或結尾

C-M-h ? 選中整個函數區域

C-c C-/?? 在所選區域的每一行后面添加" / "

C-M-p ? 跳轉到}或)匹配的括號

C-M-n ? 跳轉到(或{匹配的括號

M-x auto-insert 自動添加

?? #ifndef TEST_H
?? #define TEST_H
?? #endif

M-@? 把光標移動到單詞開頭,選中整個單詞區域

C-M-h? 選中當前行

C-u, C-@?? 回到上次標簽的位置

===編譯和調試===

M-x compile RET 編譯

M-x gdb RET 調試

C-x ` (出錯信息中)下一個錯誤,一個窗口顯示錯誤信息,另一個顯示源碼的出錯位置

C-c C-c 轉到出錯位置

啟動gdb調試器后,光標在源碼文件緩沖區中時:

C-x SPC 在當前行設置斷點

C-x C-a C-s step

C-x C-a C-n next

C-x C-a C-t tbreak

C-x C-a C-r continue

Dired模式

參考文檔

常用命令:

m : mark

u : unmark

d : mark delete

D : 立即刪除

x : 執行刪除

g : refresh

C : copy

R : move

+ : 創建目錄

Hideshow minor mode

編程時可以隱藏函數的實現。M-x hs-minor-mode

(setq hs-minor-mode-prefix [(contrl o)]) 可以改變復雜的命令前綴.

用法:

`C-c @ C-h' : Hide the current block (`hs-hide-block').

`C-c @ C-s' : Show the current block (`hs-show-block').

`C-c @ C-c' : Either hide or show the current block (`hs-toggle-hiding')

`C-c @ C-M-h' : Hide all top-level blocks (`hs-hide-all').

`C-c @ C-M-s' : Show everything in the buffer (`hs-show-all').

十六進制模式

查看文本的十六進制編碼

M-x hexl-mode


轉載于:https://www.cnblogs.com/tham/p/6827131.html

總結

以上是生活随笔為你收集整理的emacs 入门教程,菜单汉化,配置文件等杂乱文章的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。