2012-08-07 71 views
2

我想刪除以下代碼在我的配置文件:如何刪除段落儘快

server { 
    listen 80; 
    server_name xxx; 
    location/{ 
     try_files xx; 
    } 
} 

我知道我可以使用 dd,但這不是方便 - 如果該部分太長,計數行將是不方便的。

有沒有更好的方法來做到這一點?

有時候,我必須刪除一個完整的函數,對此有什麼想法?

+1

關於你的第二question-如何刪除整個C風格的功能 - 參見[這個StackOverflow的問題(http://stackoverflow.com/questions/11723169/selecting-entire -function清晰度功能於VIM/11723259#11723259)。 – 2012-08-07 06:38:33

回答

2

嘗試使用帶%的可視模式。

例如,假設您的光標位於「服務器」行的開頭。

按v進入可視化模式。按%突出顯示該塊的結尾。按d刪除它。

+0

感謝您的幫助使用v /} d,這將是更好的工作 – guosheng1987 2012-08-07 06:20:30

+0

@ user1503012,我不確定你的意思,但如@ pb2q所示,最短的方式,你可以做到這一點跨越多行(空白,之間)使用'd%'。 – imm 2012-08-07 06:24:15

2

如果在這些行之後有一個空行,Vim會將其標識爲段落,因此您可以簡單地使用d}來刪除它(假設光標位於第一行)。

+0

是的,這很好 – guosheng1987 2012-08-07 06:21:02

1

給定匹配的parens或大括號,您可以使用%d刪除跨越行。

所以,假設你在server {行,你可以做d%。這對於所有代碼塊通常是有用的,例如,功能塊,循環塊,嘗試塊。

同樣,dip的作品,但d}更短。但是,兩者都只會刪除到下一個空行。

4

就像在Vim常見的那樣,有很多方法!

請注意,頭兩個解決方案取決於塊內沒有空行。

  • 如果你的光標在server線,儘量d}。它會將所有內容刪除到下一個區塊。

  • 在該項本身,d一個p將刪除 '段落'。

  • 可以刪除捲曲布拉克塊與d一個}。 (如果你喜歡這種語法,我推薦Tim Pope的奇妙的surround.vim,它增加了更多的功能和相似的感覺)。

  • 您也可以嘗試使用正則表達式來刪除,直到下一個最左邊縮進右大括號:d/^}輸入

  • ]] and [[移動到ne xt /以前的第一列大括號(相當於使用/?與上面提到的那個正則表達式。結合d動議,您也獲得了同樣的效果。

  • 如果你在一個塊下面,你還可以利用Vim搜索的方便'偏移'功能。 d^{- 將在第一列開口大括號首次出現之前向後刪除一行。輸入這個命令有點棘手。也許你可以製作一個<leader>快捷方式。

請注意,這個答案大部分取自previous answer I gave對一個相似的話題。

+0

複製答案? ;-) http://stackoverflow.com/questions/11723169/selecting-entire-function-definition-in-vim/11723259#11723259 – Conner 2012-08-07 13:44:33

+0

@康納,我在我的答案的最後一行記錄了這一點。這幾乎是一樣的,但我稍微修改了一下,以便更多地應用這個問題。 – 2012-08-07 13:49:00

+0

啊,我沒有看到。我只是在逗弄 - 不打擾我。 – Conner 2012-08-07 14:41:48

1

大衛說他們有很多方法。這裏有一些我喜歡:

  1. Vf{%d這是假設你上線W/server和你視線的選擇,找到{,然後找到通過%命令匹配}
  2. set relativenumberset rnu。這將打開相對於光標的行號。因此,您不必計算行數,只需查看和7dd即可刪除您的區塊。
  3. 使用VaB以線性方式在視覺上選擇塊,即{}。在仍然處於可視模式時,繼續執行aB,直到選擇正確的塊,然後執行d。這意味着您可以從塊內而不是在開始或結束時選擇一個塊。
  4. d}將刪除一段。這適用於您當前的情況,因爲塊內沒有空白行。如果有一個,則所有投注都關閉。儘管您可以繼續按.,直到該塊被正確刪除。
  5. 如果您可以通過[{跳到當前塊的塊裏面,然後繼續執行[{,直到你在正確的塊,然後V%dd%dd刪除塊

使用上述技術,你可以刪除功能也可以使用[M和朋友([m,]m,]M)跳轉到方法的開始和結束處,但它們通常也用於函數。

欲瞭解更多信息

:h % 
:h 'rnu' 
:h aB 
:h } 
:h . 
:h [{ 
:h [m