<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                目前為止我們已經介紹了幾個最為常用的Vimscript命令,但都跟日常中在normal模式下處理文本的方式無關。 有沒有一種辦法能把我們的腳本跟日常的文本編輯命令結合起來呢? 答案顯然是肯定的。之前我們已經見過`normal`命令,是時候更詳細地介紹它了。 執行下面的命令: ~~~ :normal G ~~~ Vim將把你的光標移到當前文件的最后一行,就像是在normal模式里按下`G`。現在執行下面命令: ~~~ :normal ggdd ~~~ Vim將移動到文件的第一行(`gg`)并刪除它(`dd`)。 `normal`命令簡單地接受一串鍵值并當作是在normal模式下輸入的。就是那么簡單! ## 避免映射 執行下面的命令來映射`G`鍵到別的東西: ~~~ :nnoremap G dd ~~~ 現在在normal模式按下`G`將刪除一整行。試試這個命令: ~~~ :normal G ~~~ Vim將刪除當前行。`normal`命令將顧及當前的所有映射。 這意味著我們需要給`normal`提供類似于`nnoremap`之于`nmap`的版本, 否則我們沒法使用它——考慮到我們猜測不了用戶的映射方式。 幸好Vim真的有這樣的命令叫`normal!`。執行這個命令: ~~~ :normal! G ~~~ 這次Vim將移動光標到文件底部,即使`G`已經被映射了。 在寫Vim腳本時,你應該_總是_使用`normal!`,_永不_使用`normal`。不要信任用戶在`~/.vimrc`中的映射。 ## 特殊字符 如果你使用`normal!`一段時間了,就很可能注意到一個問題。試試下面的命令: ~~~ :normal! /foo<cr> ~~~ 第一眼看上去它應該會開始搜索`foo`,但你將看到它不會正常工作。 問題在于`normal!`不會解析像`<cr>`那樣的特殊字符序列。 于是,Vim認為你想要搜索字符串序列"foo",沒有意識到你甚至按下了回車來進行搜索! (譯注:原文為you even pressed return to perform the search! 按后文的意思應該是沒有按下return,待問作者) 我們將在下一章討論如何應對這個問題。 ## 練習 閱讀`:help normal`。在最后部分,你將獲得關于下一章主題的提示。 ## 附加題 如果你還沒準備好面對挑戰,跳過這一節。如果你夠膽,祝你好運! 重溫`:help normal`關于undo的部分。嘗試設計一個刪除兩行卻能單獨撤銷每次刪除的映射。 建議從`nnoremap <leader>d dddd`開始吧。 這次你并不真的需要`normal!`(`nnoremap`就夠了), 但是它揭示了一點:有時閱讀一個Vim命令的文檔可以激發關于別的內容的奇思妙想。 如果你未嘗使用過`helpgrep`命令,那就是時候用上它了。閱讀`:help helpgrep`。 留心關于怎樣在匹配內容中瀏覽的部分。 暫時先別糾結模式(patterns),我們很快就要談到它們。 現在只需了解你可以用類似`foo.*bar`來查找文檔中包括該正則模式的行。 不幸的是,`helpgrep`會不時給你帶來挫折感,因為為了找到某些詞,你需要懂得去搜索某些詞。 我會幫你省下些無用功,這次你得查找到一種手工修改Vim的撤銷序列的方法, 這樣你映射的兩個刪除才能獨立地撤銷。 在以后你要靈活變通(pragmatic)。有時在你迷惘徘徊的時候,Google一下,你就知道。
                  <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>

                              哎呀哎呀视频在线观看