在vim中縮排X行

在vim中縮排X行

我最近一直在用 Java 編寫工作,我注意到我將編寫一些程式碼,然後確定我需要將程式碼包裝在 try/catch 區塊中。

我剛剛移至行首並添加了一個選項卡。

0 i <tab> <esc> k (repeat process until at beginning or end of block)

現在,前三、四次我必須縮排還可以,但現在它變得乏味,而且我是一個懶惰的人。

有沒有更簡單的方法可以解決這個問題?

答案1

Shift另一個選擇是按照 Ignacio 的建議使用+選擇行V,然後按>(大於號)。這會根據您的縮排設定(shiftwidth、expandtab 等)進行縮排。

您也可以使用以下命令縮排多一級數位>,例如2>縮排兩級。

最後,如果 Vim 識別出檔案類型( type :set filetype?,它應該會列印filetype=java),那麼您可以選擇上面的任何程式碼並按=,它將使用該類型檔案的規則修復縮排。

答案2

使用視覺 ( V) 或視覺線 ( ShiftV) 模式選擇要縮排的行,按:,然後輸入s/^/CtrlVTab/

答案3

另一種方式:
CTRL+ v(這會啟動視覺塊模式)
xj或 x k(其中 x 表示向下或向上的行數)
>(又稱shift+ .

這與上面的答案沒有太大不同,但引入了區塊模式,這對於編輯多行來說非常好。

答案4

Vim 比其他答案讓您想像的要聰明得多:它能夠自動重新縮排程式碼區域。通常,從一個嘗試塊,您只需鍵入=i{- 實際上這適用於任何大括號塊。僅此而已...只要您的縮排選項(cindentexpandtabsw)根據您的需求和品味正確設定即可。

下一步是使用一個映射,該映射知道如何用您的資料包圍任何一組選定的線。嘗試區塊(並且不會忘記在過程結束時重新縮排)。我有這樣的事對於 C++,使其適應java並不會太複雜。 (它只是需要另外兩個函式庫插件:lh-vim-lib左鍵地圖工具.)

相關內容