org-mode入門教程

org-mode 入門教程
By Z.H. Fu

?

切問錄?www.fuzihao.org

org-mode 入門教程

  org-mode是Emacs提供的一個強大的編輯模式,可以用于做會議筆記以及制作各種待辦事項(GDT)。其語法類似于Markdown但是提供了比Markdown更多的操作,再加上Emacs強大的編輯功能,能給筆記增加很多動態的操作(能純文本上實現折疊、展開、樹狀視圖、表格求和、求代碼運行結果等功能),可以說org-mode是最強大的標記語言。而org-mode的強大,也導致了他比markdown更加復雜,需要花些時間來練習,本文選出了org-mode最強大、實用的功能,進行最簡單的介紹,下面介紹org-mode的使用方法。

org-mode的logo

安裝

  Emacs最新版本(24.4)自帶org-mode,這就意味著只要打開一個后綴名為org的文件就會自動進入org-mode。因此我們只需要下載最新版的Emacs即可。
  
windows用戶:到http://ftp.gnu.org/gnu/emacs/windows/?下載最新版
ubuntu系列:在終端中輸入:sudo apt-get install emacs

配置

  org-mode功能基本比較完善,不需要更多的配置,但是org模式下默認沒有自動換行的功能,我們在.emacs文件里面添加如下代碼,實現自動換行:

(add-hook 'org-mode-hook (lambda () (setq truncate-lines nil))) 

  

實例教程

  以下分別講解org-mode下幾個實用的功能,更完整的教程可以參考官網教程。下面一步一步完成我們的org文件。(本教程中我們定義?C-x?表示按Ctrl+x,M+x標識Alt+x,S+x代表Shift+x,這也是Emacs的標準定義)

新建文件

1) 打開Emacs
2) 輸入?C-x C-f ~/test/test.org

?

注意文件后綴名為org,該命令新建了一個名為test.org的文件。

新建完文件后,我們就可以輸入相應的內容了。以下是org-mode語法的具體介紹。

章節

  org-mode用*?標識章節,一個*?代表一級標題,兩個*?代表兩級標題,以此類推。

  在Emacs中輸入以下內容:

* 標題一
** 標題二

  注意型號后面有空格。可以發現,不同層級標題的顏色是不一樣的。按Alt加左右鍵能夠升降標題的層級。一些常用快捷鍵如下:

  • S+Tab?展開、折疊所有章節
  • Tab?對光標所在章節進行展開、折疊
  • M+left/right?升級/降級標題

列表

  列表是文本中一個比較常用的元素,可以列出各種待完成的事項等。org-mode提供了一種很獨特的功能,可以加入checkbok(實際就是加入一對中間有空格的方括號[ ])標記任務的完成狀況,而且如果一個總任務有多個子任務,還可以根據子任務的完成情況計算總進度(只需要在總任務后面添加一對方括號,里面加上%/?如[%],[/])。列表分為有序和無序兩種,有序列表以1.或?1)開頭,無序列表以+-開頭 后面,同樣,后面要跟一個空格。
  
  我們輸入一個無序列表:

+ treeroot  + branch1+ branch2

  在輸入的時候,我們按M-RET(Alt+回車)可以自動輸入同級的條目,按M+left/right調整層級。同理,我們還可以輸入一個有序列表:

1) [-] 任務1 [33%]1) [ ] 子任務1 2) [X] 子任務2 3) [ ] 子任務3 2) [ ] 任務2 

  我們按M-S-RET?可以輸入一個帶checkbox的列表項,而在總任務后面可以輸入一個[%]或者[/]則能自動計算總任務進度。最后結果如圖所示。

orgmode5.png

  
常用快捷鍵:

  • M-RET?插入同級列表項
  • M-S-RET?插入有 checkbox的同級列表項
  • C-c C-c?改變 checkbox狀態
  • M-left/right?改變列表項層級關系
  • M-up/dowm?上下移動列表項

腳注

  用[fn:1]的方式插入腳注,而在最下面插入 

[fn:1]本文參考自http://orgmode.org/orgguide.pdf

這個標簽是可以點擊的。

表格

  表格常用于數據展示,org-mode提供了方便的列表操作。其中最獨特的是支持類似于Excel的表格函數,可以完成簡單的求和等操作
