<!-- 譯者:Github@wizardforcel -->
# 代碼段 #
代碼段是一個非常有效的工具,可以從一個快捷方式中快速生成常用的代碼語法。
這就是說,你可以輸入一些類似于`habtm`的東西,然后按下回車鍵,他就會擴展為`has_and_belongs_to_many`。
許多包自帶他們自己的,具有特定模式的代碼段。比如,提供了html語法高亮和語法的`language-html`包提供了許多代碼段,來創建一些你想使用的不同HTML標簽。如果你在Atom中創建一個新的HTML文件,你可以輸入`html`然后按下`tab`,它會擴展為:
```
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
```
同時它會把光標放在`title`標簽的中間,以便你立即開始填充這個標簽。許多代碼段具有多個焦點位置,你可以按下`tab`在他們之間切換 —— 比如,在這個HTML代碼段之中,你填充完標題標簽之后,可以按下`tab`鍵,然后光標就會移動到body標簽之間。
要查看當前打開文件擁有的所有代碼段,你可以按下`alt-shift-S`。

你也可以在選擇輸入框中輸入內容,來使用模糊搜索過濾這個列表。選擇其中一個之后會執行光標所在的代碼段(或者多個光標所在的代碼段)。
## 創建你自己的代碼段 ##
所以說這樣太爽了。但是,如果語言包中沒有包含一些東西,或者你的代碼中要編寫一些自定義的東西,那會怎么樣呢?很幸運的是,你可以非常便利地添加自己的代碼段。
在你`~/.atom`目錄下的`snippets.cson`文件,存放了你的所有自定義的代碼段,他們會在Atom運行時加載。但是,你也可以通過`Atom > Open Your Snippets`菜單,輕易打開這個文件。
## 代碼段的格式 ##
現在讓我們看一看如何編寫代碼段,基本的代碼段格式像這個樣子:
```
'.source.js':
'console.log':
'prefix': 'log'
'body': 'console.log(${1:"crash"});$2'
```
最外面的鍵是選擇器,即在哪里會加載代碼段。決定它應該是什么的最簡單的方法,是訪問你想要添加代碼段的語言的語言包,并找到“Scope”字符串。
例如,你想要添加在Java文件中工作的代碼段,我們應該先在我們的設置視圖中尋找`language-java`包,然后我們看到了Scope是“source.java”,代碼段最頂層的鍵就應該是它前面加上一個點(就像CSS選擇器那樣)。

下一層的鍵是代碼段的名字,用于在代碼段菜單中,以一個更具可讀性的方式來描述代碼段。通常來說,這里最好使用對人來說具有可讀性的字符串。
在每個代碼段的名字下面是`prefix`,用于觸發代碼段,以及`body`,當代碼段被觸發后用于插入。
每個后面帶有數字的`$`是tab的停止位置。在代碼段被觸發之后,通過按下`tab`鍵來遍歷它們。
上面的例子向Javascript文件添加了`log`代碼段,它會被擴展為:
```
console.log("crash");
```
其中的"crash"字符串會在開始時被選中,再次按下`tab`鍵之后,光標會移動到分號之后。
并不像CSS選擇器,代碼段的鍵每層只能重復一次。如果某一層有重復的鍵,只有最后的那個會被讀到,詳見[配置CSON](https://atom.io/docs/v1.0.3/ch00/_cson)。
## 多行代碼段主體 ##
對于長一些的模板,你可以使用`"""`來使用多行語法。
```
'.source.js':
'if, else if, else':
'prefix': 'ieie'
'body': """
if (${1:true}) {
$2
} else if (${3:false}) {
$4
} else {
$5
}
"""
```
像你可能期待的那樣,這是一個創建代碼段的代碼段。如果你打開一個代碼段文件,輸入`snip`之后按下`tab`,會將以下內容插入到文件中:
```
'.source.js':
'Snippet Name':
'prefix': 'hello'
'body': 'Hello World!'
```
砰的一下,就把那個東西填充了,然后得到了一個代碼段。只要你保存了文件,Atom就會重新加載它,你也就能立即使用它了。
代碼段功能在atom/snippets包中實現。
更多例子請見[language-html](https://github.com/atom/language-html/blob/master/snippets/language-html.cson)中的代碼段,和[language-javascript](https://github.com/atom/language-javascript/blob/master/snippets/language-javascript.cson)包。