VIM跳轉技巧


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

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

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

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


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



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


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


另外看文件時 除了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
#
復制刪除粘貼的操作:按Vshift+v),進入可視模式,jk上下選擇需要的行,然后按
y
復制
d
刪除
x
剪切
p
粘貼
可視模式很好用,例如想把兩行的所有單詞變成小寫,按V然后按jk選中這兩行,按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跳轉到第一個打開的文件


免責聲明!

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



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