鍍金池/ 教程/ C++/ 代碼段
調(diào)試
初始文件
作用域設(shè)置、作用域和作用域描述符
在Atom中移動(dòng)
在Atom背后
Atom中的包
為什么選擇Atom?
從Textmate中轉(zhuǎn)換
小結(jié)
新手入門
折疊
代碼段
Hacking Atom
基本的自定義
Atom中的序列化
文本處理包
字?jǐn)?shù)統(tǒng)計(jì)包
所需工具
維護(hù)你的包
Atom基礎(chǔ)
深入鍵表(keymap)
配置API
使用Atom
自動(dòng)補(bǔ)全
面板
在Atom中寫作
文本選擇
創(chuàng)建主題
圖標(biāo)
小結(jié)
開發(fā)Node模塊
編輯和刪除文本
安裝Atom
通過服務(wù)和其它包交互
小結(jié)
編寫 spec
語法
Atom中的版本控制
查找和替換

代碼段

代碼段是一個(gè)非常有效的工具,可以從一個(gè)快捷方式中快速生成常用的代碼語法。

這就是說,你可以輸入一些類似于habtm的東西,然后按下回車鍵,他就會(huì)擴(kuò)展為has_and_belongs_to_many。

許多包自帶他們自己的,具有特定模式的代碼段。比如,提供了html語法高亮和語法的language-html包提供了許多代碼段,來創(chuàng)建一些你想使用的不同HTML標(biāo)簽。如果你在Atom中創(chuàng)建一個(gè)新的HTML文件,你可以輸入html然后按下tab,它會(huì)擴(kuò)展為:

<html>
  <head>
    <title></title>
  </head>
  <body>

  </body>
</html>

同時(shí)它會(huì)把光標(biāo)放在title標(biāo)簽的中間,以便你立即開始填充這個(gè)標(biāo)簽。許多代碼段具有多個(gè)焦點(diǎn)位置,你可以按下tab在他們之間切換 —— 比如,在這個(gè)HTML代碼段之中,你填充完標(biāo)題標(biāo)簽之后,可以按下tab鍵,然后光標(biāo)就會(huì)移動(dòng)到body標(biāo)簽之間。

要查看當(dāng)前打開文件擁有的所有代碼段,你可以按下alt-shift-S。

http://wiki.jikexueyuan.com/project/atom-flight-manual-zh-cn/images/snippets.png" alt="" />

你也可以在選擇輸入框中輸入內(nèi)容,來使用模糊搜索過濾這個(gè)列表。選擇其中一個(gè)之后會(huì)執(zhí)行光標(biāo)所在的代碼段(或者多個(gè)光標(biāo)所在的代碼段)。

創(chuàng)建你自己的代碼段

所以說這樣太爽了。但是,如果語言包中沒有包含一些東西,或者你的代碼中要編寫一些自定義的東西,那會(huì)怎么樣呢?很幸運(yùn)的是,你可以非常便利地添加自己的代碼段。

在你~/.atom目錄下的snippets.cson文件,存放了你的所有自定義的代碼段,他們會(huì)在Atom運(yùn)行時(shí)加載。但是,你也可以通過Atom > Open Your Snippets菜單,輕易打開這個(gè)文件。

代碼段的格式

現(xiàn)在讓我們看一看如何編寫代碼段,基本的代碼段格式像這個(gè)樣子:

'.source.js':
  'console.log':
    'prefix': 'log'
    'body': 'console.log(${1:"crash"});$2'

最外面的鍵是選擇器,即在哪里會(huì)加載代碼段。決定它應(yīng)該是什么的最簡(jiǎn)單的方法,是訪問你想要添加代碼段的語言的語言包,并找到“Scope”字符串。

例如,你想要添加在Java文件中工作的代碼段,我們應(yīng)該先在我們的設(shè)置視圖中尋找language-java包,然后我們看到了Scope是“source.java”,代碼段最頂層的鍵就應(yīng)該是它前面加上一個(gè)點(diǎn)(就像CSS選擇器那樣)。

http://wiki.jikexueyuan.com/project/atom-flight-manual-zh-cn/images/snippet-scope.png" alt="" />

下一層的鍵是代碼段的名字,用于在代碼段菜單中,以一個(gè)更具可讀性的方式來描述代碼段。通常來說,這里最好使用對(duì)人來說具有可讀性的字符串。

在每個(gè)代碼段的名字下面是prefix,用于觸發(fā)代碼段,以及body,當(dāng)代碼段被觸發(fā)后用于插入。

每個(gè)后面帶有數(shù)字的$是tab的停止位置。在代碼段被觸發(fā)之后,通過按下tab鍵來遍歷它們。

上面的例子向Javascript文件添加了log代碼段,它會(huì)被擴(kuò)展為:

console.log("crash");

其中的"crash"字符串會(huì)在開始時(shí)被選中,再次按下tab鍵之后,光標(biāo)會(huì)移動(dòng)到分號(hào)之后。

并不像CSS選擇器,代碼段的鍵每層只能重復(fù)一次。如果某一層有重復(fù)的鍵,只有最后的那個(gè)會(huì)被讀到,詳見配置CSON。

多行代碼段主體

對(duì)于長(zhǎng)一些的模板,你可以使用"""來使用多行語法。

'.source.js':
  'if, else if, else':
    'prefix': 'ieie'
    'body': """
      if (${1:true}) {
        $2
      } else if (${3:false}) {
        $4
      } else {
        $5
      }
    """

像你可能期待的那樣,這是一個(gè)創(chuàng)建代碼段的代碼段。如果你打開一個(gè)代碼段文件,輸入snip之后按下tab,會(huì)將以下內(nèi)容插入到文件中:

'.source.js':
  'Snippet Name':
    'prefix': 'hello'
    'body': 'Hello World!'

砰的一下,就把那個(gè)東西填充了,然后得到了一個(gè)代碼段。只要你保存了文件,Atom就會(huì)重新加載它,你也就能立即使用它了。

代碼段功能在atom/snippets包中實(shí)現(xiàn)。

更多例子請(qǐng)見language-html中的代碼段,和language-javascript包。