日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VIM 使用简介

發布時間:2025/3/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VIM 使用简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?Vi?IMproved?(VIM)?是?Bram?Moolenaar?開發的與?UNIX?下的通用文本編輯器?vi?兼容并且更加強大的文本編輯 器。它支持語法變色、正規表達式匹配與替換、插入補全、自定義鍵等等功能,為編輯文本尤其是編寫程序提供了極大方便。VIM?可以運行在“任何”操作系統 上,包括我們常用的?Windows?和?UNIX/Linux。一旦掌握了?VIM,你就掌握了一項跨平臺的利器。

盡管?VIM?功能十分強大,但對于剛接觸它的人尤其是用慣類似?Windows?的?notepad?的人來說,VIM?并不十分易于掌握,畢竟它兼容 的是?vi?而不是?notepad。本文旨在介紹?VIM?中我所了解的用法,希望有更多的人喜歡?VIM。應該指出的是,VIM?中有太多的功能和命 令,有許多你并不用的著,因此沒有記的必要,有些我也不知道,這要靠你來發現,關鍵是多看?:help?,多試。另外,取決于你的?VIM?的版本以及編 譯安裝時的設置,文中講述的某些功能或命令在你的?VIM?中也許并不存在,如有需要請升級。
1.?vi?的基本用法

vi?的屏幕區域分為兩個部分:最下面一行是命令行,一般用于提示信息或命令行輸入;除此之外為正文顯示區域。跟?notepad?不同的是,vi?中存在兩種模式:普通(Normal)模式和插入(Insert)模式。

進入?vi?后默認即為普通模式。新手一般初次進入?vi?后就想輸入一串字符,結果發現?vi?一連串莫名其妙的反應。其實,在?vi?的普通模式下,任何按鍵包括普通字符都表示某個命令,并不表示在當前光標處插入字符。常用的命令有:(注意區分大小寫)
:???????進入命令行
i?或?a??進入插入模式。區別是:i?進入插入模式后,光標在當前字符前面;?a?進入插入模式后,光標在當前字符后面
h?j?k?l?分別是光標左移、下移、上移、右移(一般來說你不會用到它們來移動光標,按方向鍵就可以了)
x???????刪除一個字符
dd??????刪除一行
J???????刪除本行的回車符,把下一行并入本行末尾
r字符???替換光標所在字符為新字符
^?$?????分別是光標移到行首和行末
數字G???移動光標到第若干行,如果直接按?G?則移動到最后一行

在普通模式中,命令以按鍵形式輸入。而在命令行中,命令以字符串形式輸入。下面是常用的命令行:
:q??????退出!?(更確切的說應該是關閉當前文件)
:w?文件名???????存盤。如果還是保存為當前文件,不必寫文件名
:wq?????存盤退出
:new?文件名?????打開或新建文件(同時關閉當前文件)。如果不指定文件名或者文件名不存在則是新建文件
:help???幫助!?看完后用?:q?關掉窗口。可以在?help?后面加某個幫助主題的名稱,如?:help?dd?或?:help?help

還有一點是,如果某個命令得到警告(拒絕執行),則要在命令的命令詞后加嘆號表示強制執行。比如你修改過文件,但又想放棄存盤并退出,如果輸入?:q, vi?會告訴你文件已修改,這時,你只能輸入?:q!?退出。又如用?:w!?a.txt?表示把當前文件存為?a.txt?而不管?a.txt?是否已 經存在。

插入模式就不用多說了,添加你的新內容吧。不過,你也許會發現?BackSpace?鍵和?Delete?鍵的運用很受限制,也不能像?notepad? 那樣選擇、復制和粘貼。這些都是由于這是?vi?的標準,后面我們將看到?VIM?擴展的功能可以解決這些問題。記住按?ESC?退出插入模式,回到普通 模式。
2.?復制和粘貼

為了便于選取文本,VIM?引入了可視(Visual)模式。要選取一段文本,首先將光標移到段首,在普通模式下按?v?進入可視模式,然后把光標移到段末。需要注意,光標所在字符是包含在選區中的。這時可以對所選的文本進行一些操作,常用的(可視模式)命令有:
x?或?d??剪切(即刪除,同時所選的文本進入剪貼板)
y???????復制
r字符???所有字符替換為新字符
u?U?~???分別是所有字母變小寫、變大寫、反轉大小寫
>?<?????分別是縮進和反縮進

