VIM编辑器使用技巧
?轉載自:http://blog.chinaunix.net/uid-20672257-id-3139059.html
?
在Vim中設置tab
在 Vim 中可以很方便的根據不同的文件類型來設置使用 tab 制表符或者空格,還可以設置長度,非常靈活。
首先來看如何設定 tab 的寬度以及如何確定用 tab 制表符還是空格來表示一個縮進:
在自己的家目錄下建立.vimrc文件(修改好后運行一下source ~/.vimrc使用配置文件生效)
然后輸入
??? set tabstop=4
 ??? set softtabstop=4
 ??? set shiftwidth=4
 ??? set noexpandtab / expandtab
其中 tabstop 表示一個 tab 顯示出來是多少個空格的長度,默認 8。
softtabstop 表示在編輯模式的時候按退格鍵的時候退回縮進的長度,當使用 expandtab 時特別有用。
shiftwidth 表示每一級縮進的長度,一般設置成跟 softtabstop 一樣。
當設置成 expandtab 時,縮進用空格來表示,noexpandtab 則是用制表符表示一個縮進。
?
Vim全文的搜索
鍵入/后,光標進入VIM底部的命令行,這時就可以輸入以/為開始的/搜索命令了。
 1. 最簡單的查找。輸入/string就可以查找string字符串。
 2. 繼續查找。在第一次搜索后輸入n將會繼續進行上一次搜索,如果輸入3n那么會找到后面第三個符合的字符串。大寫的N會在反方向,也就是向上進行搜索。
 3. 向上搜索。輸入?可以向上搜索。隨后的n命令將會繼續向上搜索,N向下搜索,其他和/一樣。
 4. 對大小寫的匹配。
 4.1. 在命令行輸入:set ignorecase可以設置搜索以忽略大小寫的方式進行。輸入:set noignorecase可以設置搜索以匹配大小寫的方式進行。默認的,將匹配大小寫。這個默認設置可以在.vimrc中修改。
 4.2. 大小寫智能匹配模式。輸入命令:set ignorecase smartcase可以設置為智能大小寫匹配模式。在這種模式下,如果你輸入的字符串中至少包含一個大寫字母,那么就會以大小寫敏感模式進行搜索,否則以忽略大小寫模式進行搜索。
 4.3. 在搜索命令中指定大小寫。在幾種大小寫搜索模式中進行轉換總要輸入長長的一串指令,如果需要不斷地轉換模式,確實有些麻煩。所以你可以直接在搜索命令中指定大小寫匹配模式。\c表示忽略大小寫,而\C表示對大小寫敏感。
 5. 查找當前詞。一個簡單的方法可以讓你查找下一個和當前詞一樣的詞,你不比輸入/currentword,你可以直接按下*就可以查找下一個currentword。#可以讓你向上查找同一個單詞。
 6. 調整查找后的光標位置。
 6.1. 使用/string/3會使在光標轉到找到string字符串的行下面的第3行。第1行從包含string的行算起。同樣可以使用/string/-2來使光標停留在包含string的行的前面2行。
 6.2. 使用/string/e可以使光標停留在string字符串的末尾而不是默認的第一個字符位置。/string/b則表示停留在string第一個字符的 位置,不過默認就是如此,我們不比多此一舉。但是/string/b+2卻可以使光標停留在string字符串的第二個字符的位置,這里是r。在e或者b 的后面+或者-數字,可以進一步調整光標的位置。
 7. 特殊字符。在搜索命令中,? .*[]^%/?~$這10個字符有著特殊意義,所以在使用這些字符的時候要在前面加上一個反斜杠/。而\e表示<esc>;\t表示<tab>;\r表示<cr>;\b表示<bs>。
 8. 匹配換行或空格。使用\n可以表示一個換行;而\s表示匹配空白,注意是空白不是空格。\_s表示匹配換行或者空格;\_a表示匹配換行或者一個字母。比 如:/the\nword查找以the結束并且下一行以word開始的行的位置。/the\_sword查找the和word之間以空白或者換行分割的位 置。/the\_s\+word表示the和word之間可以有多個空白。\+的含義可以在后面找到。
 9. 限定詞首或者詞尾。\<可以限定找到是以指定字符串開始的單詞。比如/\<the可以找到以the開始在字符串,但是會忽略在單詞中間包含the的字符串。而\>則是限定必須是以指定字符串結尾的單詞。
 10. 行首和行尾。輸入/^string查找以string開始的行,并且光標停留在這個string的第一個字符。輸入/string$則查找以string結束的行,并將光標停留在這個string的第一個字符。這個模式不會忽略前導或者后置的空格。
 11. 匹配任何一個字符。句號.可以匹配任何一個字符。例如/t.e可以找到the或者tae或者tue。
