本文同時備份在我的個人博客

我們經常需要對二維數組進行迭代,比如這樣:
for(int x = 0; x < width; x++){
for(int y = 0; y < height; y++){
screen[x][y].setColor("black");
}
}
過上一段時間,你又要寫這么一段代碼:
for(int i = 0; i < rows; i++){
for(int j = 0; j< columns; j++){
objects[i][j].update();
}
}
如果你是程序員,那么你理應厭煩:又一次重復得輸入for,[],{}……而且一個不小心,還很容易輸入錯誤。浪費時間尋找哪里少了一個分號可不是你該做的事情。
那么不如來試試Snippet,一小段預先定義好格式的代碼塊。下次使用時,只需填入變化的部分。是的,就像填表一樣。
在Atom中設置你的Snippet
為了在Atom中使用Snippet,你需要首先定義好你的代碼塊格式。
Linux環境下,進入Edit->Snippets...,相對應的,在Windows下是File->Snippets...。
這實際上是一個cson文件,格式如下:
'.source.python': # 在何種文件中使用這個Snippet
'python coding': # 對Snippet的簡短說明
'prefix': 'coding' # 輸入什么前綴可以觸發這個Snippet
'body': '# -*- coding:utf8 -*-\n' # Snippet的內容
第一行指定在何種文件中使用Snippet,你可以在設置的Packages中的Installed Package里搜索你要用的編程語言。
點擊對應的包,通常名字是:language-編程語言。在打開的包里看看Scope是什么。
常用的幾種如下:
| 文件后綴 | Scope |
|---|---|
| .c .h | .source.c |
| .py | .source.python |
| .java | .source.java |
| .js | .source.js |
| .css | .source.css |
| .md | .source.gfm |
第一個示例:指定Python文件的編碼
我們都知道,如果你在python2中使用中文,在Python文件開頭,你需要添加這么一段代碼,指定這個文件的編碼格式:
# -*- coding:utf8 -*-
每次都要輸入,重復!那就把它變成一段Snippet吧:
'.source.python':
'python coding':
'prefix': 'coding'
'body': '# -*- coding:utf8 -*-\n'
這樣,在打開.py文件后,只需輸入coding,然后按下Tab鍵,這段遍布着*的代碼行就一下子輸入成功了。
第二個示例:划分你的代碼
還是在Python中,如果你想要添加一段像下面這樣的代碼,將你的.py文件划分成多塊的話:
#=====================
# 數據爬取結束,開始匹配
#=====================
這時候,中間的文字是你每次都需要更改的部分,當然可以在輸入其他部分后再移到中間部分進行編輯,但我們有更好的東西:
'.source.python':
'python coding':
'prefix': 'coding'
'body': '# -*- coding:utf8 -*-\n'
'section':
'prefix': 'section'
'body': '#=====================\n# $1\n#=====================\n$2'
注意,對同一后綴文件的Snippet,都得寫在一起。
$1表示光標第一次所處的位置,按一下Tab后光標會移到$2所處的位置。
在這個例子中,輸入section然后按Tab,光標就自動出現在這段代碼的中間,輸入完中間部分,再按Tab,光標就會移動到這段文字的最后。你可以繼續編碼,而無需浪費時間在移動光標上。
第三個示例:同時編輯多處
在上面,我們使用\n划分多行,但是行數一多,這樣看起來就眼花繚亂了,我們可以使用"""來編寫多行的Snippet:
'.source.java':
'iterate two dimension array':
'prefix' : 'for2'
'body' : """
for(int $1 = 0; $1 < $2; $1++){
for(int $3 = 0; $3 < $4; $3++){
$5[$1][$3]$6
}
}
$7
"""
Atom的一個優勢就是可以同時修改文件的不同位置,Snippet自然支持這一點。
你會注意到,$1出現三次,這意味着一次鍵入,三處輸入。這樣不但快捷,還能保證命名一致。(錯也會錯成一樣的)。
要注意的
- Snippet很方便,但只有你用起來的時候才能加速你的編碼。要記得使用,直到肌肉有了記憶,自然而然地使用Snippet。
- Snippet的介紹似乎不是很重要,但安裝了其他人的Snippet后,你需要這些介紹來進行區分,所以還是要認真編寫的。
- 保持開心,如果Snippet用起來感覺不是爽而是痛苦,那就不要使用它。也許你會發現,這些重復的編碼可以用其他的東西來解決,比如
map函數。
