vi/vim常用命令 zz

http://blog.sina.com.cn/s/blog_492101c70100o10c.html

最近整理的vi/vim常用命令,有需要的童鞋拿去用吧

(本來是在excel中的,但是沒有地方上傳,所以就直接貼過來了。)

正常模式   命令行模式(需回車確認)   其他
操作 功能 同義 示例/變種   操作 功能 同義 示例/變種   操作 功能
移動光標   文件操作   命令行
w 到下一個單詞的第一個字符處,標點符號也算一個單詞       :q 不保存並退出       set -o editor 按<Esc>後在命令行使用指定的編輯器模式,如set -o vi
W 到下一段單詞的第一個字符處,標點符號不算單詞       :q! 並保持並強制退出       vi file 打開文件,並定位於第一行
b 到上一個單詞的第一個字符處,標點符號也算一個單詞       :w 保存修改       vi +n file 打開文件,並定位於第n行
B 到上一段單詞的第一個字符處,標點符號不算單詞       :w! 保存修改;若有重名則覆蓋       vi + file 打開文件,並定位於最後一行
e 到下一個單詞的最後一個字符處,標點符號也算一個單詞       :wq 保存並退出 ZZ
:x
    vi -R file 以只讀模式打開文件
E 到下一個單詞的最後一個字符處,標點符號不算單詞       :m,nw file 把m行到n行寫入一個文件   :1,10w tmp   vi -r file 打開上次vi時系統崩潰的文件。
h 向左       :e file 讀入文件;若不存在則創建       vi *.txt 打開多個文件(多文件編輯)
l 向右 <SP>     :e! 丟棄修改,並重新載入文件       多文件編輯
j 向下       文本編輯   :n 打開下一個文件
k 向上       :%!xxd 以十六進制查看       :e# 打開上一個文件
0 到行首       :%!xxd -r 從十六進制返回       <C-S-6> 打開上一個文件
^ 到行內非空格的第一個字符       :n1,n2 co n3 將n1行到n2行之間的內容拷貝到第n3 行下。       :argdo %s/pat1/pat2/ge | update 在所有打開的文件中把str1替換成str2
$ 到行尾       :n1,n2 m n3 將n1行到n2行之間的內容移動到第n3 行下。       列模式
+ 到下一行的非空白處 <CR>     :r! cmd 將cmd的輸出插入到當前行   :r! date
:r! cat tmp
  <C-v> 切換到列模式
