天天看點

Vim應用

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

繼續閱讀