Linux vi 深入簡(jiǎn)出窃爷,從入門到精通

簡(jiǎn)介

題圖無(wú)關(guān)

vi 是 unix 平臺(tái)下一個(gè)著名的的文本編輯器邑蒋,熟練使用它能極大地提高你的效率。而 vim 又作為 vi 的增強(qiáng)版按厘,功能強(qiáng)大医吊、高度可定制,被社區(qū)用戶極大地推崇逮京。

快速入門

三種模式

  • 插入模式 (insert) 用于輸入文本卿堂。在插入模式下,你輸入的任何字符都將顯示在屏幕并存于文件懒棉。
  • 命令 (command) 模式用于大多數(shù)編輯功能草描。在命令模式下,所有的輸入都將產(chǎn)生一定的響應(yīng)而不是 直接到文本中漓藕,例如移動(dòng)光標(biāo)陶珠、刪除一塊文本、拷貝文本等享钞。
  • 第三個(gè)模式是執(zhí)行另外的功能揍诽,例如查找诀蓉、全局替換、處理多個(gè)文件等暑脆。

進(jìn)入文件

vi file_name渠啤。 vi 后面接文件名,就能打開(kāi)編輯界面添吗,如果文件不存在沥曹,將新建一個(gè)文件。進(jìn)入文件后碟联,其實(shí)是進(jìn)入的命令模式妓美,這個(gè)時(shí)候不能做文件的正常編輯。

vi filename :打開(kāi)或新建文件鲤孵,并將光標(biāo)置于第一行首 

vi +n filename :打開(kāi)文件壶栋,并將光標(biāo)置于第n行首 

vi + filename :打開(kāi)文件,并將光標(biāo)置于最后一行首 

vi +/pattern filename:打開(kāi)文件普监,并將光標(biāo)置于第一個(gè)與pattern匹配的串處 

vi -r filename :在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰贵试,恢復(fù)filename 

vi filename....filename :打開(kāi)多個(gè)文件,依次進(jìn)行編輯 

插入模式

進(jìn)入文件后凯正,就可以按 i毙玻、a 命令,進(jìn)入編輯模式廊散。這個(gè)時(shí)候你就可以輸入任何想輸入的內(nèi)容了

保存桑滩、退出

輸入結(jié)束后,按下 ESC奸汇,就返回到了命令模式施符。

  • :wq 保存文件往声,退出
  • :q 退出擂找。防止沒(méi)有保存就退出。
  • :q! 退出浩销。無(wú)論保存與否贯涎,都退出。
  • :wq! 強(qiáng)制保存

作為系統(tǒng)自帶軟件慢洋,不用安裝就很容使用vi --version

常用快捷鍵

光標(biāo)移動(dòng)

在命名模式塘雳,你可以按以下快捷,進(jìn)行光標(biāo)的快速移動(dòng)普筹。

h   左一個(gè)字符
j   下一行
k   上一行
l   右一個(gè)字符
w, W    前一個(gè)單詞 (W 忽略標(biāo)點(diǎn))
b, B    后一個(gè)單詞 (B 忽略標(biāo)點(diǎn))
$   到行尾
^   到行首第一個(gè)非空字符
0   行首
G   到緩沖首
nG  到第 n 行

你想向下移動(dòng) 3行「3j」败明,向后移動(dòng) 3 個(gè)單詞「3w」。其他操作同理太防。

快速編輯

x        向后刪除一個(gè)字符
dw       刪除一個(gè)單詞
d3w      刪除 3 個(gè)單詞
dd       刪除一行
d下箭頭   向下刪除兩行
d上箭頭   向下刪除兩行
D        向后刪除
u        撤銷操作
:sh      切換到命令行妻顶,使用ctrl+d切換回vim

其他命令 見(jiàn)文章末尾

高亮配置

輸入 vi --version 找到 vi 的配置文件。
配置文件的地址:

   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"

打開(kāi)配置文件

/usr/share/vim/vimrc 為默認(rèn)配置,無(wú)法修改讳嘱。所以編輯當(dāng)前用戶的 $HOME/.vimrc 文件

編輯配置文件

