Gvim快捷鍵學習


快捷鍵學習1
vim快捷鍵
在vim下可以使用常用的箭頭鍵 
但是 還有其它鍵可以讓你更快的達到目標

hjkl 這是代替箭頭鍵功能的 
H M L 跳到屏幕的頂上 中間 下方 

w 跳到下一個單詞的開始
e 跳到單詞的結束
b 向后跳

gg 跳到文件的開始 
G 跳到文件的結束 
10gg 或10G 跳到第10行 


ta 跳到下一個a 前面
fa 跳到下一個a 
大寫的意思相反



另外還有%(跳到文件的%多少) 和|(跳到第幾列) 不過我很少用 


上面的都可以加上數字前綴 表示第幾個匹配 


另外看文件時 除了pageup pagedown外還有其它的快速鍵 
如CTRL-F 向前一頁 CTRL-B 向后一頁 

上面不是重要的 
CTRL-D 向下半頁 CTRL-U 向上半頁我覺得更實用 這樣看文章時就不會跳轉出錯
另外還有
CTRL-E 向下一行
CTRL-Y 向上一行


^ 行首 
$行尾
0 第一個字符


另外上面也作為vim其它命令的定位符 如刪除d

dt)
一直刪除到這行的) 

另外 懂了跳轉鍵后 那刪除或是復制時就不再是以行為單位了 可以指定到某個條件 
我覺得這是新手成長的必要方法


另外還有ctrl-t ctrl-i ctrl-]

