vim 的一般提示

來源:互聯網
上載者:User
VIM 的一般提示
作者: geminis   發表日期: 2006-02-15 00:14  

在每個使用者的主目錄下,都有一個 vi 的設定檔".vimrc"或".exrc",使用者可以編輯它,使這些設定在每次啟動 vi 時,都有效。
  例如,加入如下設定行:
set nu 顯示行號
set nonu 不顯示行號
set ic 尋找時不考慮大小寫
set noic 尋找時考慮大小寫

說明:

在文本中[]表示選項或者簡寫掉的文字,但除了模式比對裡面的[],可參見模式比對。

源碼:

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開始的,而尋找所有是 /.*
^ 表示從行首開始
$ $在運算式末表示以Regex要在行末。
/ 轉義 /.表示找. /*表示找* //表示找/
[ ] [0~9]表示匹配0~9之間任意一個數字 同理有[A~Z]和[a~z],而[AB3a]表示找有A,B, 3,a其中任意一個字元。
/< , /> 單詞開始或者末尾以空格或者標點符號開始或者結束。 例如 inux/> 匹配linux.
/r 斷行符號
/t 定位字元
執行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更加完美了。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.