使用Atom的Snippet加速編碼


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

一個使用Snippet加速編碼的動圖示例

我們經常需要對二維數組進行迭代,比如這樣:

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函數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM