linux vim 使用詳解


vi vim 使用
vim 編輯器

首先簡單的說一下vi編輯器──unix的通用編輯器,
讀作vee-eye (visual editor的簡寫)。
(這裏的vim,是改進的vi, Vi Improved簡寫,Vim 由Bram Moolenaar編寫)
vi的工作模式
分爲命令模式和插入模式 以及 : ex模式;
按esc鍵就可以讓vi進入命令模式;
插入模式就是你輸入文本的模式了。

vi的一些簡單操作:
普通操作:
插入文本
命令 i 、a、I、A、o、O
i 進入命令模式輸入 i ,這時候就是和普通的文本編輯器一般了;
a 或者 輸入 a ,不同的是,a是在字符的後面插入追加文本,而i在字符的前面插入;
I 行首插入;
A 行尾插入。
o 光標下新建空行
O 光標上新建空行
修改刪除文本
命令 c、x、d、D
cw 刪除當前位置到該位置單詞的末尾,外加插入文本; cw刪除的是英文單詞,中文不行的。
c$ or C 刪除當前位置到行末,外加插入文本。
x 只刪除當前字符 如果要刪一箇中文字的話請用 2x (當然也可以用4x 8x) 因爲一個漢字佔兩個字符。
cc 刪除一行,外加可以插入文本。
r 刪除當前字符,外加可以插入文本。
dw 只刪除當前位置到這個單詞末。
[n]dd 刪除[n]一行。 當然可以用 2dd 3dd 刪除兩行,三行。
D 刪除到行尾。

粘貼,複製,合併
命令 p、y、J、"(引號)
p 當你執行上面的刪除操作後,你所刪除的文本會留在緩存中,當你輸入 p 後會把這些刪除的文本粘貼到當前光標後面。
y 組合有(yw,4yy,y$等) //複製單詞,複製四行,複製到行末 複製後可用p進行粘貼
J 把下一行合併到當前行,注意J大寫
"[x]yy 命名你的緩衝區 在複製命令前加上冒號和名稱(a到z) 例如 "ryy "d2dd "zd)複製一行到r緩衝區,刪除2行到d緩衝區,刪除光標到句尾到z緩衝區。
"[x]p 粘貼x緩衝區到當前位置後。
默認有1~9緩衝區 爲前9次刪除操作。
可視操作
命令 v、V、Ctrl+v

當用gvim可以用鼠標選擇你需要複製,刪除的文本,然後按d(刪除)、p(粘貼)、y(複製)操作你的文本,
當然也可以和其他程序通過粘貼板進行共享數據。
v 對於xterm中的vim 則輸入命令 v 進入可視狀態,這時候你可以用右鍵進行復制粘貼操作

重複操作與撤消
命令 . (點號) 、 u 、U
. 重複上一次的操作,當並不是那種重作,他只是重複你上次輸入的命令。
Ctrl+R 重做
u 撤消上次操作
U 撤消當前行進行的任意修改。
查找文本
命令 /、?、n、N
/ 向後查找文本進入命令模式輸入 /[你要查找的文本]; 例如找edit 輸入 /edit ;
? 而向前查找文本就是輸入 ?[你要查找的文本] ;
n 當有許多搜索結果時,命令模式下輸入 n 就可以找下一個搜索結果,而輸入 N
N 則是反向下一個搜索結果。

打開,保存與退出
先進入ex模式,就是在命令模式下輸入 : 再輸入命令。
命令 ZZ、 q、 w、 e、r
:ZZ 進入命令模式 輸入 ZZ (大寫)就是保存+退出;
:w 保存文本 進入命令模式 輸入 w 就是保存;
:q! 強行退出是輸入 q! ;
:e! 撤消當前所有編輯,返回原始狀態的話,請輸入 e! ;
:w [filename] 另存爲就是 w [filename] 。
:e [filename] 打開另外一個文件(打開新文件前,請先保存文件。
:r [filename] 讀入filename內容到當前文件的當前位置後
移動光標
命令 hjkl、(、)、{、}、e、w、b、gg、G

hjkl 一般可直接用鍵盤上的方向鍵進行光標的移動。而page up/down 鍵就是前後翻頁了;
或者,命令模式下 按
h(左) j(下) k(上) l(右)
或者在這個基礎加上數字,進行幾行幾行的移動,例如 4j就表示向下移動四行。
nG 例如200G 就是移動200行了。而Ctrl+G就是顯示當前行信息(多少行,在文本的位置);
G 到文件尾
gg 到文件頭

e 另外 輸入 e 可以一單詞的移動光標,
( 當前句首
) 下一句開始 例如 2) 向前移動兩個句子
{ 段開始
} 下一段頭
b、w 後前以單詞爲單位移動。

標記命令 m、‘(單引號)、`(反引號也就是 ~ 那裏那個鍵)
m[x] 標記x(a~z)位置 例如 mb 標記當前光標位置爲標誌b
’x 移動光標到x標記行的行首
`x 移動光標到x標記的原始光標位置
'' 移動到上一標記行首
`` 移動到上一標記原光標位;
zl zh zs ze 窗口左滾 右滾 左開始 右結束 //可設置 :set sidescroll=32 設置滾動長度(我好象用不了這個命令)
其他
Ctrl+L 刷屏
return 到下一行行首
-、+ 移動光標上下一行,上下一行的行首(好象+號要用小鍵盤的+號才行);
Ctrl+G 顯示當前行信息
H 屏幕起點
M 屏幕中間
L 屏幕尾

組合使用例子 命令模式下
例子:現有文本

aaabbb
cccdddeeefff (光標在第一行)

輸入 /aab回車 d /ccc回車 那就會刪除掉當前位置aab(包括aab), 到ccc前所有數據並複製數據到緩衝(和剪切差不多)。當然d也可用改成y做複製用途,再用p粘貼。

vim的ex狀態 當在: ex模式下可以用tab進行自動補齊命令(用: set nu 顯示行數) 並可以利用 | 可以將多個命令組合在同一提示符下

文本搜索,替換,移動,刪除,複製
命令 :g/、:s/ 、:m 、:d、:co (或者:t)
:g :g/[文本] 全局搜索文本,光標移動到最後一個搜索文本,並顯示所有數據加所在行。
:g!/[文本] 沒有[文本]的行
:s :[第n行],[到第m行]s/[要替換的]/[替換的] n-m行之間進行替換,如果沒有n,m那麼就進行當前行的替換
:%/s/[要替換的]/[替換的]/g 進行全局替換。 %表示每一行, 另外有 . 表示當前行, $ 表示最後一行,另外可用+-號表示該行的上下n行,例如.-2 表示當前行上面第二行
:m :[要移動的數據]m[移動的地方] 例子 :20,30m100 20-30行移動到100行前(最後一行是100行)
例子: :g/^$/d 刪除所有空行 d加上刪除動作


搜索模式
.(點號) 任一個單字符,漢字用兩個點 ..
* 匹配前面字符零個或者多個任意(並不表示任意字符) 例如 /abcdl* 就會查找abcdl或者以abcd開始的,而查找所有是 /.*
^ 表示從行首開始
$ $在表達式末表示以正則表達式要在行末。
轉義 .表示找. *表示找* /表示找
[ ] [0~9]表示匹配0~9之間任意一個數字 同理有[A~Z]和[a~z],而[AB3a]表示找有A,B, 3,a其中任意一個字符。
< , > 單詞開始或者末尾以空格或者標點符號開始或者結束。 例如 inux> 匹配linux.
回車
製表符
執行sh命令
:![shell command] 例如 :!ls

添加數據到文件末 >>
例子 :1,10w>>newfile

需要注意的是vim可以把一些命令組合起來應用
:1,3d | s/they/she/ 一到三行刪除,並把當前行they替換爲she
:.,/while/d 刪除當前行到匹配while行所有數據(包括當前行和含有while所在行)
:/aaa/,/bbbb/d aaa到bbbb之間行刪除(包括這兩行)
:/aaa/,/bbb/m. aaa到bbb行move到當前行




分屏
:[N]sp[lit] [filename] 另開窗口,高度是N行,並打開filename文件。
Ctrl+w [x] 準備進行窗口操作,其中x是按Ctrl+w後,需要選擇的功能鍵(可參見下一行) 例如Ctrl+w 再按t就會到頂端窗口
Ctrl+w [s/w/t/b/c/q/r/i/=] s 再分屏,w下一個窗口,t頂窗口,b底端窗口,c關閉窗口 q退出窗口 r循環窗口 i打開並進入新窗口 =所有窗口同高
:hide 隱藏當前窗口,當不關閉該文件緩衝(也就是說再次用 :e [filename] 打開後依然是先前的文件)
:q 關閉窗口,並釋放緩衝。
:qa[!] 關閉所有窗口並強行退出vim;
:on[ly] 只顯示當前窗口
:new [filename] 新建文件並打開新窗口。
:res[ize][n] :res[ize][+ -n] 改變窗口大小,或者增加減少行數

用vim編程
:make [arguments] 運行make 然後移動到第一個錯誤,
:cf[ile] [!] [errorfile]讀取錯誤文件,並移動到第一個錯誤處,!強迫vim移動到另外的緩衝區,
:cl[ist] [!] 列出含有文件名的錯誤,有!就列出所有錯誤,
:cc[!] [n] 如果有n就顯示錯誤n,否則重新顯示當前錯誤,
:cn[ext] 移動到下一個錯誤。
:cp 移動到上一個錯誤。

另外一個有用的編程功能是使用ctags(unix命令,給C語言中的函數打標記。這個命令與vi的tags結合使用)
先用ctags命令 :!ctags file.c 創建該c程序tags文件,再在vi中使用 :tag [函數名] ,那麼vi就直接調出該c原文件並跳到函數定義處。
例如: :!ctags *.c
:tag aaa 其中bbb.c 中有aaa函數,那麼就跳到aaa的定義處
:tn 跳到下一個匹配標誌
:tp 上一個標誌


設置vim
:set all 顯示所有選項。
:set nu[mber] 顯示行數。
:set binary 可讀二進制文件
:syntax on 語法高亮
:set taglength=4 設置tag長度
記不住可使用tab鍵補齊命令(也可以顯示可以選擇的命令)

vim的配置文件 .vimrc
在vim的安裝目錄下有一個vimrc_example.vim文件,你可以copy到你的工作目錄上作爲你的原始vim配置文件(文件改名爲.vimrc)

vi引證
最後,這裏有關vi的認證:vi是完美的
論證:VI在羅馬數字中是六,小於六的自然數可以整除6的是1,2,3, 6=1X2X3; 而6有可以表示爲6=1+2+3,可見VI是個完美的數字,從而VI也是完美的。

對於vim
羅馬數字中VIM可能表示爲(1000-(5+1))=994,而剛好等於2×496+2,而496剛好可以被1,2,4,8,16,31,62,124,248等整除,而且1+2+4+8+16+31+62+124+248=496
因此496是個更完美的數字,可見vim比vi更加完美了。

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