- 到上一行的非空白處       :nr         <Esc> 退出列模式
) 到下一句首       :set cursorline 高亮當前行       nk,nl..  
( 到上一句首       :set cursorcolumn 高亮當前列       c,I,a,d..  
} 到下一段首       替換   宏操作
{ 到上一段首       :s/pat1/pat2 用pat2替換當前行中與pat1匹配的每個內容,需要確認       1.使用命令qa(其中的a爲寄存器名,可自由指定),將結果保存至寄存器a中,其中a可爲從a到z的任意字母
2. 輸入需要執行的命令
3. 鍵入q,結束操作的錄製
4. 輸入@a,這裏的a爲第一步中指定的寄存器名,執行先前錄製的操作,我們可以在@a前加數字,例如4@a等。
]] 到下一個章節/函數       :%s/pat1/pat2 用pat2替換整個文件中與pat1匹配的每個內容      
[[ 到上一個章節/函數       :s/pat1/pat2/g 用pat2替換當前行中與pat1匹配的每個內容,不需要確認      
nG 到第n行 :n 1G   :%s/pat1/pat2/g 用pat2替換整個文件中與pat1匹配的每個內容,不需要確認      
gg 到第一行 1G
:1
    :m,ns/pat1/pat2/g 用pat2替換m行到n行中與pat1匹配的每個內容,不需要確認       其他
G 到文檔底部       :m,ns/^/#/g 在m行到n行的行首添加字符#       功能 操作
<C-g> 顯示行號等信息       :m,ns/^#//g 刪除m行到n行行首的字符#       在行首插入行號 g/^/exec"s/^/".strpart(line(".")."", 0, 4)
mx 用字符x標記當前位置   mk   :g/^$/d 刪除所有空行       複製m到n行的內容到寄存器a 1. 定位到第m行並按下mk
2. 定位到第n行並按下"ay'k
`x 定位到字符x標記的位置       :%s/<C-v><C-CR>//g 刪除^M       運行TMS result script進行TMS update :!tmsrun -S %
'x 定位到字符x標記的位置行首       :ab str1 str2 在鍵入str1並按<Esc>後把str1替換成str2       列出當前文件中所有的DNSlog :!grep ADNS %
'' 定位到上一個標記位置       系統   列出當前文件中所有的REGISTER :!cgrep -R "\[REGISTER " % |less
·. 定位到上一次修改點       :h cmd 查看cmd的幫助          
‘. 定位到上一次修改行       :!cmd 執行命令cmd   :!sort      
TAB   :sh 打開shell並運行命令,exit返回          
<< 當前行左移一個TAB   n<<   :n 定位到第n行   :1      
>> 當前行右移一個TAB   n>>   :reg 查看所有寄存器          
:m,n> m行到n行右移一個TAB   :1,10>   :set all 查看set所有子命令          
屏幕操作   :set nu 顯示行號          
H 到屏幕的第一行       :set nonu 不顯示行號          
M 到屏幕的中間行       :set ai 自動縮進          
L 到屏幕的最後一行       :set ic 忽略大小寫          
z<CR> 將光標所在的那一行移至屏幕頂部       :set so=n 總是保持上下n行   :set so=4      
z- 將光標所在的那一行移至屏幕底部       :nmap key1 key2 把key1映射成key2   :nmap <F9><C-w>w      
z. 將光標所在的那一行移至屏幕中部   zn.   :his 歷史命令          
/pat/z- 將pattern行移至屏幕底部   /ERROR/z-   多窗口/文件操作      
<C-f> 向下滾動一屏       :sp file 分割出一個橫向窗口並打開文件          
<C-b> 向上滾動一屏       :vsp file 分割出一個縱向窗口並打開文件          
<C-d> 向下滾動半屏       :S 在另外一個窗口中打開當前文件          
<C-u> 向上滾動半屏       <C-w>w 在所有窗口間切換          
<C-e> 向下滾屏一行       <C-w>p 在最近兩個窗口間切換          
<C-y> 向上滾屏一行       <C-w>h 移到左面的窗口          
<C-R> 刷新屏幕       <C-w>l 移到右面的窗口          
編輯文本-插入   <C-w>j 移到下面的窗口          
a 從當前光標所在的位置的下一個字符開始輸入       <C-w>k 移到上面的窗口          
A 從當前行尾開始輸入       <C-w>+ 擴大當前窗口          
i 從當前光標所在的位置開始輸入       <C-w>- 縮小當前窗口          
I 從當前行首開始輸入       <C-w>= 使窗口大小一致          
o 在當前行的下一行增加一個新行,並定位到新行的行首       <C-w><C-r> 交換兩個窗口位置          
O 在當前行的上一行增加一個新行,並定位到新行的行首       :ls 列出vim當前打開的所有文件          
<C-h> 插入模式下退格       :b number 在當前窗口打開ls出的指定文件          
<C-w> 插入模式下刪除最後一個單詞       :set diff 比較用vsp打開的並列的文件          
<C-d> 插入模式下將當前行向左縮進一個TAB       :q 關閉當前窗口          
編輯文本-複製,粘貼          
y 複製當前字符   :m,ny
:m,y
:,ny
               
yy 複製當前行   nyy                
yw 複製光標所在位置到整個單詞結束的字符   nyw                
"ayy 把當前行內容複製到a寄存器                    
"Ayy 把當前行內容追加到a寄存器                    
p 粘貼(複製或刪除的內容)                    
”ap 粘貼a寄存器中的內容                    
編輯文本-刪除/剪切                
d 刪除   nd
d),d(,d},d{
               
d← 刪除光標前的字符                    
d→ 刪除光標處的字符                    
d↑ 刪除當前行以及上一行                    
d↓ 刪除當前行以及下一行                    
d0 刪除至行首                    
d$ 刪除至行尾 D                  
D 刪除至行尾 d$                  
dG 刪除至文檔尾                    
dd 刪除當前行   ndd                
ddp 交換上下兩行                    
dw 刪除至當前單詞尾   ndw                
“add 刪除當前行,並把內容放到a寄存器                    
x 刪除光標所在位置的字符   nx                
xp 交換前後兩個字符                    
X 刪除光標所在位置的前一個字符 d← nX                
編輯文本-替換                
r 更改當前字符,並保持在正常模式                    
R 連續替換當前光標下的字符,按<Esc>結束                    
c 替換                    
C 替換當前行後面的部分 Da                  
cc 替換當前行 S
ddO
                 
cw 替換當前單詞                    
s 替換當前字符並進入插入模式,按<Esc>結束                    
S 替換當前行 cc                  
~ 更改當前字符的大小寫                    
guw 單詞小寫                    
gUw 單詞大寫                    
g~w 單詞大小寫反轉                    
guu 把當前行小寫                    
gUU 把當前行大寫                    
g~~ 把當前行大小寫反轉                    
J 將當前行和前一行連接起來,並刪除因此而來的空行                    
編輯文本-查找                
/pat 向前查找pattern   /ERROR                
/pat/+n 定位到pattern後的第n行   /ERROR/+3                
?pat 向後查找pattern                    
?pat?-n 定位到pattern前的第n行                    
n 繼續向前查找                    
N 繼續向後查找                    
* 向下查找當前的單詞。與n/N搭配使用。                    
# 向上查找當前的單詞。與n/N搭配使用。                    
g* 向下查找當前的單詞,不完全匹配。與n/N搭配使用。                    
g# 向上查找當前的單詞,不完全匹配。與n/N搭配使用。                    
gd 查找當前的單詞,並定位在非註釋段中第一次出現該單詞的地方                    
fx 向右定位到字符x   f0                
Fx 向左定位到字符x                    
tx 向右定位到字符x前                    
Tx 向左定位到字符x後                    
; 繼續向下找,與f/F結合使用                    
, 繼續向上找,與f/F結合使用                    
定位到上一個標記處,與g/*結合使用                    
% 定位到匹配的括號   d%                
編輯文本-還原                
u 還原上次操作                    
U 還原當前行                    
<C-r> 恢復被u撤銷的操作                    
補齊                
<C-n> 插入模式下向下搜索補齊當前輸入                    
<C-p> 插入模式下向上搜索補齊當前輸入                    
<C-x><C-l> 補齊整行,在當前窗口中搜索                    
<C-x><C-f> 自動補齊,在當前目錄下的文件名中搜索                    
<C-x><C-k> 使用字典文件進行自動補齊。
前提是在~/.vimrc中進行如下設置:
set dictionary+=/usr/share/dict/words
發佈了7 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章