vim常用操作和使用技巧12

vim常用操作和使用技巧

移動光標

在 vi 中, 移動光標和編輯是兩件事, 正因爲區分開來, 所以可以很方便的進行光標定位和編輯. 因此能更快一點移動光標是很有用的.

 w               移動光標到下一個單詞開頭.

 e               移動光標到下一個單詞結尾

 b               移動光標到上一個單詞.

 

 0               移動光標到本行最開頭.

 ^               移動光標到本行最開頭的字符處.

 $               移動光標到本行結尾處.

 A               移動光標至行尾並處於“追加”狀態,直接編輯

 

 H               移動光標到屏幕的首行.

 M               移動光標到屏幕的中間一行.

 L               移動光標到屏幕的尾行.

 

 gg              移動光標到文檔首行.

 G               移動光標到文檔尾行.

 :n              跳至第n行

 

 

 ctrl + f        向下翻頁 同 page down.

 ctrl + b        向上翻頁 同 page up.

 ctrl + d        向下翻半頁 此比較有用

 ctrl + u        向上翻半頁 此比較有用

 ctrl + e        向下翻一行

 ctrl + y        向上翻一行

 

 [[              轉到上一個位於第一列的“{”

 ]]              轉到下一個位於第一列的“}”

 {               轉到上一個空行

 }               轉到下一個空行

 

 ''   兩個單引號 此命令相當有用, 它移動光標到上一個標記處, 比如用 gd, * 等查找到某個單詞後, 再輸入此命令則回到上次停留的位置.

 '.   一單一點   此命令相當好使, 它移動光標到上一次的修改行.

 `.   一倒引一點 此命令相當強大, 它移動光標到上一次的修改點.

查找

/xxx(?xxx)		表示在整篇文檔中搜索匹配xxx的字符串, / 表示向下查找, ? 表示向上查找.其中xxx可以是正則				  表達式, 再輸入 n 查找下一個匹配處, 輸入 N 反方向查找.

 *(#)           當光標停留在某個單詞上時, 輸入這條命令表示查找與該單詞匹配的下(上)一個單詞. 同樣, 再輸				   入 n 查找下一個匹配處, 輸入 N 反方向查找.

 g*(g#)         此命令與上條命令相似, 只不過它不完全匹配光標所在處的單詞, 而是匹配包含該單詞的所有字符				 串.

 gd             本命令查找與光標所在單詞相匹配的單詞, 並將光標停留在文檔的非註釋段中第一次出現這個單詞的		         地方. 用於查找局部變量等

 %              本命令查找與光標所在處相匹配的反括號, 包括 () [] { }

f(F)x           本命令表示在光標所在行進行查找, 查找光標右(左)方第一個x字符.找到後:
				輸入 ; 表示繼續往下找
				輸入 , 表示反方向查找

替換

替換是 vi 的強項,使用“:s/模式/字符串/標誌”進行替換,其中的“模式”是一個正則表達式,可以用來匹配字符串.以下提供幾個例子.
 :s/aa/bb/g       將光標所在行出現的所有包含 aa 的字符串中的 aa 替換爲 bb

 :s/\<aa\>/bb/g    將光標所在行出現的所有 aa 替換爲 bb, 僅替換 aa 這個單詞

 :%s/aa/bb/g     將文檔中出現的所有包含 aa 的字符串中的 aa 替換爲 bb

 :12,23s/aa/bb/g  將從12行到23行中出現的所有包含 aa 的字符串中的 aa 替換爲 bb

 :12,23s/^/#/     將從12行到23行的行首加入 # 字符


 :%s= *$==     將所有行尾多餘的空格刪除

 :%s/\s\+$//     將所有行尾多餘的空格刪除

 
 :g/^\s*$/d          將所有不包含字符(空格也不包含)的空行刪除

 :%s/\(\s*\n\)\+/\r/    將所有不包含字符(空格也不包含)的空行刪除.

 :%s!\s*//.*!!        去掉所有的“//”註釋

特殊編輯

 ga              顯示光標所指字符的encoding 編碼,比如ASCII碼

 guw             光標所在單詞光標後的字符小寫

 gUw             光標所在單詞光標後的字符大寫

撤銷

u  				撤銷

拷貝, 刪除與粘貼

在 vi 中 y 表示拷貝, d 表示刪除, p 表示粘貼. 其中拷貝與刪除是與光標移動命令結合的, 看幾個例子就能夠明白了.

 yw              表示拷貝從當前光標到光標所在單詞結尾的內容.

 dw              表示刪除從當前光標到光標所在單詞結尾的內容.

 daw              表示刪除光標所在的單詞,不管光標在此單詞那一位置

 

 y0              表示拷貝從當前光標到光標所在行首的內容.

 d0              表示刪除從當前光標到光標所在行首的內容.

 

 y$              表示拷貝從當前光標到光標所在行尾的內容.

 d$[D]           表示刪除從當前光標到光標所在行尾的內容.

 

 特殊地:

 yy              表示拷貝光標所在行.

 dd              表示刪除光標所在行.

 D               表示刪除從當前光標到光標所在行尾的內容.

 xp              表示交換光標與其後的字符的位置

 ddp             表示光標所在行與下一行交換

 J               表示光標所在行與下一行合併

 關於拷貝, 刪除和粘貼的複雜用法與寄存器有關, 可以自行查詢.

數字與命令

在 vi 中數字與命令結合往往表示重複進行此命令, 若在擴展模式的開頭出現則表示行號定位. 如:

 5yy[y5y]        表示拷貝光標以下 5 行.

 5dd[d5d]        表示刪除光標以下 5 行.

 

 :12,24y         表示拷貝第12行到第24行之間的內容.

 :12,y           表示拷貝第12行到光標所在行之間的內容.

 :,24y           表示拷貝光標所在行到第24行之間的內容. 刪除類似.

 

 5fx             表示查找光標後第 5 個 x 字符.

 5w(e)           移動光標到下五個單詞的頭部(尾部).

TAB

TAB 就是製表符, 單獨拿出來做一節是因爲這個東西確實很有用.

  <<                  輸入此命令則光標所在行向左移動一個 tab.

  >>                  輸入此命令則光標所在行向右移動一個 tab.

  5>>                 輸入此命令則光標後 5 行向右移動一個 tab.

  :12,24>             此命令將12行到14行的數據都向右移動一個 tab.

  :12,24>>            此命令將12行到14行的數據都向右移動兩個 tab.

 

  那麼如何定義 tab 的大小呢? 有人願意使用 8 個空格位, 有人用4個, 有的用2個.

  有的人希望 tab 完全用空格代替, 也有的人希望 tab 就是 tab. 沒關係, vim 能

  幫助你.以下的設置一般也都先寫入配置文件中, 免得老敲.

  :set shiftwidth=4   設置自動縮進 4 個空格, 當然要設自動縮進先.

  :set sts=4          即設置 softtabstop 爲 4. 輸入 tab 後就跳了 4 格.

  :set tabstop=4      實際的 tab 即爲 4 個空格, 而不是缺省的 8 個.

  :set expandtab      在輸入 tab 後, vim 用恰當的空格來填充這個 tab.

文件跳轉與tags

文件跳轉要使用tags文件,生成方式爲 ctags -R *, ctags爲外部命令。

使用方法:

(1)把光標移到變量名或函數上,按

   ctrl+ ] 跳轉到變量或函數定義的地方,按

   ctrl+ t 返回到原文件

   可以多次跳轉和多次返回

(2)在vi中:ta[:tag]可以直接跳轉到變量或函數定義的地方

(3)vi -t 變量或函數名,直接打開變量或函數定義的文件

 

*其他選項*:

:tselect [關鍵字] 顯示與“關鍵字”匹配的標記列表,輸入數字跳轉到指定的標記

:tjump [關鍵字]

類似於“:tselect”,但當匹配項只有一個時直接跳轉至標記處而不再顯示列表

:tn               跳轉到下一個匹配的標記處

:tp               跳轉到上一個匹配的標記處

設置配置文件

在啓動的時候vim會讀取 /etc/vimrc 和 ~/.vimrc (也就是說, 全局設置的vimrc 和用戶設置)。一般情況下用戶設置自己home目錄的.vimrc就已足夠

“雙引號開始的行爲註釋行,下同

“去掉討厭的有關vi一致性模式,避免以前版本的一些bug和侷限

set nocompatible

 

“顯示行號

set nummber

 

“檢測文件的類型

filetype on

 

“記錄歷史的行數

"set history=1000

 

“背景使用黑色

set background=dark

 

"語法高亮度顯示

syntax on

 

“下面兩行在進行編寫代碼時,在格式對起上很有用;

“第一行,vim使用自動對起,也就是把當前行的對起格式應用到下一行;

“第二行,依據上面的對起格式,智能的選擇對起方式,對於類似C語言編寫上很有用

set autoindent

set smartindent

 

"C語言對齊方式,最好用它

set cindent

 

“第一行設置tab鍵爲4個空格,第二行設置當行之間交錯時使用4個空格

set tabstop=4

set shiftwidth=4

 

"以空格代替tab,注意make文件有時候必須用tab,而不能用空格代替

"set expandtab

 

“設置匹配模式,類似當輸入一個左括號時會匹配相應的那個右括號

set showmatch

 

“在編輯過程中,在右下角顯示光標位置的狀態行

set ruler

 

“默認情況下,尋找匹配是高亮度顯示的,該設置關閉高亮顯示,最好定義快捷鍵

"set nohls

"打開高亮

set hlsearch

 

“查詢時非常方便,如要查找book單詞,當輸入到/b時,會自動找到第一

“個b開頭的單詞,當輸入到/bo時,會自動找到第一個bo開頭的單詞,依

“次類推,進行查找時,使用此設置會快速找到答案,當你找要匹配的單詞

“時,別忘記回車

set incsearch

 

"設置退格鍵

set backspace=2

"set backspace =indent,eol,start

 

"不進行文件備份

set nobackup

"不要交換文件

set noswapfile

 

“去除vim的GUI版本中的toolbar

"set guioptions-=T

 

“當vim進行編輯時,如果命令錯誤,會發出一個響聲,該設置去掉響聲

"set vb t_vb=

 

"設定文件編碼類型,徹底解決中文編碼問題

let &termencoding=&encoding

set fileencodings=utf-8,gbk,ucs-bom,cp936

set fenc=utf-8 " default fileencoding

set fencs=utf-8,gb18030,gbk,gb2312,cp936,ucs-bom,euc-jp

 

:set list 可以用來顯示非可見字符
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章