當輸入了命令以后,VIM?將回到普通模式,這時可以按?p?或?P?進行粘貼。普通模式下有關復制和粘貼的命令:
v???????進入可視模式
p?或?P??在當前位置粘貼剪貼板的內容,p?粘在光標所在字符后面,P?粘在前面

不得不承認,雖然引入了可視模式,復制和粘貼在?VIM?中仍然是比較麻煩的操作,這也許是?VIM?唯一的缺點。:-)?此外,VIM?還引入了選擇 (Select)模式,跟可視模式類似。結合一些鍵的定義和選項設置,可以實現跟?notepad?相同的復制和粘貼的使用習慣。限于篇幅和水平,在此不 提。
3.?VIM?的定制

VIM?在?vi?的基礎上擴展了許多功能和命令,提供了許多選項。但是有些功能默認是關閉的,有些選項可能也不符合個人的使用習慣。為此,我們需要編寫 一個?vimrc?文件。在?DOS/Windows?版本的?VIM?中,這個文件應放在?VIM?的目錄下,文件名為“_vimrc”。在 ?UNIX?版本?的?VIM?中,這個文件一般可以放在用戶的個人主目錄下,文件名為“.vimrc”。VIM?啟動時將會把?vimrc?文件中的每 一行作為命令行依次執行,我們可以在該文件中加入若干命令,使?VIM?啟動時自動開啟一些有用的功能,定義一些常用的快捷鍵等。