注意: 注釋以 『" 』開(kāi)頭幔嗦。

" configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

set ai                  " auto indenting
set history=100         " keep 100 lines of history
set ruler               " show the cursor position
syntax on               " syntax highlighting
set hlsearch            " highlight the last searched term
filetype plugin on      " use the file type plugins
" set nu open line num
colorscheme desert
" When editing a file, always jump to the last cursor position
autocmd BufReadPost *
\ if ! exists("g:leave_my_cursor_position_alone") |
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal g'\"" |
\ endif |
\ endif

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup nobackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup nobackup

主題配置

列出所有的主題

ls /usr/share/vim/vim74/colors

然后在配置文件指定對(duì)應(yīng)的 colorscheme。

例如:

`colorscheme desert`

demo

更多命令

移動(dòng)光標(biāo)類命令

h :光標(biāo)左移一個(gè)字符 

l :光標(biāo)右移一個(gè)字符 

space:光標(biāo)右移一個(gè)字符 

Backspace:光標(biāo)左移一個(gè)字符 

k或Ctrl+p:光標(biāo)上移一行 

j或Ctrl+n :光標(biāo)下移一行 

Enter :光標(biāo)下移一行 

w或W :光標(biāo)右移一個(gè)字至字首 

b或B :光標(biāo)左移一個(gè)字至字首 

e或E :光標(biāo)右移一個(gè)字至字尾 

) :光標(biāo)移至句尾 

( :光標(biāo)移至句首 

}:光標(biāo)移至段落開(kāi)頭 

