vim語法


在任何目錄輸入命令“vim <文件名>”就可以使用vim編輯文件了。 打開vim后,默認的是命令模式,輸入i進入編輯模式,這個時候你可以編輯文件了。
在編輯模式下按Esc鍵回到命令模式,在命令模式輸入:q ! (:wq) 命令就可以(保存修改)退出了。

命令模式常用命令:
k:向上
j:向下
h:向左
l:向右
w:下一個單詞
b:上一個單詞
e:單詞尾部
a:追加輸入,並進入編輯模式,一般 r:替換當前字符為
R:進入替換型輸入方式,按Esc退出。
cw:替換單詞,進入編輯模式。
x:剪切字符
dd:剪切行
D:剪切當前位置到行尾
yy:復制一行
p:粘貼
v:選擇文本區域,之后可以移動光標改變選擇范圍,也可以使用y、x、r命令復制、刪除 3.2 列模式

在命令模式下,按ctrl+v命令進入列選擇模式,列選擇模式同v命令的選擇模式一樣,同時它還可以輸入I命令對選擇的區域每行都插入一樣的內容。

3.3 查找 命令模式下的查找命令:
/<word>:查找下一個<word>,之后可以使用n(N)命令向下(上)查找
?<word>:查找上一個<word>,之后可以使用n(N)命令向下(上)查找
*:查找光標所在單詞下一處
<word>可以是任何正則表達式,用點(.)匹配任意單個字符,用星*表示匹配零或多個任意字符。如(/a*b)可以查找匹配ab、aab 下面是介紹幾個常用的情況:
/^abc:找到以abc開頭的行
/efg$:查找已efg結尾的行
/\s\+:查找一個或多個空白處,

 

vim的替換語法為:[addr]s/源字符串/目的字符串/[option]。[addr] 表示檢索范圍,默認是當前行,%表示整個文件,使用 v命令選中區域后輸入冒號可以實現自定義范圍;源字符串可以使用通配符,查找功能原理一樣;[option]是操作類型,g 表示全局替換,c 表示進行確認。
下面是一些常用的例子:
在每行的開始插入>
:%s/^/>/g
刪除空行。
:%s/^$/ /g
刪除所有的[
:%s/\[//g
將That or this 換成 This or that
:%s/\(That\) or \(this\)/\u\2 or \l\1/

提示:輸入/或者:命令然后再按上下方向鍵,可以查看歷史命令

3.4 多文件操作

在使用vim命令時,后面可以加多個文件名。這時vim首先顯示的是第一個文件。在命令模式下輸入:n(N)命令可以切換到下(上)一個文件,使用ctrl+g可以查看當前打開的文件名,輸入:qa退出所有的文件。
如果想在一個頁面上看到多個文件內容,可以使用分屏,這樣很方便讓我們交互式操作。

在vim命令模式下輸入:sp(:vsp) [文件名],可以進行水平(垂直)分屏。之后輸入wk(j、h、l)命令可以上(下、左、右)切換窗口。輸入:q可以關閉窗口。

3.5 資源管理器

如果我們打開的文件被其他程序修改了,可以使用:e命令來刷新文件內容。使用:e [文件名]可以關閉當前文件同時打開指定的文件。 使用:E命令可以打開當前文件所在目錄。這個類似Windows的資源管理器。

當打開的是文件目錄時,可以通過s命令修改文件排序方式,同時將光標移到指定文件后輸入Enter鍵即可打開它。

對於開發者來說,希望可以看到一個程序的函數名列表,這是需要通過taglist插件來實現。
使用方法如下:
1) 先到官方網站下載插件:
http://www.vim.org/scripts/script.php?script_id=273
2) 將下載的文件解壓到$HOME/.vim目錄下。

$HOME/.vim> unzip taglist_46.zip

3)設置並激活
在.vimrc文件修改下面配置:

let TlistCtagsCmd="/lincapp/aixdev/ctags/bin/ctags"

其中/lincapp/aixdev/ctags是第一步ctags安裝時指定的路徑。
進入HOME/.vim目錄運行vim,執行命令(:helptags .)后退出。

此時就配置好了,打開一個程序文件,按F2命令,即可顯示、隱藏函數定義表了。

3.6 代碼折疊

在查看源代碼時,將光標移至括號(大、中、小括號 3.7 函數定義跳轉

我們閱讀代碼時希望能跳轉到被調函數的定義處。實現這個功能需要使用第一步安裝ctags工具對代碼庫生成tags文件,方法如下:

/home/aixdev/ctags/bin/ctags -RB -f ~/leman/tags ~/rinetd/

-f用來指定生成的tags文件名,用戶可以任何自行修改。最后一個參數指定代碼庫的主目錄(為了能在任何地方都可以跳轉,這里建議寫絕對路徑)。
生成完tags文件后需要修改.vimrc中的tags設置:

:set tags=~/leman/tags "這里修改為你自己的tags文件名

現在就可以在vim里面使用跳轉了,將光標移至函數處,輸入ctrl+]命令進入函數定義,輸入ctrl+t退到上一層調用。如果修改代碼后導致跳轉位置不准了,可以通過重建tags文件來校正。

