我想刪除以下代碼在我的配置文件:如何刪除段落儘快
server {
listen 80;
server_name xxx;
location/{
try_files xx;
}
}
我知道我可以使用 dd,但這不是方便 - 如果該部分太長,計數行將是不方便的。
有沒有更好的方法來做到這一點?
有時候,我必須刪除一個完整的函數,對此有什麼想法?
我想刪除以下代碼在我的配置文件:如何刪除段落儘快
server {
listen 80;
server_name xxx;
location/{
try_files xx;
}
}
我知道我可以使用 dd,但這不是方便 - 如果該部分太長,計數行將是不方便的。
有沒有更好的方法來做到這一點?
有時候,我必須刪除一個完整的函數,對此有什麼想法?
嘗試使用帶%的可視模式。
例如,假設您的光標位於「服務器」行的開頭。
按v進入可視化模式。按%突出顯示該塊的結尾。按d刪除它。
感謝您的幫助使用v /} d,這將是更好的工作 – guosheng1987 2012-08-07 06:20:30
@ user1503012,我不確定你的意思,但如@ pb2q所示,最短的方式,你可以做到這一點跨越多行(空白,之間)使用'd%'。 – imm 2012-08-07 06:24:15
給定匹配的parens或大括號,您可以使用%
和d
刪除跨越行。
所以,假設你在server {
行,你可以做d%
。這對於所有代碼塊通常是有用的,例如,功能塊,循環塊,嘗試塊。
同樣,dip
的作品,但d}
更短。但是,兩者都只會刪除到下一個空行。
就像在Vim常見的那樣,有很多方法!
請注意,頭兩個解決方案取決於塊內沒有空行。
如果你的光標在server
線,儘量d}。它會將所有內容刪除到下一個區塊。
在該項本身,d一個p將刪除 '段落'。
可以刪除捲曲布拉克塊與d一個}。 (如果你喜歡這種語法,我推薦Tim Pope的奇妙的surround.vim,它增加了更多的功能和相似的感覺)。
您也可以嘗試使用正則表達式來刪除,直到下一個最左邊縮進右大括號:d/^}輸入
]] and [[移動到ne xt /以前的第一列大括號(相當於使用/
和?
與上面提到的那個正則表達式。結合d動議,您也獲得了同樣的效果。
如果你在一個塊下面,你還可以利用Vim搜索的方便'偏移'功能。 d?^{?- 將在第一列開口大括號首次出現之前向後刪除一行。輸入這個命令有點棘手。也許你可以製作一個<leader>
快捷方式。
請注意,這個答案大部分取自previous answer I gave對一個相似的話題。
大衛說他們有很多方法。這裏有一些我喜歡:
Vf{%d
這是假設你上線W/server
和你視線的選擇,找到{
,然後找到通過%
命令匹配}
。set relativenumber
或set rnu
。這將打開相對於光標的行號。因此,您不必計算行數,只需查看和7dd
即可刪除您的區塊。VaB
以線性方式在視覺上選擇塊,即{
至}
。在仍然處於可視模式時,繼續執行aB
,直到選擇正確的塊,然後執行d
。這意味着您可以從塊內而不是在開始或結束時選擇一個塊。d}
將刪除一段。這適用於您當前的情況,因爲塊內沒有空白行。如果有一個,則所有投注都關閉。儘管您可以繼續按.
,直到該塊被正確刪除。[{
跳到當前塊的塊裏面,然後繼續執行[{
,直到你在正確的塊,然後V%d
或d%dd
刪除塊使用上述技術,你可以刪除功能也可以使用[M
和朋友([m
,]m
,]M
)跳轉到方法的開始和結束處,但它們通常也用於函數。
欲瞭解更多信息
:h %
:h 'rnu'
:h aB
:h }
:h .
:h [{
:h [m
關於你的第二question-如何刪除整個C風格的功能 - 參見[這個StackOverflow的問題(http://stackoverflow.com/questions/11723169/selecting-entire -function清晰度功能於VIM/11723259#11723259)。 – 2012-08-07 06:38:33