1. 程式人生 > >vi / vim 刪除以及其它命令

vi / vim 刪除以及其它命令

當前 rom 指定 其它 term 修改 搜索 rap 設置

刪除一行:dd

刪除一個單詞/光標之後的單詞剩余部分:dw

刪除當前字符:x

光標之後的該行部分:d$

文本刪除

dd 刪除一行

d$ 刪除以當前字符開始的一行字符

ndd 刪除以當前行開始的n行

dw 刪除以當前字符開始的一個字

ndw 刪除以當前字符開始的n個字

D 與d$同義

d) 刪除到下一句的開始

d} 刪除到下一段的開始

d回車 刪除2行

ndw 或 ndW 刪除光標處開始及其後的 n-1 個字符。
d0 刪至行首。
d$ 刪至行尾。
ndd 刪除當前行及其後 n-1 行。
x 或 X 刪除一個字符。
Ctrl+u 刪除輸入方式下所輸入的文本。
^R 恢復u的操作
J 把下一行合並到當前行尾
V 選擇一行
^V 按下^V後即可進行矩形的選擇了
aw 選擇單詞
iw 內部單詞(無空格)
as 選擇句子
is 選擇句子(無空格)
ap 選擇段落
ip 選擇段落(無空格)
D 刪除到行尾
x,y 刪除與復制包含高亮區