?
Vim搜索并替換
輸入:[range]s/from/to/[flags]命令可以搜索匹配的字符串并且替換為指定的字符串。這是一個稍微復雜的命令。其中 [range]是一個可選項,用來指定搜索替換的范圍。[flags]也是一個可選項,用來指定搜索替換的處理方式。所以這個命令的簡單形式是:s/from/to/。
 1. 搜索替換的范圍。如果沒有指定范圍,則只在當前行進行搜索替換。
 1.1. 在所有行進行搜索替換。范圍符號%表示在所有行進行搜索替換。:%s/from/to/就是在全文查找from并替換為to。
 1.2. 在指定的行上進行搜索替換。:1,50s/from/to/表示在第1行和第50行之間(包括1和50行)進行搜索和替換。:45s/from/to/表示僅僅在第45行進行搜索和替換。而”1,$”行號范圍和“%“是等價的。
 2. 處理方式。我現在使用的VIM默認的方式是無須確認。不過好像不同版本的默認的處理方式是不同的。
 2.1. 無須確認。方式符號g表示直接替換無須進行確認。:%s/from/to/g表示在全文中查找from并且直接全部替換為to。
 2.2. 列印。處理方式符號p表示在替換時列出每個被改變的行。手冊中這么說,但是實際效果卻讓我很迷惑。
 2.3. 確認后處理。處理方式符號c表示在進行替換前需要用戶進行確認。這時你可以選擇(y/n/a/q/1/^E/^Y):y表示同意當前替換;n表示不同意當前替換;a表示替換當前和后面的并且不再確認;q表示立即結束替換操作;1表示把當前的替換后結束替換操作;^E向上滾屏^Y向下滾屏,用來幫助查看前后內容以決定進行操作。
 ?
VIM編輯數個文件
:args 顯示編輯名單中的各個文件名
 :n? ?? ? 讀入編輯名單中的下一個文件
 :rew? ? 讀入編輯名單中的第一個文件
 :e# 讀入編輯名單內的前一個文件
 :e file? ? 讀入另一個文件進vi(此文件可不在編輯名單內),若原文件經修改還沒有
 存檔,則應先以: w 存檔。
 :e! file 強迫讀入另一個文件進入vi,原文件不作存檔動作。
示例1,單個切換
vi file1 file2 file3
 :n 切換到文件2 (n=next)
 :e# 或 :N? ? 切換回到剛才編輯的文件
 比如當前編輯文件為a,:n跳至b,再:n跳至c,:e#回到b,想回到a的話用:e a
 或者直接輸入:e a, :e b, :e c,在三個文件間切換
示例2,分屏切換
打開一個,vi 文件名
 然后在vi的命令輸入狀態下輸入
 :sp 另外一個文件的路徑及文件名,如此就可以在一個窗口打開多個文件了。
 或者用 vi -o file1 file2 file3....用分割屏幕窗口方式同時打開多個文件。
 可以使用 ctrl 加兩次按 w 或者ctrl + w 然后按上下鍵在上下窗口間切換。
VIM復制粘貼
1在多個文件間復制粘貼內容
vi多文件時,文件之間的拷貝復制只能通過命名緩存進行
 如
 "a3yy??把3行內容復制到命名為a的緩沖區
 (此時,不是輸入冒號,而是輸入“a3yy)
 "ap 把名字為a的緩沖區內容拷貝到當前位置
 (此時,不是輸入冒號,而是輸入“ap)
在vi下使用
:new newfile,就可以打開多個文件進行編輯,使用ctl+w進行切換;
dd:刪除一行
:vnew可以橫著打開文件
2多方搜索整理如下:(除特殊說明以下操作均在命令模式下)
1.
將光標移動到將要復制的行處,按yy進行復制當前行(按nyy復制n行),再移動到粘貼位置,按p進行粘貼。
2.
將光標移到復制的首位置,按下v,用hjkl移動,按y復制,按p粘貼。
3.
光標移到起始行,輸入ma;光標移到結束行,輸入mb;光標移到粘貼行,輸入mc;然后 :'a,'b co 'c,把 co 改成 m 就成剪切了。
4.
光標移動到要復制的行,輸入yny(n表示要復制該行以下n行);光標移動到粘貼行,按p粘貼。
5.
直接輸入:n1,n2 co n3。(n1為起始行,n2為結束行,n3為粘貼行)
6.
不同文件之間的復制:用:sp [filename]打開另一文件,(用^ww在文件之間切換),然后按上述方法復制
有關的命令如下:
yy ?將當前行復制到緩沖區
yw ?將當前單詞復制到緩沖區
y1 ?將光標處的一個字符復制到緩沖區
p ? 將緩沖區的信息粘貼到光標的后面
:行號1 ,行號2 copy 行號3 ? ?將行號1到行號2的內容復制到行號3所在行的后面。
:行號1 ,行號2 move 行號3 ? ?將行號1到行號2的文本內容移動到行號3所在行的后面。
 VI撤消與重復編輯操作
a) ? 撤消上一個編輯操作。 ? ? ? ====》 ? U?
b) ? 重復上一個編輯操作。 ? ? =====> ? ? .?
c) ? 還原被撤消的編輯操作。 ? ======> ? Ctrl+R?
". "命令可以重復最近一次的編輯動作.
轉載于:https://blog.51cto.com/noworry/1104463
總結
以上是生活随笔為你收集整理的VIM编辑器使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 《架构之美》摘录四
- 下一篇: 微软MCITP系列课程(一)第一讲:部署
