vim編輯器詳解

vi(vim)是上Linux很是經常使用的編輯器,不少Linux發行版都默認安裝了vi(vim)。vi(vim)命令繁多可是若是使用靈活以後將會大大提升效率。linux

vi是「visual interface」的縮寫,vim是vi IMproved(加強版的vi)。在通常的系統管理維護中vi就夠用,若是想使用代碼加亮的話能夠使用vim。vim

下面是vi的使用教程:包含vi的基本介紹、使用模式、文件的打開關閉保存、插入文本或新建行、移動光標、刪除、恢復字符或行、搜索等等,緩存

算是一篇比較適合新手學習vi的教程。編輯器

 

 

vi有3個模式:插入模式、命令模式、低行模式(底座模式)。學習

 

插入模式:在此模式下能夠輸入字符,按ESC將回到命令模式。spa

命令模式:能夠移動光標、刪除字符等。unix

低行模式:能夠保存文件、退出vi、設置vi、查找等功能(低行模式也能夠看做是命令模式裏的)。orm

 

 

打開文件、保存、關閉文件(vi命令模式下使用)blog

vi  filename     //打開filename文件教程

:w               //保存文件

:w  cszhi.com   //保存至cszhi.com文件

:q               //退出編輯器,若是文件已修改請使用下面的命令

:q!       //退出編輯器,且不保存

:wq             //退出編輯器,且保存文件

 

插入文本或行(vi命令模式下使用,執行下面命令後將進入插入模式,按ESC鍵可退出插入模式)

a        //在當前光標位置的右邊添加文本

i        //在當前光標位置的左邊添加文本

A       //在當前行的末尾位置添加文本

I        //在當前行的開始處添加文本(非空字符的行首)

O      //在當前行的上面新建一行

o      //在當前行的下面新建一行

R      //替換(覆蓋)當前光標位置及後面的若干文本

J       //合併光標所在行及下一行爲一行(依然在命令模式)

 

 

移動光標(vi命令模式下使用)

一、使用上下左右方向鍵

二、命令模式下:

h   向左、j   向下、k   向上、l  向右。

空格鍵向右、Backspace向左、Enter移動到下一行首、-移動到上一行首。

 

 

刪除、恢復字符或行(vi命令模式下使用)

x         //刪除當前字符

nx        //刪除從光標開始的n個字符

dd        //刪除當前行

ndd       //向下刪除當前行在內的n行

u         //撤銷上一步操做

U         //撤銷對當前行的全部操做

 

 

搜索(vi命令模式下使用)

 

/cszhi    //向光標下搜索cszhi字符串

?cszhi    //向光標上搜索cszhi字符串

n           //向下搜索前一個搜素動做

N          //向上搜索前一個搜索動做

 

 

 

 

跳至指定行(vi命令模式下使用)

n+//向下跳n行 (數字+shift +)

n-//向上跳n行 (數字+shift -)

nG        //跳到行號爲n的行

G         //跳至文件的底部

 

 

 

 

設置行號(vi命令模式下使用)

:set  nu     //顯示行號

:set nonu    //取消顯示行號

 

 

 

 

複製、粘貼(vi命令模式下使用)

yy    //將當前行復制到緩存區,也能夠用 "ayy 複製,"a 爲緩衝區,a也能夠替換爲a到z 的任意字母,能夠完成多個複製任務

nyy   //將當前行向下n行復制到緩衝區,也能夠用 "anyy 複製,"a 爲緩衝區,a也能夠替換爲a到z的任意字母,能夠完成多個複製任務

yw    //複製從光標開始到詞尾的字符

nyw   //複製從光標開始的n個單詞

y^    //複製從光標到行首的內容

y$    //複製從光標到行尾的內容

p     //粘貼剪切板裏的內容在光標後,若是使用了前面的自定義緩衝區,建議使用"ap 進行粘貼

P     //粘貼剪切板裏的內容在光標前,若是使用了前面的自定義緩衝區,建議使用"aP 進行粘貼

 

 

 

 

 

替換(vi命令模式下使用)

:s/old/new //用new詞替換行中首次出現的old詞

:s/old/new/g         //用new詞替換行中全部的old詞

:n,m s/old/new/g    //用new詞替換從n到m行裏全部的old詞

:%s/old/new/g     //用new詞替換當前文件裏全部的old詞

 

 

 

 

編輯其餘文件

 

:e  o_filenam  //編輯文件名爲 o_filenam 的文件

 

 

修改文件格式

:set fileformat=unix   //將文件修改成unix格式,如win下面的文本文件在linux下會出現^M

這裏能夠直接去^M:

有兩種狀況,會出現打開的文件都顯示^M符號:
1. vim被配置爲fileformat=unix,而你打開的文件都是dos格式的。unix格式的換行符爲0A(ascii碼)也就是<LF>,dos格式的換行符爲 0D 0A(也就是<CR><LF>),<CR>其實就顯示爲^M。下面是詳細講解:
DOS, Mac 和Unix格式的文件
回想計算機的史前史,那時的打字機使用兩個字符來開始一個新行。
首先是一個字符命令使打印頭移回開始位置(回車,<CR>),而後另外一個字
符命令控制向前進紙一行(進紙,<LF>).
在計算機誕生之初,存儲設備十分昂貴。因而有人就提出沒有必要
用兩個字符來表示一行的結束。UNIX一族決定只用進紙一個字符<Line
Feed>來表示行尾。來自蘋果陣營的人則把回車<CR>做爲換行的標
準。MS-DOS(和微軟的Windows)仍然決定沿用古老的回車換行<CR><LF>傳
統。
這也意味着若是把文件從一個系統移到另外一個不一樣的系統,你就會遇
到與換行相關的問題。Vim編輯器則能夠識別這些不一樣格式的文件。
你能夠在'fileformats'選項裏指定你但願Vim能自動識別的格式的集
合。下面的這個命令就可讓Vim能自動識別UNIX格式和MS-DOS格式:
:set fileformats=unix,dos
把這句話放在_vimrc中,通常狀況就都能OK。
2. 你的文本中既有unix的換行符,又有dos的換行符,那麼vim會認爲你打開的是unix的,因此,那些dos的換行符就會出現惱人的^M。不過這種狀況不常見。辦法是:
1)若你的vim版本大於7.1,並想用dos顯示和保存,以下語句:
:e ++ff=dos
2)若你的vim版本小於等於7.1,又想把文章按照dos格式顯示和保存,以下語句:
:set ff=dos
:%s/\r\+$//e  /*清除行末的不可打印字符包括但不限於^M*/
3)若你的vim版本小於等於7.1,又想把文章按照unix格式顯示和保存,以下語句:
:set ff=unix
:%s/\r\+$//e
 
或者打開文件:
替換命令就能夠了,輸入^M的時候按住ctrl鍵不放,依次按下v和m
如全文替換爲空(沒有):
1,$s/^M//g

相關文章
相關標籤/搜索