Vim應用
vi 是 unix/linux 下極為普遍的一種文本編輯器. vi 有各種變種, 在不同的機器上有不同的變種軟體. 其中 vim 比較好用也用得比較廣泛. vim 是 Vi IMproved 的縮寫, 表示更好的 vi. 本文就說些其中比較有用, 比較常用的指令
**1. !$ 代表指令中的最後參數
**2. set nu 顯示行号
一、一般模式:删除、複制與粘貼類指令
x,X x為向後删除一個字元,X為先前删除一個字元
nx(n代表數字) 向後删除n個字元
dd 删除目前行
D 删除目前行所有字元,試成為空行
ndd(n代表數字) 删除光标所在行的向下n列
d1G 删除光标所在行到第一行的所有資料
dG 删除光标所在行到最後一行的所有資料
yy 複制光标所在行
y1G 複制光标所在行到第一行的所有資料
yG 複制光标所在行到最後一行的所有資料
ynj(n代表數字) 複制光标所在行向下n+1行
dnj(n代表數字) 删除光标所在行向下n+1行
p,P p為複制的資料粘貼在光标的下一行,P為複制的資料粘貼在光标的上一行
J 将光标所在行與下一行的資料結合成一行
u 恢複前一個動作(undo)
二、編輯插入字元
i,I i為在目前光标所在處插入輸入的文字,I為在光标所在行第一個非空字元插入輸入的文字
a,A a為在目前光标所在處下一個字元插入輸入的文字,A為在光标所在行最後一個字元的下一個字元處插入輸入的文字
o,O o為在光标所在行的下一行行首開始插入字元,O為在光标所在行的上一行行首開始插入字元
r,R r為替換光标所在那一個字元,R為一直替換光标所指的文字,直到退出
Esc 退出,回到一般模式
三、光标移動
h 光标向左移一個字元
j 光标向下移一個字元
k 光标向上移一個字元
l 光标向右移一個字元
Ctrl+f 螢幕向下翻一頁
Ctrl+b 螢幕向上翻一頁
Ctrl+d 螢幕向下翻半頁
Ctrl+u 螢幕向上翻半頁
+ 光标移動到下一行的第一個非空字元
- 光标移動到目前行的第一個非空字元
n空格(n代表數字) 光标向目前行向右移動n個字元
0(數字0) 光标移動到目前行的第一個字元(可以為空字元,注意與-區分)
$ 光标移動到目前行的最後一個字元(可以為空字元,注意與-區分)
H 光标移動到目前螢幕最上方的那一行的第一個非空字元
M 光标移動到目前螢幕最中間那一行的第一個非空字元
L 光标移動到目前螢幕最下方的那一行的第一個非空字元
G 光标移動到該文章最後一行的第一個非空字元
nG(n代表數字) 光标移動到該文章第n行的第一個非空字元
n 光标從目前行向下移動n行的第一個非空字元
/word 在光标之後查找word字元串
?word 在光标之前查找word字元串
:s/word1/word2/g 在光标目前行查找word1,并替換成word2
:n1,n2s/word1/word2/g 在第n1行與第n2行之間查找word1,并替換成word2
:%s/word1/word2/g 整個文章查找word1,并替換成word2
:w 将編輯的資料儲存到硬碟檔案中
:w [filename] 将編輯後的資料儲存到硬碟的另一個檔案中
:r [filename] 在編輯資料時,讀入另一個檔案中的資料,即将filename檔案中的内容加到光标所在行下一行
:wq或:x 儲存并退出
:q 退出,适用于未修改的檔案
:q! 強制退出,适用于修改檔案後不儲存退出
:set nu 顯示行号
:set nonu 取消行号
:n1,n2 w [filename] 将n1到n2行的内容儲存到名為filename的檔案中
四、Vim複制與粘貼
用vim寫代碼時,經常遇到這樣的場景,複制多行,然後粘貼。
這樣做:
将光标移動到要複制的文本開始的地方,按v進入可視模式。将光标移動到要複制的文本的結束的地方,按y複制。此時vim會自動将光标定位到選中文本的開始的地方,并退出可視模式。
我移動光标到文本結束的地方,按p粘貼。
1.多行
dd
删除一行
ndd
删除以目前行開始的n行
dw
删除以目前字元開始的一個字元
ndw
删除以目前字元開始的n個字元
d$、D
删除以目前字元開始的一行字元
d)
删除到下一句的開始
d}
删除到下一段的開始
d回車
删除2行
2.複制多行
任務:将第9行至第15行的資料,複制到第16行
方法1:(強烈推薦)
:9,15 copy 16 或:9,15 co 16
由此可有:
:9,15 move 16 或 :9,15 m 16 将第9行到第15行的文本内容到第16行的後面
方法2:
光标移動到結束行,ma
光标移動到起始行,輸入y'a
光标移動到需要複制的行,輸入p,行前複制則輸入大寫P
方法3:
把光标移到第9行 shift + v
再把光标移動到第15行 ctrl + c
再把光标死去到第16行 p mysql
方法4:
光标移動到起始行,輸入ma
光标移動到結束行,輸入mb
光标移動到粘貼行,輸入mc
然後輸入:'a,'b, co 'c 把co換成m就是剪切
若要删除多行,則輸入:'a,'b de
vi設定自動縮進:set smartindent
vi設定顯示行号:set number 或 set nu
Vim中如何全選并複制
全部删除:按esc後,然後dG
全部複制:按esc後,然後ggyG
全選高亮顯示:按esc後,然後ggvG或者ggVG
vim如何與剪貼闆互動(将vim的内容複制出來)
習慣了在windows環境各個應用程式之間如UltraEdit,記事本,eclipse之間ctrl+c,ctrl+v進行複制粘貼的你,如何在vim與别的windows應用程式之間拷貝粘貼呢?
當然你可以在vim裡選擇用滑鼠,選中一塊文字然後右鍵複制,再到應用程式裡ctrl+v粘貼,隻不過這樣效率就差多了。
更好的做法是,在vim中使用 "*y 使用進行複制,然後在應用程式中用ctrl+v粘貼。
從應用程式到vim則在應用程式中使用ctrl+c複制,在vim中使用shift+insert粘貼。
如:
"*yy複制一行
"*y2w複制二個詞
……
實作的原理是:
" 表示使用寄存器
"* 表示使用目前選擇區
我個人推薦使用ctrl+insert複制,shift+insert粘貼。
vim有多個剪貼闆,其中就包括了系統剪貼闆。使用指令:reg可以看到各個剪貼闆的内容。其中“”表示目前使用的剪貼闆,“0-9是曆史剪貼闆,“#就是系統剪貼闆了(你可以在系統裡拷貝一些東西,看是不是會出現在“#剪貼闆裡)。在vim中使用y可以把内容拷貝到“”号剪貼闆,繼續y會把新的東西放入“”,而原來“”的東西就會被壓入“0-9的各個曆史剪貼闆中。X11系統下還有一個“*的剪貼闆對應中鍵拷貝粘貼,windows不知道有沒有。
解決第一個問題:
“+y 把選中内容拷貝到”+号剪貼闆,即系統剪貼闆
“+p 把系統剪貼闆的内容粘貼到vim,這一個用shift+insert也可完成
解決第二個問題:
“0p 可以把已經被擠到”0剪貼闆的内容A重新粘貼出來
嫌長的做一個map,映射到某個功能鍵或組合就友善了。
本文轉自 YAOvYAO 51CTO部落格,原文連結:http://blog.51cto.com/yaoyao1314520/1979832