dl 刪除當前字符(與x命令功能相同)
d0 刪除到某一行的開始位置
d^ 刪除到某一行的第一個字符位置(不包括空格或TAB字符)
dw 刪除到某個單詞的結尾位置
d3w 刪除到第三個單詞的結尾位置
db 刪除到某個單詞的開始位置
dW 刪除到某個以空格作為分隔符的單詞的結尾位置
dB 刪除到某個以空格作為分隔符的單詞的開始位置
d7B 刪除到前面7個以空格作為分隔符的單詞的開始位置
d) 刪除到某個語句的結尾位置
d4) 刪除到第四個語句的結尾位置
d( 刪除到某個語句的開始位置
d) 刪除到某個段落的結尾位置
d{ 刪除到某個段落的開始位置
d7{ 刪除到當前段落起始位置之前的第7個段落位置
dd 刪除當前行
d/text 刪除從文本中出現“text”中所指定字樣的位置,
一直向前直到下一個該字樣所出現的位置(但不包括該字樣)之間的內容
dfc 刪除從文本中出現字符“c”的位置,一直向前直到下一個該字符所出現的位置(包括該字符)之間的內容
dtc 刪除當前行直到下一個字符“c”所出現位置之間的內容
D 刪除到某一行的結尾
d$ 刪除到某一行的結尾
5dd 刪除從當前行所開始的5行內容
dL 刪除直到屏幕上最後一行的內容
dH 刪除直到屏幕上第一行的內容
dG 刪除直到工作緩存區結尾的內容
d1G 刪除直到工作緩存區開始的內容

在Vi 中移動光標

  k        上
h   l    左  右
  j        下

^        移動到該行第一個非空格的字符處
w        向前移動一個單詞,將符號或標點當作單詞處理
W        向前移動一個單詞,不把符號或標點當作單詞處理
b        向後移動一個單詞,把符號或標點當作單詞處理
B        向後移動一個單詞,不把符號或標點當作單詞處理
(        光標移至句首
)        光標移至句尾
{        光標移至段落開頭
}        光標移至段落結尾
H        光標移至屏幕頂行
M        光標移至屏幕中間行
L        光標移至屏幕最後行 
0        到行首
$        到行尾
gg       到頁首
G        到頁末
行號+G   跳轉到指定行
n+       光標下移n行
n-       光標上移n行 
Ctrl+g   查詢當前行信息和當前文件信息

fx       向右跳到本行字符x處(x可以是任何字符)
Fx       向左跳到本行字符x處(x可以是任何字符)

tx       和fx相同,區別是跳到字符x前
Tx       和Fx相同,區別是跳到字符x後

C-b      向上滾動一屏
C-f      向下滾動一屏
C-u      向上滾動半屏
C-d      向下滾動半屏
C-y      向上滾動一行
C-e      向下滾動一行

nz       將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。 

進入和退出Vi命令

vi filename               打開或新建文件,並將光標置於第一行首
vi +n filename            打開文件,並將光標置於第n行首
vi + filename             打開文件,並將光標置於最後一行首
vi +/pattern filename     打開文件,並將光標置於第一個與pattern匹配的串處
vi -r filename            在上次正用vi編輯時發生系統崩潰,恢復filename
vi filename ... filename  打開多個文件,依次進行編輯 

ZZ                        退出vi並保存
:q!                       退出vi,不保存
:wq                       退出vi並保存

重復操作

.        重復上一次操作

自動補齊

C-n      匹配下一個關鍵字
C-p      匹配上一個關鍵字

插入

o        在光標下方新開一行並將光標置於新行行首,進入插入模式。
O        同上,在光標上方。

a        在光標之後進入插入模式。
A        同上,在光標之前。


R        進入替換模式,直到按下Esc
set xxx  設置XXX選項。

行合並

J        把下面一行合並到本行後面

Vi中查找及替換命令

/pattern         從光標開始處向文件尾搜索pattern
?pattern         從光標開始處向文件首搜索pattern
n                在同一方向重復上一次搜索命令
N                在反方向上重復上一次搜索命令
%                查找配對的括號
:s/p1/p2/g       將當前行中所有p1均用p2替代,若要每個替換都向用戶詢問則應該用gc選項
:n1,n2s/p1/p2/g  將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g    將文件中所有p1均用p2替換

.*[]^%~$ 在Vi中具有特殊含義,若需要查找則應該加上轉義字符"\"

查找的一些選項

設置高亮

:set hlsearch    設置高亮
:set nohlsearch  關閉高亮
:nohlsearch      關閉當前已經設置的高亮

增量查找

:set incsearch   設置增量查找
:set noincsearch 關閉增量查找

在Vi中刪除

x        刪除當前光標下的字符
dw       刪除光標之後的單詞剩余部分。
d$       刪除光標之後的該行剩余部分。
dd       刪除當前行。

c        功能和d相同,區別在於完成刪除操作後進入INSERT MODE
cc       也是刪除當前行,然後進入INSERT MODE

更改字符

rx       將當前光標下的字符更改為x(x為任意字符) 
~        更改當前光標下的字符的大小寫 

鍵盤宏操作

qcharacter  開始錄制宏,character為a到z的任意字符
q           終止錄制宏
@character  調用先前錄制的宏

恢復誤操作

u        撤銷最後執行的命令
U        修正之前對該行的操作
Ctrl+R   Redo

在Vi中操作Frame

c-w c-n  增加frame
c-w c-c  減少frame
c-w c-w  切換frame
c-w c-r  交換兩個frame

VIM中的塊操作

Vim支持多達26個剪貼板

  選塊   先用v,C-v,V選擇一塊,然後用y復制,再用p粘貼。
  yy     復制當前整行
  nyy    復制當前行開始的n行內容
  ?nyy   將光標當前行及其下n行的內容保存到寄存器?中,其中?為一個字母,n為一個數字
  ?nyw   將光標當前行及其下n個詞保存到寄存器?中,其中?為一個字母,n為一個數字
  ?nyl   將光標當前行及其下n個字符保存到寄存器?中,其中?為一個字母,n為一個數字
  ?p     將寄存器?中的內容粘貼到光標位置之後。如果?是用yy復制的完整行,
         則粘貼在光標所在行下面。這裏?可以是一個字母,也可以是一個數字 
  ?P     將寄存器a中的內容粘貼到光標位置之前。如果?是用yy復制的完整行,
         則粘貼在光標所在行上面。這裏?可以是一個字母,也可以是一個數字 
  ay[motion]
            ay$    復制光標位置到行末並保存在寄存器a中
            ayft   復制光標位置到當前行第一個字母t並保存在寄存器a中

以上指令皆可去掉a工作,則y,p對未命名寄存器工作(所有d,c,x,y的對象都被保存在這裏)。

剪切/復制/粘貼

所有刪除的內容自動被保存,可以用p鍵粘貼

Vi的選項設置

all         列出所有選項設置情況
term        設置終端類型
ignorance   在搜索中忽略大小寫
list        顯示制表位(Ctrl+I)和行尾標誌($)
number      顯示行號
report      顯示由面向行的命令修改過的數目
terse       顯示簡短的警告信息
warn        在轉到別的文件時若沒保存當前文件則顯示NO write信息
nomagic     允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan  禁止vi在搜索到達文件兩端時,又從另一端開始
mesg        允許vi顯示其他用戶用write寫到自己終端上的信息 

tips

對代碼自動格式化 gg=G

在vi/vim中,跳到文件首尾快捷鍵:

文件開始:shift + g

文件結束:g g

from:http://dsec.pku.edu.cn/~jinlong/vi/Vi.html

from:http://www.caole.net/diary/vim.html#sec-1

vi / vim 刪除以及其它命令