如果已經使用了ctags 或是cscope創建索引文件的話 那看代碼時很是方便 
跳轉到函數、變量定義處:
[+ctrl+i 跳轉到函數、變量和#define
[+ctrl+d 跳轉到#define處
ctrl+i 向前跳到前幾次光標位置
ctrl+o 向后跳到后幾次光標位置
函數體跳轉:
[[
]]
[]
][
{}
2009-07-07 17:31 補充
如何選中括號中的內容 進行:
將光標移至括號內,按shift+v進入行選模式,然后
i{ - 選小括號中內容,不包括小括號
a{ - 選小括號中內容,包括小括號
ib - 選中括號中內容,不包括括號
ab - 選中括號中內容,包括括號
i{ - 選大括號中內容,不包括大括號
a{ - 選大括號中內容,包括大括號
:h text-objects
下面還有些相關的tips,未全部驗證:
vi{ 選中{}中間的內容,不包括{}
va{ 選中{}中間內容,包括{}
vi( 選中()中間內容
vi< 選中<>中間內容
vi[ 選中[]中間內容
vit 選中中間的內容
vi” 選中”"中間內容
vi’ 選中”中間的內容
vis 選中一個句子
vib 選中一個block
viw選中一個單詞
vip 選中一個段落 
在normal模式下光標停在某個字符上ga可以查看該字符的ascii碼
#復制刪除粘貼的操作:按V(shift+v),進入可視模式,jk上下選擇需要的行,然后按
y 復制
d 刪除
x 剪切
p 粘貼
可視模式很好用,例如想把兩行的所有單詞變成小寫,按V然后按j或k選中這兩行,按gu即可
#跳到行首按0,但實際更好用的是^, 跳到行首非空白字符
#折行前空出4字符顯示折行標識
set foldcolumn=4
#折疊或展開(在折疊的那一行左右移動光標也可展開折疊)
za
#刪除光標所在行所處的范圍的折疊
zd
#當在:set foldmethod=marker后,折行會把{{{和}}}之間的內容折疊
#不在單詞中間斷行。 設置了這個選項后, 如果一行文字非常長, 無法在一行內顯示完的話,
它會在單詞與單詞間的空白處斷開, 盡量不會把一個單詞分成兩截放在兩個不同的行里。
set lbr
#sw是shiftwidth的縮寫,表縮進列數
fx把光標移動到該行的下個x字符上,這個x也可以是一個漢字,;重復fx操作。Fx把光標移動到該行的上一個x字符上。
gg光標定位到第一行開頭,G定位到最后一行開頭
H光標跳到當前窗口顯示文本的第一行
M光標跳到當前窗口顯示文本的中間一行
L光標跳到當前窗口顯示文本的最后一行
g*查找包含當前單詞的所有單詞(*只查找與當前單詞精確匹配的單詞),
-d光標下跳半屏,文本上滾半屏
-u光標上跳半屏,文本下滾半屏
-e文本向上滾動一行
zz屏幕滾動使得當前行成為屏幕的中間一行
normal模式下按J刪除此行末尾的換行符,從而合並兩行
:e!重新讀進上次保存的此文件內容
:ab myname william_djj
以后再編輯時鍵入myname,然后空格或回車myname串就會被william_djj代替
:r !date
在當前位置插入系統時間(linux下的date命令),同理當前位置插入某文件的內容就是
:r filename
:set ignorecase
查找時取消case sensitive
:set noignorecase
查找時case sensitive
############ 使用tags ###################
以下命令遞歸當前目錄下的所有文件創建tags文件
ctags -R .
vim打開當前目錄下的任意一文件,命令模式下鍵入下面語句以指定剛才創建的tags的位置,以后就可以在不同文件間查閱函數
set tags=..\tags
#分割窗口顯示當前函數的定義
-w ]
##########################################
如果插件目錄下有echofunc.vim,用以下命令生成tags,以后編輯代碼函數名后打“(“時有參數提示。
$ ctags -R –fields=+lS .
:Tlist打開左邊一個taglist的窗口,顯示symbols。要注意的是在windows下如果tags文件路徑中有空格或中文會報找不到tags文件的錯誤,
+w+w 或者+w+left/right 窗口切換
+] 進入光標所指的symbol的定義(如果用鼠標也是+鼠標左鍵,跟SI的用法一樣)
+t 返回第一個用+t 跳轉位置,注意+o是跳回上一個視圖,而+t是跳回上一次按+]的位置
#以下命令分裂出一個窗口顯示定義處
ptag 函數名
#以下命令關閉剛才打開的分裂窗口
pclose
#垂直分裂窗口打開一文件
vsplit 文件名
#水平分裂窗口打開一文件
split 文件名
變量名寫成\name表示匹配模式
停在某個括號上按%,跳到匹配的括號處,#if跳到匹配的#else或#endif處
set fdm=syntax折疊函數體
雙擊]往后逐個函數跳讀,雙擊[往前逐個函數跳讀
#解決亂碼
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
#在vim下對比兩個文件,原來打開了fnpro.c,現在和fnpro.c.bak對比
#垂直分割
:vert diffsplit fnpro.c.bak
#水平分割
:diffsplit fnpro.c.bak
#跳到下一個不同之處
:]c
#跳到上一個不同之處
:[c
#展開折疊:zo
#折疊:zc
#不論何種情況下-o都可以上一次跳轉的地方
#查看變量和函數的申明
[i
#以下為查看vim環境參數makeprg的值的例子:
:set makeprg?
#重新對文件代碼進行縮進
gg=G
跳轉到函數、變量定義處:
[+ctrl+i 跳轉到函數、變量和#define
[+ctrl+d 跳轉到#define處
ctrl+i 向前跳到前幾次光標位置
ctrl+o 向后跳到后幾次光標位置
函數體跳轉:
[[
]]
[]
][
{}
2009-07-07 17:31 補充
如何選中括號中的內容 進行:
將光標移至括號內,按shift+v進入行選模式,然后
i{ - 選小括號中內容,不包括小括號
a{ - 選小括號中內容,包括小括號
ib - 選中括號中內容,不包括括號
ab - 選中括號中內容,包括括號
i{ - 選大括號中內容,不包括大括號
a{ - 選大括號中內容,包括大括號
:h text-objects
下面還有些相關的tips,未全部驗證:
vi{ 選中{}中間的內容,不包括{}
va{ 選中{}中間內容,包括{}
vi( 選中()中間內容
vi< 選中<>中間內容
vi[ 選中[]中間內容
vit 選中中間的內容
vi” 選中”"中間內容
vi’ 選中”中間的內容
vis 選中一個句子
vib 選中一個block
viw選中一個單詞
vip 選中一個段落 
vim文件跳轉
如果使用vim打開了多個文件,如vim file1 file2 ... fileN
可以通過
:n 或 :prev來跳轉到前一個或者后一個文件
還可以通過
:first或:last來跳轉到第一個和最后一個文件

如果你只打開一個文件,如vim file1
然后在使用過程中,通過
:e file2編輯了第二個文件,這時, :prev是不起作用的
可以用
:e#返回上一個編輯的文件

無論哪兩種方式都可以用
:bN跳轉到打開的第N個文件
如:b1跳轉到第一個打開的文件
View Code

快捷鍵學習2

一、移動光標
1、左移h、右移l、下移j、上移k
2、向下翻頁ctrl + f,向上翻頁ctrl + b
3、向下翻半頁ctrl + d,向上翻半頁ctrl + u
4、移動到行尾$,移動到行首0(數字),移動到行首第一個字符處^
5、移動光標到下一個句子 ),移動光標到上一個句子(
6、移動到段首{,移動到段尾}
7、移動到下一個詞w,移動到上一個詞b
8、移動到文檔開始gg,移動到文檔結束G
9、移動到匹配的{}.().[]處%
10、跳到第n行 ngg 或 nG 或 :n
11、移動光標到屏幕頂端H,移動到屏幕中間M,移動到底部L
12、讀取當前字符,並移動到本屏幕內下一次出現的地方 *
13、讀取當前字符,並移動到本屏幕內上一次出現的地方 #

二、查找替換
1、光標向后查找關鍵字 #或者g#
2、光標向前查找關鍵字 *或者g*
3、當前行查找字符 fx, Fx, tx, Tx
4、基本替換 :s/s1/s2 (將下一個s1替換為s2)
5、全部替換 :%s/s1/s2
6、只替換當前行 :s/s1/s2/g
7、替換某些行 :n1,n2 s/s1/s2/g
8、搜索模式為 /string,搜索下一處為n,搜索上一處為N
9、制定書簽 mx, 但是看不到書簽標記,而且只能用小寫字母
10、移動到某標簽處 `x,1旁邊的鍵
11、移動到上次編輯文件的位置 `.

PS:.代表一個任意字符 *代表一個或多個字符的重復
         正則表達式的內容將會在后續文章中整理

三、編輯操作
1、光標后插入a, 行尾插入A
2、后插一行插入o,前插一行插入O
3、刪除字符插入s, 刪除正行插入S
4、光標前插入i,行首插入I
5、刪除一行dd,刪除后進入插入模式cc或者S
6、刪除一個單詞dw,刪除一個單詞進入插入模式cw
7、刪除一個字符x或者dl,刪除一個字符進入插入模式s或者cl
8、粘貼p,交換兩個字符xp,交換兩行ddp
9、復制y,復制一行yy
10、撤銷u,重做ctrl + r,重復.
11、智能提示 ctrl + n 或者 ctrl + p
12、刪除motion跨過的字符,刪除並進入插入模式 c{motion}
13、刪除到下一個字符跨過的字符,刪除並進入插入模式,不包括x字符 ctx
14、刪除當前字符到下一個字符處的所有字符,並進入插入模式,包括x字符,cfx
15、刪除motion跨過的字符,刪除但不進入插入模式 d{motion}
16、刪除motion跨過的字符,刪除但不進入插入模式,不包括x字符 dtx
17、刪除當前字符到下一個字符處的所有字符,包括x字符 dfx
18、如果只是復制的情況時,將12-17條中的c或d改為y
19、刪除到行尾可以使用D或C
20、拷貝當前行 yy或者Y
21、刪除當前字符 x
22、粘貼 p
23、可以使用多重剪切板,查看狀態使用:reg,使用剪切板使用”,例如復制到w寄存器,”wyy,或者使用可視模式v”wy
24、重復執行上一個作用使用.
25、使用數字可以跨過n個區域,如y3x,會拷貝光標到第三個x之間的區域,3j向下移動3行
26、在編寫代碼的時候可以使用]p粘貼,這樣可以自動進行代碼縮進
27、 >> 縮進所有選擇的代碼
28、 << 反縮進所有選擇的代碼
29、gd 移動到光標所處的函數或變量的定義處
30、K 在man里搜索光標所在的詞
31、合並兩行 J
32、若不想保存文件,而重新打開 :e!
33、若想打開新文件 :e filename,然后使用ctrl + ^進行文件切換
四、窗口操作
1、分隔一個窗口:split或者:vsplit
2、創建一個窗口:new或者:vnew
3、在新窗口打開文件:sf {filename}
4、關閉當前窗口:close
5、僅保留當前窗口:only
6、到左邊窗口 ctrl + w, h
7、到右邊窗口 ctrl + w, l
8、到上邊窗口 ctrl + w, k
9、到下邊窗口 ctrl + w, j
10、到頂部窗口 ctrl + w, t
11、到底部窗口 ctrl + w, b

五、宏操作
1、開始記錄宏操作q[a-z],按q結束,保存操作到寄存器[a-z]中
2、@[a-z]執行寄存器[a-z]中的操作
3、@@執行最近一次記錄的宏操作

六、可視操作
1、進入塊可視模式 ctrl + v
2、進入字符可視模式 v
3、進入行可視模式 V
4、刪除選定的塊 d
5、刪除選定的塊然后進入插入模式 c
6、在選中的塊同是插入相同的字符 I<String>ESC

七、跳到聲明
1、[[ 向前跳到頂格第一個{  
2、[] 向前跳到頂格第一個}
3、]] 向后跳到頂格的第一個{
4、]] 向后跳到頂格的第一個}
5、[{ 跳到本代碼塊的開頭
6、]} 跳到本代碼塊的結尾

八、掛起操作
1、掛起Vim ctrl + z 或者 :suspend
2、查看任務 在shell中輸入 jobs
3、恢復任務 fg [job number](將后台程序放到前台)或者 bg [job number](將前台程序放到后台)
4、執行shell命令 :!command
5、開啟shell命令 :shell,退出該shell exit
6、保存vim狀態 :mksession name.vim
7、恢復vim狀態 :source name.vim
8、啟動vim時恢復狀態 vim -S name.vim

 

DrawIt.vim 快捷鍵學習

Supported Features 
   <left>       move and draw left 
   <right>      move and draw right, inserting lines/space as needed 
   <up>         move and draw up, inserting lines/space as needed 
   <down>       move and draw down, inserting lines/space as needed 
   <s-left>     move left 
   <s-right>    move right, inserting lines/space as needed 
   <s-up>       move up, inserting lines/space as needed 
   <s-down>     move down, inserting lines/space as needed 
   <space>      toggle into and out of erase mode 
   >            draw -> arrow 
   <            draw <- arrow 
   ^            draw ^  arrow 
   v            draw v  arrow 
   <pgdn>       replace with a \, move down and right, and insert a \ 
   <end>        replace with a /, move down and left,  and insert a / 
   <pgup>       replace with a /, move up   and right, and insert a / 
   <home>       replace with a \, move up   and left,  and insert a \ 
   \>           draw fat -> arrow 
   \<           draw fat <- arrow 
   \^           draw fat ^  arrow 
   \v           draw fat v  arrow 
   \a           draw arrow based on corners of visual-block 
   \b           draw box using visual-block selected region 
   \e           draw an ellipse inside visual-block 
   \f           fill a figure with some character 
   \h           create a canvas for \a \b \e \l 
   \l           draw line based on corners of visual block 
   \s           adds spaces to canvas 
   <leftmouse>  select visual block 
<s-leftmouse>  drag and draw with current brush (register) 
   \ra ... \rz  replace text with given brush/register 
   \pa ...      like \ra ... \rz, except that blanks are considered 
                to be transparent 

 

 

 

Gvim 刪除命令

刪除沒有內容的空行
g/^$/d
刪除包含有空格組成的空行
g/^\s*$/d
以空格或tab開頭到結尾的空行
g/^[ |\t]*$/d



:%s/r//g 刪除DOS方式的回車^M
:%s= *$== 刪除行尾空白

:%s/^(.*)n1/1$/ 刪除重復行

:%s/^.{-}pdf/new.pdf/ 只是刪除第一個pdf

:%s/<!--_.{-}-->// 又是刪除多行注釋(咦?為什么要說「又」呢?)

:g/s*^$/d 刪除所有空行 :這個好用有沒有人用過還有其他的方法嗎?
:g!/^dd/d 刪除不含字符串'dd'的行
:v/^dd/d 同上 (譯釋:v == g!,就是不匹配!)

:g/str1/,/str2/d 刪除所有第一個含str1到第一個含str2之間的行


:v/./.,/./-1join 壓縮空行
:g/^$/,/./-j 壓縮空行

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 刪除直到工作緩存區開始的內容

  

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM