vim初步知識的學習

都說vim跟emacs是編輯器之神,一直很想學習,所以這幾天就看起了它的中文幫助文檔。

同樣想學習的朋友可以到它官網下載:VIM中文幫助文檔

下載好後安裝,怎麼安裝它裏面有說明。然後就可以在vim裏面輸入":help user-manual@cn"查看它的中文用戶手冊,慢慢開始學習吧~

 

下面是我最近學習的筆記,貼在這裏,自己忘了也方便查看:

建立自己的配置文件:

!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc

建立完以後檢查下是否以非vi兼容模式啓動,在vim中輸入:

:set compatible?

如果顯示:nocompatible則表示成功了。

可以輸入:":scriptnames"查看到VIM所有配置文件的位置。

要編輯你的配置文件可以輸入:":edit $MYVIMRC"

具體怎麼配置還是看用戶手冊吧。

 

一些基本的設置類命令(括號內爲縮寫):

查找時的一些命令:

:set ignorecase(ic)忽略大小寫
:set noignorecase(noic)關閉忽略大小寫
:set hlsearch(hls)設置高亮匹配
:set nohlsearch(nohls)關閉高亮匹配(臨時關閉,下次查找又自動開啓高亮匹配了)
:set incsearch(is)輸入字符串的過程就顯示匹配點
:set nowrapscan(nows)關閉查找到結尾後回到文件開頭繼續查找
:set wrapscan(ws)開啓查找到結尾後回到文件開頭繼續查找(系統默認開啓)

:set number(nu)設置行號
:set nonumber(nonu)關閉設置行號
:set ruler(ru)右下角設置顯示光標位置
:set noruler(noru)關閉右下角設置顯示光標位置
:set autoindent(ai)自動縮進

:syntax on/off開啓/關閉語法高亮

一些對文件的操作命令:

:e xxx.cpp編輯xxx.cpp文件(沒有這個文件就會新建一個)

:w寫入

:3,6 w filename    3-6行保存爲filename

:r tmp.cpp讀入tmp.cpp文件

:q退出窗口

可以對上面的命令加“!”,進行強制操作。比如:"q!"強制退出。

對光標的操作:

h,j,k,l方向鍵

$光標移動到行尾
0光標移動到行首
^光標移動到該行第一個字符
%光標移動到匹配(可用'matchpairs'選項定義)
w移動到下一個單詞詞首
b移動到前一個單詞詞首
e移動到下一個單詞詞尾
ge移動到前一個單詞詞尾
fx移動到下一個x處
Fx移動到前一個x處
33G移動到33行(你使用G跳轉,這個位置會成爲一個標記,要回到原地,按兩下``或'',如果再按兩下,就又回去了。查找也算一次跳轉,也會標記位置,可以用Ctrl+O,Ctrl+I跳轉。)
G移動到文件末
gg移動到文件首
30%移動到文件30%處
H、M、L移動到屏幕的頂、中、底部

 

Ctrl+U向上滾動半屏
Ctrl+D向下滾動半屏
Ctrl+E向上滾動一行
Ctrl+Y向下滾動一行
Ctrl+F向前滾動一屏
Ctrl+B向後滾動一屏
Ctrl+O跳到較老的地方
Ctrl+I跳到較新的地方
zz光標所在行處於屏幕中間
zt光標所在行處於屏幕頂部
zb光標所在行處於屏幕底部

 

