標籤:

vim 裡面怎麼清空一行的內容而不刪除一行?

如題,就是我希望將這一行的內容清空掉,而不是刪除一行,並且依舊在normal模式下。


0D


0d$


cc-ESC


Shift + S 啊


["x]D Delete the characters under the cursor until the end

of the line and [count]-1 more lines [into register

x]; synonym for "d$".

["x]cc Delete [count] lines [into register x] and start

insert |linewise|. If "autoindent" is on, preserve

the indent of the first line.

["x]S Delete [count] lines [into register x] and start

insert. Synonym for "cc" |linewise|.

======================================================================

從上面的說明可以看出, @zecy 給出的0D和 @JX Consp 給出的0d$是一回事,而 @郭林給出的cc和 @曉山青給出的S也是一回事。

從Vim的help來看,cc和S都是針對lines操作的,而D和0d$是針對characters操作的,因此效率上不言而喻,cc和S勝出;

從操作上來講,S需要使用小拇指按住Shift鍵,而cc只需要快速的點擊c鍵兩次,因此,cc勝出。

======================================================================

我的選擇是cc,至於使用^定位符的同學可以回翻手冊了。


D


大S


先輸入0,把游標定位到首列

再輸入D和$

或者反過來

輸入$定位到末尾

再按D和0

如果要繼續的話,把游標定位到那一行按 . 就可以了


cc esc


nnoremap D 0D

把上面的這行放到vimrc文件中,

然後重啟vim 然後你就能感受到

D的用途(刪除整行卻不刪除換行符號)


意義不大,最快最順手應該是這個 ddO

如果你把&映射到一個很方便的位置,或者是有很方便的辦法回到正常模式,那自然就是 cc&<回到正常模式&>,對我來說就是 cc&

顯然 dd 或者 cc 處理後恰好適合的情況是經常碰到的,但是我覺得你的目的是快速清空某幾行的內容而保留幾行。如果是這樣的話,臨時寫一個map來處理,或者利用q,或者可視模式選中之後替換一下就行了


^d$(從行首刪到行尾)

ddO(刪除行再插入行)

cc Esc(刪除行內容,進入插入模式)


^D


^d$(回到行首-&>刪除操作-&>刪除至行尾)


C-k(我是Emacs陣營的)


推薦閱讀:

如何把vim打造成一個真正的IDE?
「配成准IDE的vim」和「裝了vim插件的真IDE」哪個效率更高?
用 Vim 的人如何解釋現在大多數公司都要求用 IDE 這個局面?
Vim 比起 IDE 的優勢是什麼?

TAG:Vim |