<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 功能強大 支持多語言、二開方便! 廣告
                我們已經學習了條件語句,但如果我們不能進行比較,`if`語句并不怎么有用。 當然Vim允許我們比較值的大小,只是不會像看上去那么一目了然。 執行下面的命令: ~~~ :if 10 > 1 : echom "foo" :endif ~~~ 顯然,Vim會顯示`foo`。現在執行下面的命令: ~~~ :if 10 > 2001 : echom "bar" :endif ~~~ Vim什么都不顯示,因為`10`不比`2001`大。目前為止,一切正常。運行下面命令: ~~~ :if 10 == 11 : echom "first" :elseif 10 == 10 : echom "second" :endif ~~~ Vim顯示`second`。沒什么好驚訝的。讓我們試試比較字符串。執行下面命令: ~~~ :if "foo" == "bar" : echom "one" :elseif "foo" == "foo" : echom "two" :endif ~~~ Vim輸出`two`。還是沒什么好驚訝的,所以我開頭說的(譯注:Vim的比較不像看上去那么直白)到底是指什么呢? ## 大小寫敏感 執行下面的命令: ~~~ :set noignorecase :if "foo" == "FOO" : echom "vim is case insensitive" :elseif "foo" == "foo" : echom "vim is case sensitive" :endif ~~~ Vim執行`elseif`分句,所以顯然Vimscript是大小寫敏感的。有道理,但沒什么好震驚的。 現在執行下面命令: ~~~ :set ignorecase :if "foo" == "FOO" : echom "no, it couldn't be" :elseif "foo" == "foo" : echom "this must be the one" :endif ~~~ **啊!**?就在這里停下來。是的,你所見屬實。 **`==`的行為取決于用戶的設置。** 我發誓我沒忽悠你。你再試試看看。我沒開玩笑,這不是我干的。 ## 防御性編程 這意味著什么?意味著在為別人開發插件時,你_不能_信任`==`。 一個不加包裝的`==`_不能_出現在你的插件代碼里。 這個建議就像是"`nmap`?VS?`nnoremap`"一樣。_永遠不要_猜測你的用戶的配置。 Vim既古老,又博大艱深。在寫插件時,你_不得不_假定用戶們的配置五花八門,千變萬化。 所以怎樣才能適應這荒謬的現實?好在Vim有額外兩種比較操作符來處理這個問題。 執行下面的命令: ~~~ :set noignorecase :if "foo" ==? "FOO" : echom "first" :elseif "foo" ==? "foo" : echom "second" :endif ~~~ Vim顯示`first`因為`==?`是"無論你怎么設都大小寫_不敏感_"比較操作符。現在執行下面的命令: ~~~ :set ignorecase :if "foo" ==# "FOO" : echom "one" :elseif "foo" ==# "foo" : echom "two" :endif ~~~ Vim顯示`two`因為`==#`是"無論你怎么設都大小寫_敏感_"比較操作符。 故事的最后告訴我們一個道理:你應該_總是_用顯式的大小寫敏感或不敏感比較。 使用常規的形式是_錯的_并且它_終究_會出錯。打多一下就能拯救你自己于焦頭爛額中。 當你比較整數時,這點小不同不會有什么影響。 不過,我還是建議每一次都使用大小寫敏感的比較(即使不一定需要這么做),好過該用的時候_忘記_用了。 在比較整數時使用`==#`或`==?`都可以,而且將來一旦你改成字符串間的比較,它還會正確工作。 如果你真想用`==`比較整數也不是不行,不過要銘記,一旦被改成字符串間的比較,你需要修改比較操作符。 ## 練習 嘗試`:set ignorecase`和`:set noignorecase`,看看在不同狀態下比較的表現。 閱讀`:help ignorecase`來看看為什么有的人設置了這個選項。 閱讀`:help expr4`看看所有允許的比較操作符。
                  <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>

                              哎呀哎呀视频在线观看