創建表格時,在新建表格時,首先輸入表頭:

input | Name  |  Phone | sub1 | sub2 | total | |- 

然后在第二行后面按 tab,表格就會自動生成:

| Name    |  Phone | sub1 | sub2 | total | |---------+--------+------+------+-------| | | | | | | 

下面我們填入一些數據,在填寫的過程中,按Tab鍵可以調到右方表格,按Enter則能跳到下方表格。如果同時按住Shift,則是反方向跳。輸入表格完成后,按?C-c C-c則能自動對齊表格,出入完成對齊后,表格如下:

| Name        |  Phone | sub1 | sub2 | total | |-------------+--------+------+------+-------| | maple | 134... | 89 | 98 | | | wizard | 152... | 78 | 65 | | | Hello World | 123... | 76 | 87 | | | hehe | 157... | 87 | 78 | | 

下面我們來體驗下org-mode的強大的表格函數。我們在total列任選一個位置,輸入=$3+$4?,然后按C-u C-c C-c?,org-mode便能自動為我們計算所有三列加四列的和,并放到第五列。最后完成的表格如下

| Name        |  Phone | sub1 | sub2 | total | |-------------+--------+------+------+-------| | maple | 134... | 89 | 98 | 187 | | wizard | 152... | 78 | 65 | 143 | | Hello World | 123... | 76 | 87 | 163 | | hehe | 157... | 87 | 78 | 165 | # +TBLFM: $5=$3+$4 
orgmode4.png

  如果要插入行和列,可在表頭添加一個標簽或者新起一行,輸入|再調整格式即可。其中最后一行是ogr-mode自動添加的。一些快捷鍵如下:

  • C-c |?通過輸入大小的方式插入表格
  • C-c C-c?對齊表格
  • Tab?調到右邊一個表格
  • enter?跳到下方的表格
  • M-up/right/left/right?上下左右移動行(列)
  • M-S-up/right/left/right?向上下左右插入行(列)

鏈接

  鏈接用于鏈接一些資源地址,如圖片、文件、URL等。
鏈接的格式是:

[[鏈接地址][鏈接內容]]

如:

