<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                <!-- 譯者:Github@wizadforcel --> # 深入鍵表(keymap) # 鍵表文件是以JSON或者CSON編碼的文件,其中含有嵌套的哈希表。它們的工作方式像是樣式表,但是它們指定匹配選擇器的元素的快捷鍵的作用,而不是應用樣式屬性。下面是一些快捷鍵的例子,它們在`atom-text-editor`元素上按下時生效: ``` 'atom-text-editor': 'cmd-delete': 'editor:delete-to-beginning-of-line' 'alt-backspace': 'editor:delete-to-beginning-of-word' 'ctrl-A': 'editor:select-to-first-character-of-line' 'ctrl-shift-e': 'editor:select-to-end-of-line' 'cmd-left': 'editor:move-to-first-character-of-line' 'atom-text-editor:not([mini])': 'cmd-alt-[': 'editor:fold-current-row' 'cmd-alt-]': 'editor:unfold-current-row' ``` 在第一個選擇器底下綁定了一些快捷鍵,將特定的鍵位通配符映射到命令上面。當一個`atom-text-editor`元素獲得焦點,并且`cmd-delete`被按下,一個叫做`editor:delete-to-beginning-of-line`的自定義DOM事件會在`atom-text-editor`元素上面觸發。 第二個選擇器分組也指向了編輯器,但是只是沒有`mini`屬性的編輯器。在這個例子中,代碼折疊的命令在迷你編輯器中毫無意義,所以選擇器將它們限制于普通的編輯器中。 ### 鍵位通配符(keystroke pattern) ### 鍵位通配符表示一個或者多個鍵位,帶有可選的輔助鍵(modifier key)。例如`ctrl-w v`和`cmd-shift-up`。鍵位由下面的符號組成,以`-`分隔。一個多種鍵位的通配符可以表示為以空格分割的鍵位通配符。 類型 | 例子 - | - 字符的字面值 | `a` `4` `$` 輔助鍵 | `cmd` `ctrl` `alt` `shift` 特殊鍵 | `enter` `escape` `backspace` `delete` `tab` `home` `end` `pageup` `pagedown` `left` `right` `up` `down` ### 命令 ### 命令是自定義的DOM事件,當一個鍵位匹配到綁定的快捷鍵時觸發。這可以讓UI代碼來監聽具名的命令,而不需要指定觸發它的特定的快捷鍵。例如,下面的代碼創建了一個命令來向編輯器插入當前日期: ``` atom.commands.add 'atom-text-editor', 'user:insert-date': (event) -> editor = @getModel() editor.insertText(new Date().toLocaleString()) ``` `atom.commands`指向全局`{CommandRegistry}`的實例,所有命令在它里面設置,并且可以通過命令面板來獲取。 當你想要綁定新的快捷鍵時,使用命令面板(`ctrl-shift-p`)來看一看在一個具有焦點的上下文中,什么命令正在被監聽,是十分有用的。遵循一個簡單的算法使得命令會很“人性化”,所以`editor:fold-current-row`命令會顯示為“Editor: Fold Current Row”。 ### “組合”命令 ### 一個很常見的問題是,“我如何使用一個快捷鍵來執行兩個或者更多命令?”Atom并不直接支持這一需求,但是我們可以通過創建一個自定義命令,它執行你想要的多個操作,并且為這個命令創建一個快捷鍵來解決。例如,假設我想創建一個“組合”命令,選取并剪切一行。你可以在`init.coffee`中添加一下代碼: ``` atom.commands.add 'atom-text-editor', 'custom:cut-line', -> editor = atom.workspace.getActiveTextEditor() editor.selectLinesContainingCursors() editor.cutSelectedText() ``` 然后我們想要把這個命令關聯到`alt-ctrl-z`上去,你應該添加以下內容到鍵表中: ``` 'atom-text-editor': 'alt-ctrl-z': 'custom:cut-line' ``` ### 特異性(優先級)和層級順序 ### 就像這個應用了CSS樣式的例子,當很多快捷鍵的綁定匹配到一個元素的時候,沖突通過選擇最特別的選擇器來解決。如果兩個匹配到的選擇器具有相同的特異性,在層級中出現順序靠后的選擇器的快捷鍵會優先執行。 當前,沒有任何方法在一個單獨的鍵表中指定快捷鍵的順序,因為JSON的對象是無序的。我們最終打算為鍵表引入一個自定義類似CSS的文件格式來允許在單個文件中排序。到目前為止,我們可以選擇性解決一些情況,其中選擇器的順序由把鍵表分開放到兩個文件中來嚴格規定。就像`snippets-1.cson`和`snippets-2.cson`。 ## 移除快捷鍵 ## 當鍵表系統遇到了以`unset!`作為快捷鍵的命令,它就會像沒有綁定匹配到當前鍵位序列一樣,繼續從它的父節點中尋找。如果你想移除一個你不再用到的快捷鍵,例如Atom核心中的或者包中的快捷鍵,應該直接使用`unset!`。 例如,下面的代碼移除了樹視圖上`a`的快捷鍵,它一般會觸發`tree-view:add-file`命令: ``` '.tree-view': 'a': 'unset!' ``` ![](https://box.kancloud.cn/2015-12-14_566e9b78e4b4d.png) ## 強制Chrome處理本地快捷鍵 ## 如果你想要在一個提供的快捷鍵上強制執行本地瀏覽器的行為,直接使用`native!`作為綁定的命令。這會在啟動本地輸入元素的正確行為時比較有用。例如,如果你在一個元素上面應用了`.native-key-bindings` class,所有由瀏覽器處理的快捷鍵都會綁定為`native!`。 ## 重載快捷鍵 ## 一些情況下需要把多個動作依次放到同一個快捷鍵下面。一個例子就是代碼段的包,代碼段由輸入一個類似`for`的前綴之后按下`tab`來插入。每次`tab`按下的時候,如果光標前面的文字存在對應的代碼段,我們想要執行代碼來展開代碼段。如果代碼段并不存在,我們希望`tab`插入空白字符。 要實現成這樣,代碼段的包利用了代表`snippets:expand`命令的事件對象的`.abortKeyBinding()`方法。 ``` # pseudo-code editor.command 'snippets:expand', (e) => if @cursorFollowsValidPrefix() @expandSnippet() else e.abortKeyBinding() ``` 當事件處理器觀察到光標前面并沒有一個有效的前綴時,會調用`e.abortKeyBinding()來告訴鍵表系統繼續尋找另一個匹配到的綁定。 ## 詳細步驟:按鍵事件如何映射到命令 ## + 按鍵事件出現在獲得焦點的元素上面。 + 由獲取焦點的元素開始,鍵表會向上搜索,直到文檔的根元素,尋找最具特異性的CSS選擇器,它匹配當前DOM元素并且含有匹配按鍵事件的快捷鍵通配符。 + 找到匹配的快捷鍵通配符之后,搜索就結束了,并且與通配符綁定的命令會在當前元素上觸發。 + 如果在觸發的事件對象上調用了`.abortKeyBinding()`,會恢復搜索,在相同元素上觸發下一個最具特異性的CSS選擇器上綁定的事件,或者繼續向上搜索。 + 如果找不到任何快捷鍵,事件通常就會由Chrome來處理。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看