vi的搜索和替換 - 搜索中進(jìn)行替換
/which #搜索which cwthat #替換成that n #重復(fù)搜索 . #重復(fù)替換 - 一種類型的替換命令
g/pattern/s/old/new/g 第一個 g 表示是有選擇的操作, pattern 指定選擇行的模式, s 表示替換操作, old 是要替換的內(nèi)容, new 是新內(nèi)容, g 表示全局替換下面是一些例子: #給第一到十行加上括弧 :1,10/.*/(&)/ 其中的 & 代表的是搜索模式 ~ 代表上一次替換命令中制定的替換文本 \u 改成大寫 \l 改成小寫 \U或者\L和\e或者\E配合 將后面開始到被替換串結(jié)束或者到\e和\E為止的所有支付變成大寫或者小寫 另外在vi中可以使用除了\,",和|之外的任何非字母表字符做替換命令的分隔符, 這在進(jìn)行路徑替換的時候非常的有用 下面時一些例子: #將That or this 換成 This or that :%s/\(That\) or \(this\)/\u\2 or \l\1/ ---- #將句尾的child換成children :%s/child\([ ,.;!:?]\)/children\1/g ---- #將mgi/r/abox換成mgi/r/asquare :g/mg\([ira]\)box/s//mg//my\1square/g <=> :g/mg[ira]box/s/box/square/g ---- #將多個空格換成一個空格 :%s/ */ /g ---- #使用空格替換句號或者冒號后面的一個或者多個空格 :%s/\([:.]\) */\1 /g ---- #刪除所有空行 :g/^$/d ---- #刪除所有的空白行和空行 :g/^[ ][ ]*$/d ---- #在每行的開始插入兩個空白 :%s/^/> / ---- #在接下來的6行末尾加入. :.,5/$/./ ---- #顛倒文件的行序 :g/.*/m0O <=> :g/^/m0O ---- #尋找不是數(shù)字的開始行,并將其移到文件尾部 :g!/^[0-9]/m$ <=> g/^[^0-9]/m$ ---- #將文件的第12到17行內(nèi)容復(fù)制10詞放到當(dāng)前文件的尾部 :1,10g/^/12,17t$ ~~~~重復(fù)次數(shù)的作用 ---- #將chapter開始行下面的第二行的內(nèi)容寫道begin文件中 :g/^chapter/.+2w>>begin ---- :/^part2/,/^part3/g/^chapter/.+2w>>begin ---- :/^part2/,/^part3/g/^chapter/.+2w>>begin|+t$ ex的命令 d 刪除 m 移動 co 復(fù)制 t 復(fù)制行 p 打印 nu 顯示行號 g 命令用于尋找匹配的行,然后執(zhí)行相應(yīng)的操作 v 反向?qū)ふ移ヅ涞牡男?然后執(zhí)行相應(yīng)的操作 ex中用;代替,做行分界符時會將;前面的行改變成當(dāng)前行 選項設(shè)置 #設(shè)置tab寬度 :set tabstop=4 #設(shè)置縮進(jìn)時移動的寬度 :set shiftwidth=4 #設(shè)置語法高亮模式 :set syntax=fvwm #關(guān)閉備份 :set nobackup :set nowritebackup #建議按照如下的方式使用備份 :set backup :set backupdir=/var/bak :set backupext=.bak #下面一些選項是一次聽講座的時候記錄的, 具體什么意思沒有記清楚, 但應(yīng)該很有用的 :set nocp :set su :set his :set cin :set sm #顯示匹配的括號 :set ai #自動縮進(jìn) :set cino=:ogotocsus :set paste/nopaste :set lbr :set font=mb :set cindent #打開c縮進(jìn)模式 #打開語法高亮顯示 :syntax on #格式重排 = 建議的主題配置: colo torte #圖形模式 colo else #字符模式 命令與鍵 - 為了防止ex對特殊鍵進(jìn)行解釋, vi中可以用C-v對其進(jìn)行跳脫.如下所示:
[RETURN] ^M [ESC] ^[ [BACKSPACE] ^H C-T ^T C-W ^W C-x ^X | 不能轉(zhuǎn)義 - map!用于在插入模式下強(qiáng)制映射, unmap!用于在插入模式下取消映射
- 映射一個功能鍵
:map #1 command #映射第一個功能鍵, 即F1 :map [C-v][Home] command #映射home鍵 - od命令可以用來以8進(jìn)制方式查看文件
- @register 執(zhí)行register中的文本作為命令
- r命令可以用于讀入文件或者將命令的輸出讀入當(dāng)前的緩沖區(qū)
r file #讀入文件 r! ls #讀入命令輸出 - 增加和減少縮進(jìn)級別在vi的自動縮進(jìn)模式中,可以通過下面的命令更改縮進(jìn)級別
C-T 增加一個縮進(jìn)級別 C-D 減少一個縮進(jìn)級別 ^ ^D 光標(biāo)移到開始,并保留縮進(jìn)級別 0 ^D 光標(biāo)移到開始,并重置縮進(jìn)級別 可以通過下面的命令設(shè)置自動縮進(jìn)模式 :set autoindent - <<和>>是進(jìn)行縮進(jìn)和反縮進(jìn)的命令
>> 把行或者塊右移8個空格 << 把行或者塊左移8個空格 - 顯示控制字符
:set list #臨時的等價命令是l - 啟用括號匹配
:set showmatch #:set sm -設(shè)置顯示模式 :normal #正常模式 :syntax #語法高亮模式 :hex #十六進(jìn)制模式 :html #html模式 :man #man模式 :set binary #二進(jìn)制模式 :set incsearch #增量搜索模式 :set showmode #可視模式 - cindent 按照c的格式縮進(jìn)
- 在vi中查看c源碼的時候, 可以在#include "hell.h" 在雙引號中間安gf就可以打開頭文件, C-o(C-t)返回.
- 窗體分割命令
[N] sp[lit] [position] [file] [N] new [position] [file] [N] sv[iew] [position] [file] - 縮寫文本
#用myurl代表http:://localhost/ :ab myurl http:://localhost/ #取消縮寫 :una myurl 使用ctags :! ctags *.c #建立tags文件 : tag name ^] #查看tag定義 命令的選項: -d -g -l #指定語言 -m #為結(jié)構(gòu)的成員建立索引 -t #為c的typedef建立索引 -T #為C++的typedef建立索引 宏 - vi中在全文前植入行號的宏
:%s/^/^|/ :$ :let end=line(".") :| :let num=1 :while num<=end :let line=getline(".") :let line=substitude(line,$,num," ") :call setline(".", line) :+ :let num=num+1 :endwhile 插件 - tip of the day
- calendar
- jad
- sketch
其他 - 加密
:X #之后輸入密碼, :wq退出即可, 去掉密碼只要在輸入提示輸入密碼的時候輸入回車即可 - 將dos文件轉(zhuǎn)化為linux文件
:1,$s///g - 在每行的行首/尾插入newstring
#行首 :g/^/s//newstring/g :%s/^/newstring/g 行尾 :g/$/s//newstring/g :%s/$/newstring/g | | |