[[http://orgmode.org/orgguide.pdf][grgguid.pdf]]] 
[[file:/home/maple/圖片/test.jpg][a picture]]

如果去掉標簽,則能直接顯示圖片:

[[file:/home/maple/圖片/test.jpg]]

  直接顯示的圖片在Emacs里默認不顯示,需按C-c C-x C-v才能顯示,在輸出成其他格式(html、pdf……)后也能看到。
  
常用快捷鍵:

  • C-c C-x C-v?直接預覽圖片。

待辦事項(TODO )

  TODO是org-mode最具特色的一個功能,也是org-mode設計的初衷,org-mode的作者本意是用其來完成一個個人時間管理程序(GDT)。因此,可以用org-mode來做一個個人時間管理工具!
  下面我們來看怎么寫TODO。TODO 也是一類標題,因此也需要用*開頭,在Emacs中輸入:

** TODO 洗衣服

可以看到當中的TODO變成了紅色,我們講光標移到該行,按C-c C-t,則發現TODO變成了DONE(這個序列可以自己定義,詳見org-mode手冊)。org-mode兼有了標題和列表的功能,也可以添加checkbox和完成進度,除此之外,還可以設計優先級。
我們輸入:

*** TODO [# A] 任務1
*** TODO [# B] 任務2 *** TODO 總任務 [33%] **** TODO 子任務1 **** TODO 子任務2 [0%] - [-] subsub1 [1/2] - [ ] subsub2 - [X] subsub3 **** DONE 一個已完成的任務 

一些常用操作如下:

  • C-c C-t?變換TODO的狀態
  • C-c / t以樹的形式展示所有的 TODO
  • C-c C-c?改變 checkbox狀態
  • C-c, 設置優先級(方括號里的ABC)
  • M-S-RET?插入同級TODO標簽

標簽Tags

在org-mode中,可以給每一章節添加一個標簽,我們可以通過樹的結構來查看所有帶標簽的章節。在每一節中,子標題的標簽會繼承父標題標簽。
輸入:

*** 章標題      :work:learn:
**** 節標題1 :fly:plane: **** 節標題2 :car:run: 

一些常用命令如下:

  • C-c C-q?為標題添加標簽
  • C-c / m?生成帶標簽的樹

時間

org-mode可以利用Emacs的時間空間插入當前時間。
輸入C-c .?會出現一個日歷,我們點選相應的時間即可插入。

<2015-02-17 二>

時間前可以加DEADLINE:和SCHEDULED:表示時間的類型如:

DEADLINE:<2015-02-12 四>

下面給出一個常見的TODO標簽的模板:

*** TODO     洗衣服
SCHEDULED: <2015-02-19 四>
DEADLINE: <2015-03-01 日> 

常用命令如下:

  • C-c .插入時間

一些特殊文本格式

和其他標記語言一樣,org-mode也支持各種特殊文本格式(如斜體、下劃線等)。如下所示:

*bold*
/italic/
_underlined_
=code=
~verbatim~
+strike-through+ 

富文本導出

org-mode的強大之處還在于它能到出成各種不同的格式,例如html、pdf等,在導出時,可以加入一些說明符號,來制定導出選項,常用導出符號如下:

設置標題和目錄:

# +TITLE: This is the title of the document
# +OPTIONS: toc:2 (only to two levels in TOC)
# +OPTIONS: toc:nil (no TOC at all)

添加引用:

# +BEGIN_QUOTE
Everything should be made as simple as possible,
but not any simpler -- Albert Einstein # +END_QUOTE 

設置居中:

# +BEGIN_CENTEREverything should be made as simple as possible,but not any simpler # +END_CENTER 

設置樣例(在這里面的內容將會被直接輸出,不會被轉義)

# +BEGIN_EXAMPLE
這里面的字符不會被轉義
# +END_EXAMPLE

注釋,這些內容不會被導出

注釋的用法#  this is comment# +BEGIN_COMMENT
這里的注釋不會被導出
# +END_COMMENT

Latex使用,org-mode能支持直接輸入LaTeX,在導出后LaTeX能被正確解釋:

?2x=Ωalogbni=1aidΩ?2x=∫Ωalog?b∑i=1naidΩ

插入源代碼

org-mode除了可以直接插入源代碼之外,可以直接求出運行結果,這也是其強大之處,在使用之前,需要在.emacs配置文件中設置加載的運行語言:

(org-babel-do-load-languages'org-babel-load-languages'((sh . t) (python . t) (R . t) (ruby . t) (ditaa . t) (dot . t) (octave . t) (sqlite . t) (perl . t) (C . t) )) 

設置好之后輸入:

# +BEGIN_SRC emacs-lisp
(+ 1 2 3 4) # +END_SRC 

將光標移到代碼塊內,按C-c C-c,org-mode會自動添加如下一行:

# +RESULTS:
: 10

這正是該代碼的計算結果。下面試一試Python代碼:

# +BEGIN_SRC python :results output
a = 1+1
print a
# +END_SRC# +RESULTS: : 2 

下面測試一下C語言

# +begin_src C++ :includes <stdio.h> int a=1;int b=1; printf("%d\n", a+b); # +end_src # +RESULTS: : 2 

常用快捷鍵:

  • C-c C-c?對當前代碼塊求值

關于導出

org-mode導出pdf需要LaTeX支持,而導出html很方便,但是導出的html美柚任何樣式,org-mode為每個模塊都添加了css的標簽,我們可以將現成的css文件直接加入,便能得到一個好看的輸出樣式了:

在頭部加入

# +HTML_HEAD: <link rel="stylesheet" type="text/css" href="style1.css" /> 

該代碼加載我們的css。下面我們來將我們的文件導出成html。按C-c C-e會出現一個如圖的提示框,問我們導出那種格式,我們選h導出html。

orgmode6.png

常用快捷鍵:

  • C-c C-e?選擇相應的導出格式

結論

  org-mode是Emacs非常重要的一個模式,自其誕生之后,受到了各種Emacs粉絲的追捧,甚至在VIM上也衍生出了org-mode的分支,足見它的人氣。通過本教程介紹,我們已經見識到了org-mode 的強大功能,而這僅僅只是org-mode功能的一小部分,org-mode更多的功能等待這我們去探索、發現。更多文章請訪問切問錄http://www.fuzihao.org

附件

org文件tutorial.org
導出html文件tutorial.html?(直接點擊可以看到效果,點右鍵另存為即是編譯后的文件)

參考文獻

[1]org-mode 官方教程?http://orgmode.org/orgguide.pdf

?

?

from:?http://www.fuzihao.org/blog/2015/02/19/org-mode%E6%95%99%E7%A8%8B/

轉載于:https://www.cnblogs.com/GarfieldEr007/p/5588979.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457773.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457773.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457773.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ansible 配置文件優先級

優先級如下&#xff1a; 1.首先找執行ansible命令的當前目錄中&#xff0c;是否有 ansible.cfg文件 ./ansible.cfg 2.如果找不到&#xff0c;再 找 當前用戶的家目錄下是否有 .ansible.cfg ~/.ansible.cfg 3.如果還找不到,就找 /etc/ansible/ansible.cfg /etc/ansible/ansible.…

如何對web.config進行加密和解密

http://blog.csdn.net/jf_jifei/article/details/6527390 在WEB網站開發過程中&#xff0c;如果我們將數據庫連接字符串封裝到.DLL文件中&#xff0c;將會給數據庫和程序的遷移帶來麻煩&#xff0c;因為萬一服務器地址或者數據庫發生變更&#xff0c;那么我們就不得不修改源程序…

java 爬蟲_Java原生代碼實現爬蟲(爬取小說)

Java也能做爬蟲。現在提到爬蟲人第一個想到的就是python&#xff0c;其實使用Java編寫爬蟲也是很好的選擇&#xff0c;Java成熟的爬蟲框架很多&#xff0c;下面給大家展示一個使用Java基礎語言編寫的爬取小說的案例&#xff1a;實現功能&#xff1a;爬取目標網站全本小說代碼編…

JS window對象 Location對象 location用于獲取或設置窗體的URL,并且可以用于解析URL。 語法: location.[屬性|方法]...

Location對象 location用于獲取或設置窗體的URL&#xff0c;并且可以用于解析URL。 語法: location.[屬性|方法] location對象屬性圖示: location 對象屬性&#xff1a; location 對象方法: 任務 在右邊編輯器script標簽內&#xff0c;獲取當前顯示文檔的URL,并輸出。 <!DOC…

ansible inventory 主機清單配置

文章目錄 環境介紹 ansible ssh配置 操作測試/etc/hosts 配置Inventory文件 主機與組主機變量、組變量把一個組變成另一個組的子成員變量太多了&#xff0c;不好管理怎么辦&#xff1f;來&#xff0c;分文件定義主機變量和組變量 操作環境介紹 為了練習方便&#xff0c;本次使…

python(26)查看文件的大小

有時候&#xff0c;在寫文件的時候需要判斷文件的大小&#xff0c;或者刪除空的文件 import os from os.path import join, getsizedef getdirsize(dir):size 0Lfor root, dirs, files in os.walk(dir):print filesfor name in files:print nameprint join(root,name) #輸出文…

java 數據結構_Java版-數據結構-隊列(數組隊列)

前言看過筆者前兩篇介紹的 Java版數據結構 數組和 棧的盆友&#xff0c;都給予了筆者一致的好評&#xff0c;在這里筆者感謝大家的認可&#xff01;&#xff01;&#xff01;由于本章介紹的數據結構是 隊列&#xff0c;在隊列的實現上會基于前面寫的 動態數組來實現&#xff0c…

ssh 介紹 和使用 程序不掛起

目錄 SSH的安全機制 SSH的安裝 啟動服務器的SSH服務 SSH兩種級別的遠程登錄 SSH的高級應用 Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在應用層基礎上的安全網絡協議。它是專為遠程登錄會話(甚至可以用Windows遠程登錄Linux服務器進行…

corpus? academic writing

http://micusp.elicorpora.info/ http://corpus.byu.edu/coca/ http://rcpce.engl.polyu.edu.hk/RACorpus/轉載于:https://www.cnblogs.com/gisalameda/p/5590034.html

vim命令練習題。

練習題。1. vi 與 vim 有什么區別呢&#xff0c;它們之間有什么關系&#xff1f;答&#xff1a;vi 和vim最大的區別就是編輯一個文本時&#xff0c;vi不會顯示顏色&#xff0c;而vim會顯示顏色。顯示顏色更易于用戶進行編輯。vim的這些優勢主要體現在以下幾個方面&#xff1a;1…

java 四舍五入_Java常用類

每個人的心里&#xff0c;都藏著一個了不起的自己&#xff0c;只要你不頹廢&#xff0c;不消極&#xff0c;一直悄悄醞釀著樂觀&#xff0c;培養著豁達&#xff0c;堅持著善良&#xff0c;只要在路上&#xff0c;就沒有到達不了的遠方&#xff01;BigInteger在Java中&#xff0…

Sublime 插件- px 轉rem

一個CSS的px值轉rem值的Sublime Text 3自動完成插件。 插件效果如下&#xff1a; 安裝 克隆項目 https://github.com/hyb628/cssrem.git進入packages目錄&#xff1a;Sublime Text -> Preferences -> Browse Packages...復制下載的cssrem目錄到剛才的packges目錄里。重…

ansible 批量部署ssh免密鑰

1 創建ssh秘鑰 yum install epel-release -y yum install sshpass -y ssh-keygen -t rsa 2 批量復制秘鑰并授權 ansible web -m shell -a ‘mkdir ~/.ssh’ -k ansible web -m copy -a ‘src~/.ssh/id_rsa.pub dest~/.ssh/authorized_keys mode0600’ -k 3 測試 ssh 10.0.0.2…

window8下安裝RabbitMQ

2019獨角獸企業重金招聘Python工程師標準>>> 1.下載并安裝erlang&#xff0c;http://www.erlang.org/download.html。64位的下載的是otp_win64_19.1.exe 查看是否安裝成功&#xff1a; 2.下載RabbitMQ,最新版是2.8.1&#xff0c;http://www.rabbitmq.com/releases/r…

python如何避免轉義字符_如何解決因轉義字符而報錯的問題(在使用python導入文件時)...

有些萌新在初次使用python導入文件時&#xff0c;可能會遇到遇到各種各樣的報錯。今天我們就來講講其中最常見的一種報錯---轉義字符“\”沖突。問題重述&#xff1a;比如像下面這樣&#xff0c;當我們想導入一個常見的csv文件時&#xff0c;發現居然報了這樣一個錯誤&#xff…

同意條款按鈕可用

// 同意條款function isaccepted(){ if(document.getElementById("read").checkedtrue){ document.getElementById("submit").disabled false; $(#submit).css("background","#f25618"); }else{ document.getElementById("s…

Ansible執行過程分析、異步模式和速度優化

Ansible系列(七)&#xff1a;執行過程分析、異步模式和速度優化 分類: Linux服務篇 undefined 我寫了更完善的Ansible專欄文章&#xff1a;一步到位玩兒透Ansible Ansible系列文章&#xff1a;http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1.1 ansible執行過程分析 …

gdb 收到SIGPIPE信號

2019獨角獸企業重金招聘Python工程師標準>>> handle SIGPIPE noprint nostop 轉載于:https://my.oschina.net/u/1176097/blog/761957

列的數目比列的名字要多_你們要的甘特圖來啦!還有具體做法哦!

作為項目的負責人&#xff0c;“時間管理”也是極為重要的一環。甘特圖作為常用的項目管理工具之一&#xff0c;有助于把一個大型項目劃分為幾個小部分&#xff0c;并有條理地展示。甘特圖(Gantt chart)又稱為橫道圖、條狀圖(Bar chart)。以提出者亨利勞倫斯甘特(Henry Laurenc…

圖片處理拓展篇 : 圖片轉字符畫(ascii)

首先要明確思路, 圖片是由像素組成的, 不同的像素有不同的顏色(rgb), 那么既然我們要轉化為字符畫, 最直接的辦法就是利用字符串來替代像素, 也就是用不同的字符串來代表不同的像素. 另外圖片一般來講是彩色的, 而acsii(一般打印在終端上吧) 都是黑白的, 此時就要介紹另外一個概…