3.8 代碼自動補全

在編輯模式下,當我們輸入變量名或者函數名一部分時,可以輸入ctrl+p(n)實現自動補全,vim自動搜索上(下)文類似的單詞,如果未找到再嘗試到 tags文件中找你想要的變量。如果有多個滿足的內容,會顯示一個列表,這時用戶可以繼續輸入ctrl+p(n)來選擇上(下)一個。

3.9 文件比較

使用vim比較文件的命令為vim -od 。參數-o表示水平分屏,默認是垂直分屏。

如上題,品紅色表示本行有差異,紅色部分標識了差異的地方。為了能看到全行的內容,可以輸入:set wrap命令來展開,同樣使用:set nowrap可以隱藏。

3.10 其他

1)調用外部命令。 如果想使用vim調用shell命令,可以在命令模式下輸入:! <shell命令>實現。如查看當前所在目錄可使用::!pwd


2)二進制模式查看編輯。 如果vim打開的文件中含有不可見字符,而你又想查看這些不可見字符的二進制數據,這是可以通過:%!xxd -g1命令進入二進制模式查看,進入后可以編輯二進制數據,之后通過:%!xxd -g1 -r命令返回正常模式保存。

第四章:高級用法。

4.1 Linux命令模式:Vim filename

一次移動一個光標

h        j              k          l

左       下             上         右

行內移動

0        到行首         d0或d^    刪除至行首

$        至行尾         d$         刪除至行尾

0=HOME    到行首        $=end      至行尾

G         到文件尾      50G        到50行

gg        到文件首

有小d/大D都是剪切

dd         剪掉當前行

5dd        剪掉當前行起共5行

D          剪空當前行

x          刪除一個字母    

dw         除一個單詞          del  word

u         一次撤一行中的一個動作

U         撤消一行中的所有動作    undo

多行時小u比大U管用

yy        復制當前行

5yy       復制5行

p         粘    paste

ZZ        保存退出

ZQ        不保存退出

vim中大小寫轉化:~或u或U

1、整篇文章大寫轉化為小寫:gg到文件首→guG

gu=把選定范圍全部小寫

G=到文件結束

2、整篇文章小寫轉化為大寫:gg到文件首→gUG

gU=把選定范圍全部大寫

G=到文件結束

4.2 命令模式→輸入模式:按ins/a/A/i/I/o/O/r/R

o           在光標下加一空行並進入插入模式

O           在光標上開一空行並進入插入模式

r           替換一個字符   

R           連續替換多個字符

文件內容查找:

操作鍵      功能

/word       從上而下在文件中查找字符串“word”

?word       從下而上在文件中查找字符串“word”

n            定位下一個匹配的被查找字符串

N            定位上一個匹配的被查找字符串

命令模式→Visual Block:按ctrl+v,舉例:選中多行並添加注釋

#vim→^v→I→#→ESC

#vim→set nu→^v→(100G:當前行到第100行)→I→#→ESC

4.3 命令模式→末行模式:按冒號

默認情況下Vim的搜索是大小寫敏感的,:

:set ignorecase          忽略大小寫

:set noignorecase        不忽略大小寫

:set nu或:set number     設置顯示行號

:set nonu或:set nonumber 不顯示行號

:999              移動光標到第999行

有彩色或無彩色

:syntax clear或:set syntax=off暫時關閉語法高亮

:syntax enable    當前緩沖區打開語法高亮功能。

:w                存盤不退出

:w!               暴力存盤不退出

:w file1          另存為file1

 

:q                無臟數據時正常退出

:q!               放棄臟數據並退出

 

:wq               正常保存並退出

:wq!              暴力存盤並退出

文件內容替換

命令  功能

:s /old/new     當前行中找到的第一個old 替換為new

:s /old/new/g     當前行中查找到的所有old 替換為new

:#,# s/old/new/g    行號“#,#”范圍內替換所有的old為new

:% s/old/new/g  整個文件范圍內替換所有的old為new

:s /old/new/c    c命令:將對每個替換動作提示用戶進行確認

文件加密與解密

vim t.c         打開一文件

:X             據提示操作//加密

:wq             保存退出

 

文件解密

vim t.c         打開文件

:set key=      解密

:wq            保存退出

查看vim幫助

 

4.4 典型故障現象

一般是非正常關閉VI導致的,解決辦法如下:

#rm .install.log

結尾:

下面是一個高手總結VIM的用法:

 
 
標簽:  vimvi


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM