Atom飛行手冊翻譯 3 4 文字處理包

2021-09-20 11:39:08 字數 3517 閱讀 3499

在我們寫完第乙個包之後,讓我們看一看我們能寫出來的其它包的例子。這一節會引導你建立乙個簡單的命令來將選中的文字替換為字元畫(ascii art)。在你在單詞「cool」選中的時候執行我們的命令,它會被替換為:

o888

ooooooo ooooooo ooooooo 888

888 888 888 888 888 888 888

888 888 888 888 888 888

88ooo888 88ooo88 88ooo88 o888o

這個例子應該展示了如何在當前的文字緩衝區做基本的文字操作,以及如何處理選擇。

最後的包在 中檢視。

首先按下cmd-shift-p來彈出命令面板。然後輸入「generate package」並且選擇「package generator: generate package」命令,就像我們在「包生成器」一節中做的那樣。輸入ascii-art作為包的名字。

現在讓我們編輯包中的檔案,來讓我們的字元畫包做一些有意思的事情。由於這個包並不需要任何ui,我們可以把所有檢視相關的移除,所以可以放心刪除lib/ascii-art-view.coffeespec/ascii-art-view-spec.coffeestyles/

接下來,開啟lib/ascii-art.coffee並刪除所有檢視**,所以它看起來像這樣:

= require

'atom'

module.exports =

subscriptions: null

activate:->

@subscriptions = new compositedisposable

@subscriptions.add atom.commands.add 'atom-workspace',

'ascii-art:convert':=>

@convert()

deactivate:->

@subscriptions.dispose()

convert:->

console.log 'convert text!'

現在讓我們新增乙個命令。強烈建議你為你的命令取乙個命名空間,使用包名後面帶著乙個:。所以你可以看到在**中,我們把命令叫做ascii-art:convert,並且當它呼叫時會呼叫convert()方法。

到目前為止,它只會在控制台中記錄。讓我們使它向文字緩衝區插入一些字元來開始。

convert: ->

ifeditor = atom.workspace.getactivetexteditor()

editor.inserttext('hello, world!')

就像在「字數統計」中那樣,我們使用atom.workspace.getactivetexteditor()來獲取表示當前活動編輯器的物件。如果convert()方法在沒有編輯器獲取焦點時呼叫,它會簡單地返回乙個空白的字串,所以我們可以跳過下一行。

接下來我們使用inserttext()方法,向當前的文字編輯器插入乙個字串。無論游標當前在編輯器的**,都會在游標處插入文字。如果有文字被選中,會把選中文字替換成「hello, world!」文字。

現在可以開啟命令面板並搜尋「ascii art: convert」命令了。但是根本找不到。要修正它,開啟package.json並找到activationcommands屬性。活動命令通過在命令不使用時延遲它們的載入,來加快atom的啟動。所以把現有的命令移除,並在activationcommands中新增ascii-art:convert

"activationcommands":
現在我們來新增用於觸發「ascii-art:convert」命令的快捷鍵。開啟keymaps/ascii-art.cson,新增乙個鍵繫結來將ctrl-alt-a鏈結到ascii-art:convert命令上。由於你不需要預設的鍵繫結,你可以刪除它們。

完成之後它應該像這樣:

'atom-text-editor':

'ctrl-alt-a': 'ascii-art:convert'

現在我們需要將被選字元轉換為字元畫。為了完成它我們使用npm中的figletnode模組。開啟package.json,新增figlet的最新版本到dependencies中:

"dependencies":
儲存檔案之後從命令面板執行「update package dependencies: update」。這會自動安裝包的node模組依賴,在這個例子中只有figlet。無論什麼時候你更新了package.json檔案中的dependencies字段,你都要需要執行「update package dependencies: update」命令。

如果由於某種原因沒有生效,你會看到「failed to update package dependencies」這樣的訊息,並且會找到乙個你的目錄下有個新的npm-debug.log檔案。這個檔案會告訴你具體**有錯誤。

現在在lib/ascii-art.coffee中請求(require)figletnode模組,並且將被選文字轉換成字元畫來代替插入「hello, world!」。

convert: ->

ifeditor = atom.workspace.getactivetexteditor()

selection = editor.getselectedtext()

figlet = require 'figlet'

font = "o8"

figlet selection, , (error, art) ->

iferror

console.error(error)

else

editor.inserttext("\n#\n")

在這個例子中,我們需要快速檢視一些新的東西。首先是editor.getselectedtext(),像你猜的那樣,返回當前選中的文字。

之後我們呼叫figlet的**,來將它轉換成別的東西,並使用editor.inserttext()用它替換當前選中的文字。

在這一節中,我們編寫了乙個無ui的包,用於獲取選中文字並替換為處理過的版本。它可能會對建立文字提示和檢查工具有幫助。

Atom飛行手冊翻譯 2 3 文字選擇

atom中的文字選擇支援很多操作,比如區域選擇 縮排和一些查詢操作,以及用引號或者括號把文字括起來之類的標記操作。選擇命令借鑑了很多查詢命令。他們實際上具有相同的快捷鍵,只不過加了個shift。ctrl shift p 選擇當前位置到上一行的相同列 ctrl shift n 選擇當前位置到下一行的相...

Atom飛行手冊翻譯 4 5 4 8

atom中的一些包是node模組,而不是atom的包。如果你想要修改這些node模組,例如atom keymap,你需要把它們鏈結到不同於普通atom包的開發環境中。下面是執行node模組的本地版本的步驟,而不是atom中的apm。我們使用atom keymap作為乙個例子 git clone cd...

Atom飛行手冊翻譯 2 4 編輯和刪除文字

到目前為止,我們介紹了一些用於在檔案中移動和選擇區域的方法,現在讓我們真正來修改一些文字吧。很顯然你可以通過打字的方式來輸入字元,但是有另一些方法使刪除和處理字元變得更簡捷易用。基本操作 有一些用於基本操作的很酷的快捷鍵,他們十分易用。這些操作包括整行移動文字,整行複製,以及改變大小寫。ctrl t...