ma用a標記當前光標位置(可以使用a到z,26個標記)
`a移到標記a的位置
'a移到標記a的行首
:marks查看所有的標記列表,你會看到一些特殊的標記:
    '跳轉前的光標位置
    "最後編輯的光標位置
    [最後修改的開始位置
    ]最後修改的結束位置

一些操作類命令:

a光標後面插入
A行尾插入
i光標前面插入
I行首插入
o下面新行插入
O上面新行插入
r替換一個字符
R替換多個字符

x刪除光標處的一個字符

X刪除光標前的一個字符

dw刪除一個單詞(包括後面的空格)
de刪除一個單詞(不包括後面的空格)
dd刪除整行

s刪除光標處的字符,並進入輸入模式

S相當於下面的cc

cc修改整行
J連接兩行(刪除光標所在行的換行符)
p插入在光標後
P插入在光標前
y拷貝
yy拷貝整行
Y拷貝整行(D是d$注意區別)
~改變大小寫

 

其實,有些命令是一樣含義的,如:

x 表示 dl
X 表示 dh
D 表示 d$
C 表示 c$
s 表示 cl
S 表示 cc

一些重複的命令:

;重複命令(如:fx後再按';'則會自動查找下一個x)
,反向重複
.重複一個修改(重複任何除'u','Ctrl+R'和冒號命令外的修改)
舉例:To <b>generate</b> a table of contents.
要刪除<b></b>標籤, "f<","df>",";","."
舉例:把"four"修改成"five"。
"/four","cwfive","n","."……

 

查找替換:

/abc    搜索    下一個n    上一個Shift+N
?abc    逆向搜索

:s/thee/the    替換光標所在行第一個匹配串
:s/thee/the/g    替換光標所在行所有匹配串
:3,6s/old/new/g    替換3-6行所有匹配串
:%s/old/new/g    全文替換匹配串
:%s/old/new/gc    替換時詢問
查找時字符:.*[]^%//?~$擁有特殊含義,查找它們時要加'/',就是轉義字符咯。
如果再使用以前查找過的單詞,可以輸入"/o<UP>",vim自動顯示old
*取得光標上的單詞並作爲被查找的字符串
3*查找光標下單詞第三次出現的地方
#反向完成相同的功能

如有:soothe、the、there幾個單詞
//<the/>查找the
/the/>查找the,soothe
//<the查找the,there

窗口和標籤的一些操作:

:split分割窗口
:split tmp.cpp用tmp.cpp分割窗口
:new開新窗口
:{height}Ctrl-W +/-調整窗口大小
:vsplit垂直分割
:vnew
:Ctrl-WW窗口間切換
:Ctrl-Wh/j/k/l/t/b
:Ctrl-W K/J/H/L大寫,調換窗口
:qall/:wall/:wqall/:qall!對所有窗口操作
:tabedit tmp.cpp建立新標籤頁編輯文件
:tab split
:tabnew
:gt切換標籤頁

記錄與回放命令:

這個是直接從用戶手冊裏面拷貝的,感覺這個太有用了:

"." 命令重複前一個修改操作。但如果你需要作一些更復雜的操作它就不行了。這時,記
錄命令就變得很有效。這需要三個步驟:

1. "q{register}" 命令啓動一次擊鍵記錄,結果保存到 {register} 指定的寄存器中。
   寄存器名可以用 a 到 z 中任一個字母表示。
2. 輸入你的命令。
3. 鍵入 q (後面不用跟任何字符) 命令結束記錄。

現在,你可以用 "@{register}" 命令執行這個宏。

現在看看你可以怎麼用這些命令。假設你有如下文件名列表:

    stdio.h ~
    fcntl.h ~
    unistd.h ~
    stdlib.h ~

    而你想把它變成這樣:

    #include "stdio.h" ~
    #include "fcntl.h" ~
    #include "unistd.h" ~
    #include "stdlib.h" ~

先移動到第一行,接着執行如下命令:

    qa            啓動記錄,並使用寄存器 a
    ^            移到行首
    i#include "<Esc>    在行首輸入 #include "
    $            移到行末
    a"<Esc>            在行末加上雙引號 (")
    j            移到下一行
    q            結束記錄

現在,你已經完成一次複雜的修改了。你可以通過重複三次 "@a" 完成餘下的修改。

"@a" 命令可以通過計數前綴修飾,使操作重複指定的次數。在本例中,你可以輸入:
>
    3@a

簡單的鍵盤映射:

如:把"amout"變成"{amout}"設置成F5鍵,最好定義成'/'加一個字母,以免與vim自身命令衝突。
:map <F5> i{<Esc>ea}<Esc>

另外學到的一些命令:

Ctrl+g    顯示文檔信息
Shift+G   434Shift+G    跳轉

:jumps輸出你可以跳往的位置的列表。最後一個你使用的標記會用">"符號標記出來。

v啓動可視模式
Ctrl+v可以選擇列的可視模式
可視模式下切換光標o、O

 

 

繼續學習中……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章