标签:des style blog http io ar os sp for
该文章同时发布在我的github blog上:http://cheukyin.github.io/jekyll/emacs/2014-08/org2jekyll.html
1 前言
在这个月之前,我一直都是Vimmer,可是VimScript语法令人无语的混乱和棉花般的软弱无力,让我苦恼不已,可是工作学习却对其颇多依赖,始终舍之不得。 然而,就在上个月,我无意瞥了一眼我那肿胀庞杂臭长不堪的.vimrc,一眼…便失去了维护的信心,放弃Vim,自然只能转投Emacs。 经过一个月的反复折腾和深入研究后,我越加感受到神之编辑器的神圣魅力。种种以前感受到却想不到、想得到而做不到的操作方式,一一呈现。
如此神器,有如神迹!
既然长缨在手,自然要将之发挥至极至。恰逢最近打算用Jekyll生成静态站点上传至Github上搭建博客,于是想到了Org-Mode。
ruby : version>=1.9.3
bundler : ruby的包管理器, gem install bundler
Jekyll : 在 site根目录 下添加文件 Gemfile ,并输入
source ‘https://rubygems.org‘
gem ‘github-pages‘
bundle install
Directory structure: /home/**/Repo_Dir ├── ...Other files in Repo ├── assets(D) │ ├── images(D) │ └── themes(D) ├── atom.xml ├── config.rb ├── _config.yml ├── _includes(D) │ ├── custom(D) │ ├── JB(D) │ └── themes(D) ├── index.html ├── _layouts(D) │ ├── default.html │ ├── page.html │ └── post.html ├── _org(D) │ ├── _drafts(D) │ ├── assets(D) │ └── _posts(D) ├── _plugins(D) ├── _posts(D) ├── robots.txt ├── rss.xml ├── _site(D) ├── sitemap.xml
(D) for Directory
_config.yml: 整个站点的配置文件,存放全局变量(如插件信息,CDN节点或者作者信息等),可通过 liquid 语言的site.XXX 访问。_layouts: 存放页面布局模板_posts: 存放用 markdown 写就的博文_org: 存放利用 org-mode 写就的文章,利用 emacs 生成md文件发布至 _posts 目录,稍后会详细介绍。_includes: 存放页面插件,所谓插件,就是某段可重用的HTML或JS代码(如主题模板,评论界面等),利用{% include **/** %} 可嵌入页面中_assets: 存放图片,主题CSS,JS等静态资源_plugins: 存放Jekyll插件,一般为Ruby脚本程序_index.html: 博客网站主页_site: 运行 jekyll build 生成的全部静态页面,最终产物Jekyll 就是一个利用模板化生成HTML的程序,本身没什么好研究的,最多就是了解一下 liquid 语言,因为当中的自动化工作都是通过 liquid 实现的。博客搭建剩余的就是常规的前端工作,因此写好 CSS 和 JS 才是王道。
在Github上申请一个名为 Username.github.io 的仓库,然后将博客站点目录上传。
然后访问 Username.github.io ,便可访问主页(首次上传需要等二十多分钟方能看到)。
注: Username 为你的 Github 帐户名
Baidu : 到 百度站长平台 登记,并申请 百度统计 ,按其要求安装代码,我的安装代码放在_include/custom/baidu-analytics ,并安装在 _include/theme/havee/default.html 底下本来 Jekyll 是利用 markdown 书写博客的,不过个人不太熟悉这种语言,而且其功能也过于简洁,不能适应技术博客各种特殊需要,因此我选择 Org-Mode 。
Org-Mode 是 Emacs 的一种编辑模式,有着各种各样强大到无法想像、令人感动到cry的功能,尤适于写文章和做笔记,总之就是 where miracle happens 啦。
以下讲解基于 Org-Mode 8.2 , 可以在 emacs 中 M-x org-version 检查版本, Ubuntu 可以通过 apt-get 更新Org-Mode 至最新版。
对于Jekyll而言,只能作用于 _post 目录中的 markdown 文件,若要用 Org-Mode ,需要将 org 文件转换成 html 文件。又因为md文件允许内嵌HTML,因此便可利用Org-Mode的HTML发布功能:
_org 目录,并在其下建三个子目录: _assest , _posts , _draftsorg-publish-project-alist 中的部份参数(将其中的目录改成你自己的)Emacs , M-x jekyll-draft-post ,按提示输入标题, Emacs 便会在 _org/_drafts 中新建该文件,在_org/_drafts 中编辑的文件不会被发布。M-x jekyll-publish-post ,Emacs便会将文章转移至 _org/_posts 中M-x org-publish ,选择 jekyll-cheukyin-github-io (取决于你配置中改的名字), Emacs 会将 _org/_posts中的所有 org 文件转换成 md 文件并存于 _posts 中,并把 _org/_assest 中图片等静态资源全部复制至 _assest 中Org-Mode 也算是一种标记语言,旨在分离文字的结构和表现,写作时只需把注意力放在内容上。它用一系列的标号来标识文字的分级等,至于每层文字的样式则交由 CSS 管理。
* ,有几个 * ,代表几级标题Enter ,发布时只有一个空格,按两次 Enter 才算重新开一段2014-08-04-ping-service.html 这篇文章,则这样写
@@html:<a href="{% post_url 2014-08-04-ping-service %}">@@Blog发送ping服务请求的Python实现@@html:</a>@@
<<anchor>>
[[anchor]]
* 间/ 间_ 间^ 或 _{} , {} 之间放文字,需要 M-x customize-variable ,将 org-use-sub-superscript 设成 {}~ 或两个 = 之间,发布成HTML时会转换成 <code></code>- 、 + 或者开头1. 或者 1) 开头::| ,然后输入表格第一行第一列的内容,再输入 || | <6> | | 1 | one | | 2 | two | | 3 | This=> | | 4 | four |
=$1*$2 。 $1 和 $2 表示第一列和第二列, C-u C-c C-c 强制org-mode 为整个表格进行计算,若只希望在某一特定项上进行计算,可在等号前再加一个 :C-q TABC-c C-l| S-TAB | 循环切换整个文档的大纲状态 |
| TAB | 循环切换光标所在的大纲状态 |
| C-c C-n/p | 移动到下上一个标题(不断标题是哪一级) |
| C-c C-f/b | 移动到同一级别的下/上标题 |
| C-c C-u | 跳到上一级标题 |
| C-c C-j | 切换到大纲预览状态 |
| M-RET | 插入一个同级别的标题 |
| M-S-RET | 插入一个同级别的TODO标题 |
| M-LEFT/RIGHT | 将当前标题升/降级 |
| M-S-LEFT/RIGHT | 将子树升/降级 |
| M-S-UP/DOWN | 将子树上/下移动 |
| C-c * | 将本行设为标题或者正文 |
| C-c C-w | 将子树或者区域移动到另一个标题处(跨缓冲区) |
| C-c C-x b | 在新缓冲区显示当前分支 |
| C-c / | 只列出包含搜索结果的大纲,并高亮,支持多种搜索方式 |
| - or + | 更改列表序号样式 |
| C-c 竖线 | 创建或者转化成表格 |
| C-c C-c | 调整表格,不移动光标,并计算公式 |
| TAB | 移动到下一区域,必要时新建一行 |
| S-TAB | 移动到上一区域 |
| RET | 移动到下一行,必要时新建一行 |
| M-LEFT/RIGHT | 移动列 |
| M-UP/DOWN | 移动行 |
| M-S-LEFT/RIGHT | 删除/插入列 |
| M-S-UP/DOWN | 删除/插入行 |
| C-c - | 添加水平分割线 |
| C-c RET | 添加水平分割线并跳到下一行 |
| C-c ^ | 根据当前列排序,可以选择排序方式 |
Babel ,即巴别塔,圣经所载,巴别塔若要完工,需各种语言互通。因此, Org-Babel 的作用便在于是各种编程语言和谐协调地运作于同一篇文档中,即 Literate Programming (文学化编程)。
Org-babel 的工作方式很简单,在 Org-Mode 中嵌入相应语言的代码,然后 C-c C-c ,Emacs便会调用相关的interpreter执行代码,并按照用户要求的格式生成结果,而且不同语言的代码的执行结果可以互为输入,实是写报告、写文档、居家旅行、杀人放火的必备良方。
因此,上帝禁止巴别塔建成了,在Org-Mode里!
就如上文的目录结构图便是在博文的org文件中嵌入 shell 命令 tree ,指定发布html是只输出结果而得到的。
#+BEGIN_SRC sh :results output :eval no-export :exports result echo "Directory structure:" tree -L 2 ~/Cheukyin.github.io #+END_SRC
Org-babel支持的语言可以在 /usr/share/emacs/site-lisp/org-mode/ob-* 下看到。
想要添加语言,可以修改变量 org-babel-load-languages
常用参数:
:exports result | code | both | none:var varname=value 代码中可用的变量:eval no-export | 不设置:result output | value[ ] 图片插入[ ] 公式插入[ ] SEO[ ] 固定侧栏Catorgories等[ ] 添加跟随页面移动、可弹出的Table Of Contents[ ] 寻找更好输入法[ ] 代码块输出html颜色改进标签:des style blog http io ar os sp for
原文地址:http://www.cnblogs.com/cheukyin/p/4140941.html