下面是一個?vimrc?文件的示例:(請注意區分瀏覽器的換行與實際的換行。)
"?設置?Backspace?和?Delete?的靈活程度,backspace=2?則沒有任何限制
set?backspace=2
"?設置在哪些模式下使用鼠標功能,mouse=a?表示所有模式
set?mouse=a
"?設置路徑,在?<C-W>f?等命令中涉及此參數
"?對于?Windows?編程,path?可設為如
"?set?path=.,"C:/Program?Files/Microsoft?Visual?Studio/vc98/Include",,
"?對于?UNIX?編程,path?可設為如下
set?path=.,/usr/include,/usr/include/qt,,
"?打開光標的行列位置顯示功能
set?ruler
"?設置跳格距離
set?tabstop=4
"?設置自動縮進格數
set?shiftwidth=4
"?打開自動縮進功能
set?autoindent
"?設置哪些鍵可以行間繞轉,如下設置則?Backspace?和方向鍵等均可行間繞轉
set?whichwrap=b,s,h,l,<,>,[,]
"?根據當前文件語法自動變色。VIM?識別上百種文本文件的語法,如?html、c++、java?等
syntax?on
"?以下是個人習慣,定義?<F2>?<F3>?等鍵,便于插入模式和可視模式之間的切換
"?(1)?使?x?d?y?自動返回插入模式
vnoremap?y?"ryi
vnoremap?x?"rxi
vnoremap?d?di
"?(2)?普通模式和插入模式下均可按?<F3>?粘貼
imap?<F3>?<Esc>:if?col(".")!=1?<Bar>exe?'normal?"rp'<Bar>else<Bar>exe?'normal?"rP'<Bar>endif<CR>`[i
nmap?<F3>?"rP
"?(3)?普通模式和插入模式下均可按?<F2>?進入可視模式
imap?<F2>?<Esc>:if?col(".")!=1?<Bar>exe?'normal?lv'<Bar>else<Bar>exe?'normal?v'<Bar>endif<CR>
nmap?<F2>?v

下面給出我常用的?vimrc?文件。另外,你的?VIM?安裝目錄下很可能也帶有一個默認的?vimrc?文件,你都可以參考。如果遇到沒有見過的命令或者參數,可以自己看看?:help?。

????*?vimrc

4.?VIM?的其它命令

要真正使用?VIM,光靠?vi?的基本命令當然不行,下面就來介紹更多的命令。以下的命令,有些是?VIM?特有的,有些在?vi?中也存在,我就不加 區分了。其中,以“:”開頭表示該命令在命令行輸入,以“i”開頭表示這是插入模式下的命令,其它則是普通模式下的命令。<C-X>?表示按 ?Ctrl+X。
4.1?使用幫助

<C-]>???在?:help?中,遇到超連接可以按?Ctrl+]?跳轉
<C-T>???在?:help?中,按?Ctrl+T?往回跳轉

4.2?打開多個文件

:split?文件名???切分出一個新窗口,打開指定文件。如果省略文件名,則仍顯示當前文件,可用于同時觀察文件的不同部分。(注意跟?:new?的區別)
<C-W>f??切分顯示光標所指的文件名,VIM?會在?path?中搜索該文件名,比如常用它打開?#include?語句中的文件
<C-W><C-W>??????當同時打開幾個文件時,按?<C-W><C-W>?在各窗口之間切換
<C-W>_??當同時打開幾個文件時,按?<C-W>_?使當前窗口最大化
:set?scrollbind?設置卷動綁定屬性。所有設置了卷動綁定屬性的窗口將一起卷動。可以用?:set?noscrollbind?解除綁定

4.3?撤銷和恢復

編輯過程中出現錯誤在所難免,不過沒有關系,VIM?允許無限次的撤銷。只要你沒有關閉文件,你甚至可以一直撤銷下去,回到幾個小時以前剛打開這個文件開始工作時的狀態。
u???????撤銷(Undo)上次所做的修改
<C-R>???恢復(Redo)上次撤銷的內容

4.4?字符串搜索替換

/字符串?向下搜索字符串
?字符串?向上搜索字符串
*?#?????分別是向下和向上搜索光標所指的詞
n???????重復上一次搜索
:起始行,結束行s/搜索串/替換串/g?從起始行到結束行,把所有的搜索串替換為替換串
:set?ignorecase?設置忽略字母大小寫。可以用?:set?noignorecase?取消忽略字母大小寫

例如?/hello?從當前光標位置開始向下搜索?hello,不帶字符串的命令?/?可重復上一次搜索,相當于?n。又如?:1,$ s/hello/hi/g?把全文中的?hello?改為?hi,其中?$?表示最后一行。另外,你還可以先進入可視模式選擇一段文本,按?:進入命令行 并輸入?s/hello/hi/g?,VIM?將在選區中進行替換操作。

搜索字符串用的是正規表達式(Regular?expression),其中許多字符都有特殊含義:
/???????取消后面所跟字符的特殊含義。比如?/[vim/]?匹配字符串“[vim]”
[]??????匹配其中之一。比如?[vim]?匹配字母“v”、“i”或者“m”,[a-zA-Z]?匹配任意字母
[^]?????匹配非其中之一。比如?[^vim]?匹配除字母“v”、“i”和“m”之外的所有字符
.???????匹配任意字符
*???????匹配前一字符大于等于零遍。比如?vi*m?匹配“vm”、“vim”、“viim”……
/+??????匹配前一字符大于等于一遍。比如?vi/+m?匹配“vim”、“viim”、“viiim”……
/???????匹配前一字符零遍或者一遍。比如?vi/?m?匹配“vm”或者“vim”
^???????匹配行首。例如?/^hello?查找出現在行首的單詞?hello
$???????匹配行末。例如?/hello$?查找出現在行末的單詞?hello
/(/)????括住某段正規表達式
/數字???重復匹配前面某段括住的表達式。例如?/(hello/).*/1?匹配一個開始和末尾都是“hello”,中間是任意字符串的字符串

對于替換字符串,可以用“&”代表整個搜索字符串,或者用“/數字”代表搜索字符串中的某段括住的表達式。

舉一個復雜的例子,把文中的所有字符串“abc……xyz”替換為“xyz……abc”可以有下列寫法:
:%s/abc/(.*/)xyz/xyz/1abc/g
:%s//(abc/)/(.*/)/(xyz/)//3/2/1/g
其它關于正規表達式搜索替換的更詳細準確的說明請看?:help?pattern?。
4.5?插入補全

在插入模式下,為了減少重復的擊鍵輸入,VIM?提供了若干快捷鍵,當你要輸入某個上下文曾經輸入過的字符串時,你只要輸入開頭若干字符,使用快捷鍵, VIM?將搜索上下文,找到匹配字符串,把剩下的字符補全,你就不必敲了。這樣,編程序時你起多長的變量名都沒關系了,:-)?而且還可以減少輸入錯誤。 我認為,插入補全是?VIM?最為突出的一項功能。
i<C-P>??向上搜索,補全一個詞。例如,上文中出現過?filename?這個詞,當你想再輸入?filename?時,只要按 ?f<C-P>?即可。假如?VIM?向上搜索,找到以?f?開頭的第一個匹配不是?filename,你可以繼續按?<C- P>?搜索下一個匹配進行補全。當然,如果你想一次?<C-P>?就成功,你可以多輸入幾個字符比如?filen?再按?<C- P>?補全
i<C-N>??向下搜索,補全一個詞
i<C-X><C-L>?????補全一行。比如你寫過一行?for?(int?i?=?0;?i?<?100;?i+ +),你想再寫一模一樣的一行,只要輸入?for<C-X><C-L>?即可。如果補全出來的不是你想要的那一行,你可以按 ?<C-P>?或?<C-N>?選擇上一個或下一個匹配行
i<C-X><C-F>?????在文件系統中搜索,補全一個文件名

如果按?<C-P>?或?<C-N>?補全一個詞,在當前文件中沒有找到匹配,VIM?將搜索?#include?語句中的文件,而文件的位置將在?path?中搜索。
4.6?鍵的定義

在?VIM?中你可以定義一個鍵,按了這個鍵等于按了某一串預定的鍵。比如
:map!?<F10>?<Esc>ddi
表示如果你在插入模式下按?<F10>?就相當于連續按了?<Esc>ddi,這將會使?VIM?退回到普通模式,刪除一行,再進入插入模式。

map?命令有許多變化形式,每種變化形式所定義的鍵只在某些模式下有效,而在其它模式下無效。你需要根據情況使用正確的變化形式:
:nmap???鍵只對普通模式有效
:imap???鍵只對插入模式有效
:vmap???鍵只對可視模式有效
:cmap???鍵只在命令行下有效
:map????鍵在普通模式和可視模式都有效
:map!???鍵在插入模式和命令行下都有效

還要注意,如果你定義?:map?d?di?這將引起循環定義錯誤。這時,你需要使用?:noremap?d?di?來定義。同樣,noremap?也有對不同模式的變化形式。

比如,你想在文件的每一行的倒數第二個字符處插入字符串“abc”,你可以定義
:nmap?<F10>?$hiabc<Esc>j
在普通模式下按一次?<F10>?將會:光標移到行末,光標左移一格,進入插入模式,輸入“abc”,退回到普通模式,光標下移一行。不停地 按?<F10>?將解決問題。這是我臨時處理多行重復操作的常用手段,當然,這是一種笨辦法。:-)?而上文寫到的對?<F2> ?<F3>?的定義則是?map?更復雜的用法。你還可以定義
:map?<F9>?:w<CR>:!gcc?-o?%<?-I/usr/include/qt?-lqt?%<CR>
:map?<F5>?:!./%<
實現按?<F9>?編譯當前文件,按?<F5>?執行。

在插入補全當中提到的補全一行需要按?<C-X><C-L>,如果你覺得麻煩,你可以定義
:inoremap?<C-L>?<C-X><C-L>
減少擊鍵次數。同樣,對?<C-X><C-F>?也可以作類似定義。
4.7?其它命令

:!命令行????????執行一條外部命令
.???????在光標當前位置處重復上一次操作
i<C-V>后續字符??輸入特殊的?ASCII?字符或鍵。除了插入模式外,也適用于命令行。后續字符可以是鍵盤上的任意鍵,也可以是三位的十進制數字表示字符的?ASCII?碼
i<C-O>命令??????執行一個普通模式的命令,執行完畢后回到插入模式
<C-W>i??跳轉到光標所指標識符的定義行。比如你在編程時遇到一個函數?CreateWindow,想看它的定義語句,你就可以在它上 面按?<C-W>i,VIM?將打開新窗口,把光標移到它定義的地方。當然,前提是在當前文件或它的?#include?文件中存在 ?CreateWindow?的定義。這也牽涉到?path?的設置。不過,VIM?找得不一定很準
K???????看光標所指標識符的?man?幫助頁
i<C-Y>??把上一行對應列的字符抄下來
i<C-E>??把下一行對應列的字符抄上來(寫這一行時我就用了?<C-Y>)
<C-A>???光標所指整數加一
<C-X>???光標所指整數減一
<C-O>???光標返回到以前的位置。相當于光標移動的“撤銷”
<C-I>???光標返回到后來的位置。相當于光標移動的“恢復”
<C-V>???進入可視模式,選取一個矩形區域。該命令通常用于對多行進行列操作。接著按?I?可以在塊前的每一行同時插入字符;按?A?可以在塊后的每一行同時插入字符,然后要按Esc;按?x、d?或?y?可以剪切或復制;等等
:X??????對當前文件加密

5.?VIM?6.0?的一些新特性

2001?年?9?月?26?日發布的?VIM?6.0?增加了一些以往沒有的新特性。下面僅僅是一些簡單的介紹,更詳細的描述請自己看?:help?。

????*?打開目錄

??????在?VIM?6.0?中,:new?和?:split?等命令不但可以打開普通文件,還可以打開目錄。一個目錄打開以后將列出里面的文件信息,可以按回車繼續打開相應的文件或者子目錄,也可以按???得到其它目錄操作(修改文件名,刪除文件等)的幫助。
????*?折疊

??????當一個文本太長而你又對其中很長一大段內容不關心的話,可以把你不關心的那些行折疊起來,讓它們從你的視線中消失。被折疊的行將以一行顯示代替,例如:
??????+--217?行:<b>2.?VIM?的定制</b>---------------------
??????折疊可以有多種方式控制,可以通過設置?foldmethod?選項的值來改變。默認情況下?foldmethod=manual?為手工折疊。下面介紹幾個使用折疊的最簡單的命令:
??????(可視模式下)?zf???手工創建折疊。在可視模式下選擇一段文本,然后按?zf?可以手工創建一個折疊
??????方向鍵左或右??????打開折疊。普通或插入模式下,在折疊行上橫向移動光標將打開被折疊的行
??????zc????????關閉折疊

????*?垂直切分窗口

??????:vsplit?文件名????垂直切分窗口。跟?:split?命令相似,但新窗口與原窗口左右并列。

????*?更多的正規表達式

??????VIM?6.0?比以前增加了許多新的正規表達式,其中我認為最有用的是換行匹配符?/n。以前的版本中,正規表達式只能在同一行上匹配。現在,只要顯式地給出?/n,正規表達式可以跨多行。
????*?diff?模式

??????專門用于比較編輯兩個或多個內容相近的文件的模式。一般來說,比如你要比較編輯?A?跟?B?兩個文件,你可以命令行啟動?vim?- d?A?B?或者這樣:先打開文件?A,然后?:vsplit?打開文件?B,對文件?A?和?B?都輸入命令?:diffthis。這時?VIM?將非 常清晰的對比顯示出兩個文件的不同之處,編輯起來十分方便。

??????仔細一看,這個?diff?模式動用了?VIM?許許多多的特性,包括卷動綁定,折疊和語法變色等等。好高級啊!

我所熟悉的?VIM?的功能已經介紹得差不多,剩下的要靠你自己來學習了。其實,VIM?的功能還有很多很多。還是那句話,多看?:help?,多試。 VIM?的幫助還是挺容易看的,相信你看了以后會有更多的驚喜。另外,VIM?的主頁上有不少有用的技巧提示,也是一個很好的去處。如果你有什么心得或者 新發現,歡迎跟我討論。

希望你喜歡?VIM。(2003.12.03)

?

轉自:http://blog.163.com/lchh-tiger/blog/static/27878317201091715835823/


總結

以上是生活随笔為你收集整理的VIM 使用简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。