2012-03-20 52 views
1

自發現VIM以來,我發現以小寫字母輸入SQL並使單詞變爲大寫更簡單。有沒有辦法在可視化模式中跳過一個單詞,使其不會成爲選擇的一部分,以便我可以選擇所有的MySQL關鍵字,然後對它們執行U?舉例來說,假設這SQL查詢:VIM:跳過詞可視化選擇

select a.name, b.userid from someTable a inner join anotherTable b on a.someField=b.someOtherField group by a.randomField sort on b.yetAnotherField desc; 

我想選擇的第一個字(選擇),跳過兩個詞,選擇另一個字(從),跳過兩個字,選擇兩個詞(內部連接),等等。

我確實將Ctrl-6映射爲大寫字母(以避免在正常模式下激活大寫鎖定),但我確實更喜歡首先輸入小寫SQL,然後「修復」它。我也知道小寫的SQL是有效的,但是編碼實踐規定它在代碼中都應該是大寫的。

我試圖編寫一個函數來遍歷當前行和大寫的所有MySQL關鍵字。然而,即使我走這條路,我仍然想知道在Visual模式下跳過單詞的解決方案,因爲我也看到了它的其他用途。

回答

3

如果你要全線移動光標,另一條路線是不使用視覺模式可言:

  1. 當光標上selectgUiw類型把它變成SELECT
  2. 移動到from與多個w(無益,也許)或與/fr<CR>(更快,更少打字,也許)。
  3. 點擊.重複上次編輯並將from轉換爲FROM
  4. 重複...
+0

謝謝,我不知道'gUiw',甚至在普通模式下可能會改變這種情況。做完第一個之後,我可以很容易'w'和'.'來獲得我需要的結果。謝謝! – dotancohen 2012-03-20 11:07:37

+1

在你的例子中,你需要點擊'w' 8次才能到達'from'。我建議使用'W'來代替,以跳過虛詞。 – romainl 2012-03-21 21:21:29

+0

謝謝,這是一個有用的VIM。 VIM兔子洞很深! – dotancohen 2012-03-22 10:27:18

3

你問是否可以在視覺模式中選擇多個不相交區域?

如果是這樣,這不能在普通的Vim中完成,但Multiselect plugin聲稱這樣做。 (聲明:我自己並沒有使用這個插件。)

如果這個工作流程是你發現自己經常做的事情,那麼我認爲功能性解決方案更有效率。 (你甚至可以自動觸發它的文件保存,一旦它足夠強大)

+0

謝謝,這個插件正是我一直在尋找的。 – dotancohen 2012-03-20 11:08:20

+0

我被撕裂了。雖然你確實回答了我的問題,但另一個答案解決了我的問題「VIM方式」。 [因爲建議選擇解決問題的答案](http://meta.stackexchange.com/questions/27669/which-answer-should-i-accept-that-which-solved-my-problem-or -hat-which-solve)我將選擇那一個。正如亨利福特曾打趣說的,如果他問他的顧客他們想要什麼,他們會告訴他製造一匹更快的馬。顯然我很天真,我應該問「在這種情況下應該怎麼做」,而不是「如何實現我認爲可能有效的解決方案」。原諒我? – dotancohen 2012-03-20 11:16:57

+1

沒問題!關於這個網站的一個重要的事情是,你經常會得到的答案比你問的要寬得多。 – 2012-03-20 15:05:38