{:光標(biāo)移至段落結(jié)尾 

nG:光標(biāo)移至第n行首 

n+:光標(biāo)下移n行 

n-:光標(biāo)上移n行 

n$:光標(biāo)移至第n行尾 

H :光標(biāo)移至屏幕頂行 

M :光標(biāo)移至屏幕中間行 

L :光標(biāo)移至屏幕最后行 

0:(注意是數(shù)字零)光標(biāo)移至當(dāng)前行首 

$:光標(biāo)移至當(dāng)前行尾 

屏幕翻滾類命令

Ctrl+u:向文件首翻半屏 

Ctrl+d:向文件尾翻半屏 

Ctrl+f:向文件尾翻一屏 

Ctrl+b沥潭;向文件首翻一屏 

nz:將第n行滾至屏幕頂部邀泉,不指定n時(shí)將當(dāng)前行滾至屏幕頂部。 

插入文本類命令

i :在光標(biāo)前 

I :在當(dāng)前行首 

a:光標(biāo)后 

A:在當(dāng)前行尾 

o:在當(dāng)前行之下新開(kāi)一行 

O:在當(dāng)前行之上新開(kāi)一行 

r:替換當(dāng)前字符 

R:替換當(dāng)前字符及其后的字符钝鸽,直至按ESC鍵 

s:從當(dāng)前光標(biāo)位置處開(kāi)始汇恤,以輸入的文本替代指定數(shù)目的字符 

S:刪除指定數(shù)目的行,并以所輸入文本代替之 

ncw或nCW:修改指定數(shù)目的字 

nCC:修改指定數(shù)目的行 

刪除命令

ndw或ndW:刪除光標(biāo)處開(kāi)始及其后的 n-1 個(gè)字 

do:刪至行首 

d$:刪至行尾 

ndd:刪除當(dāng)前行及其后n-1行 

x或X:刪除一個(gè)字符拔恰,x刪除光標(biāo)后的屁置,而X刪除光標(biāo)前的 

Ctrl+u:刪除輸入方式下所輸入的文本 

搜索及替換命令

/pattern:從光標(biāo)開(kāi)始處向文件尾搜索pattern 

?pattern:從光標(biāo)開(kāi)始處向文件首搜索pattern 

n:在同一方向重復(fù)上一次搜索命令 

N:在反方向上重復(fù)上一次搜索命令 

:s/p1/p2/g:將當(dāng)前行中所有p1均用p2替代 

:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代 

:g/p1/s//p2/g:將文件中所有p1均用p2替換 

選項(xiàng)設(shè)置

all:列出所有選項(xiàng)設(shè)置情況 

term:設(shè)置終端類型 

ignorance:在搜索中忽略大小寫 

list:顯示制表位(Ctrl+I)和行尾標(biāo)志($) 

number:顯示行號(hào) 

report:顯示由面向行的命令修改過(guò)的數(shù)目 

terse:顯示簡(jiǎn)短的警告信息 

warn:在轉(zhuǎn)到別的文件時(shí)若沒(méi)保存當(dāng)前文件則顯示NO write信息 

nomagic:允許在搜索模式中,使用前面不帶“\”的特殊字符 

nowrapscan:禁止vi在搜索到達(dá)文件兩端時(shí)仁连,又從另一端開(kāi)始 

mesg:允許vi顯示其他用戶用write寫到自己終端上的信息 

最后行方式命令

n1,n2 co n3:將n1行到n2行之間的內(nèi)容拷貝到第n3行下 

n1,n2 m n3:將n1行到n2行之間的內(nèi)容移至到第n3行下 

n1,n2 d :將n1行到n2行之間的內(nèi)容刪除 

w :保存當(dāng)前文件 

e filename:打開(kāi)文件filename進(jìn)行編輯 

x:保存當(dāng)前文件并退出 

q:退出vi 

q!:不保存文件并退出vi 

!command:執(zhí)行shell命令command 

n1,n2 w!command:將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之蓝角,若不指定n1,n2饭冬,則表示將整個(gè)文件內(nèi)容作為command的輸入 

r!command:將命令command的輸出結(jié)果放到當(dāng)前行 

寄存器操作

?nyy:將當(dāng)前行及其下n行的內(nèi)容保存到寄存器使鹅?中,其中?為一個(gè)字母昌抠,n為一個(gè)數(shù)字 

?nyw:將當(dāng)前行及其下n個(gè)字保存到寄存器患朱?中,其中?為一個(gè)字母炊苫,n為一個(gè)數(shù)字 

?nyl:將當(dāng)前行及其下n個(gè)字符保存到寄存器裁厅?中,其中?為一個(gè)字母侨艾,n為一個(gè)數(shù)字 

?p:取出寄存器执虹?中的內(nèi)容并將其放到光標(biāo)位置處。這里唠梨?可以是一個(gè)字母袋励,也可以是一個(gè)數(shù)字 

ndd:將當(dāng)前行及其下共n行文本刪除,并將所刪內(nèi)容放到1號(hào)刪除寄存器中当叭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茬故,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蚁鳖,更是在濱河造成了極大的恐慌磺芭,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件醉箕,死亡現(xiàn)場(chǎng)離奇詭異钾腺,居然都是意外死亡甘邀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門垮庐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)松邪,“玉大人,你說(shuō)我怎么就攤上這事哨查《阂郑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵寒亥,是天一觀的道長(zhǎng)邮府。 經(jīng)常有香客問(wèn)我,道長(zhǎng)溉奕,這世上最難降的妖魔是什么褂傀? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮加勤,結(jié)果婚禮上仙辟,老公的妹妹穿的比我還像新娘。我一直安慰自己鳄梅,他們只是感情好叠国,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著戴尸,像睡著了一般粟焊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孙蒙,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天项棠,我揣著相機(jī)與錄音,去河邊找鬼挎峦。 笑死香追,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浑测。 我是一名探鬼主播翅阵,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼歪玲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼迁央!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起滥崩,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤岖圈,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后钙皮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蜂科,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡顽决,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了导匣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片才菠。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖贡定,靈堂內(nèi)的尸體忽然破棺而出赋访,到底是詐尸還是另有隱情,我是刑警寧澤缓待,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布蚓耽,位于F島的核電站,受9級(jí)特大地震影響旋炒,放射性物質(zhì)發(fā)生泄漏步悠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一瘫镇、第九天 我趴在偏房一處隱蔽的房頂上張望鼎兽。 院中可真熱鬧,春花似錦铣除、人聲如沸接奈。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)序宦。三九已至,卻和暖如春背苦,著一層夾襖步出監(jiān)牢的瞬間互捌,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工行剂, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秕噪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓厚宰,卻偏偏與公主長(zhǎng)得像腌巾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子铲觉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容