中文字幕视频在线看,亚洲精品无码久久久久av老牛,亚洲精品无码av片,亚洲av影院一区二区三区,亚洲国产精品成人久久久

vi和vim有什么區(qū)別(vi設(shè)計(jì)包括什么)

它是一個(gè)老式的文字處理工具,但是功能很齊全,不僅是文本處理工具,還是一個(gè)程序編輯工具,就連官方網(wǎng)站也說vim是一個(gè)程序開發(fā)工具而不是文字處理軟件,因?yàn)樗撕芏囝~外的功能,如:多文件編輯,區(qū)塊復(fù)制等,這些功能讓我們在進(jìn)行配置文件修改的時(shí)候會(huì)更方便。今天就來一起學(xué)習(xí)一下vi和vim。

什么是 vim?

Vim 是從 vi 發(fā)展出來的一個(gè)文本編輯器。代碼補(bǔ)全、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。

簡單來說, vi 是老式的文字處理器,不過功能已經(jīng)很齊全了,但是還是有可以進(jìn)步的地方。 vim 則可以說是程序開發(fā)者的一項(xiàng)很好用的工具。

vi和vim有什么區(qū)別(vi設(shè)計(jì)包括什么)

vi和vim的小差別

Linux 系統(tǒng)會(huì)內(nèi)置 vi 文本編輯器。

Vim 具有程序編輯的能力,可以看做是 vi 的增強(qiáng)版本,主動(dòng)的以字體顏色辨別語法的正確性,方便程序設(shè)計(jì);代碼補(bǔ)全,編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能豐富,在程序員中被廣泛地使用。

由于個(gè)別版本的linux默認(rèn)只安裝vi,所以你需要額外安裝vim的軟件包,另外vim在字符界面下不能輸入中文,而在圖形界面下能否輸入中文則取決于系統(tǒng)中是否安裝了中文輸入法。

為什么要使用vim?

雖然在linux下的文本編輯器眾多,這些工具都有各自的優(yōu)點(diǎn),但是有幾點(diǎn)是其它編輯工具所不能比擬的

  • 所有的類Unix系統(tǒng)都內(nèi)建vi,其它的編輯工具則不一定,而vim相當(dāng)于是vi的升級版
  • 很多軟件的編輯界面都會(huì)調(diào)用vi,如后面提到的crontab、edquota等
  • vim具有程序編輯能力,可以主動(dòng)以字體顏色標(biāo)識(shí)語法的正確性,方便代碼編寫
  • 程序簡單,編輯速度非???/li>

三種模式

由于vi/vim是一個(gè)全屏幕的文本編輯器,它工作在三種模式下:分別是命令模式、輸入模式和末行模式。

可以分別從命令模式切換到輸入模式和末行模式,也可以從末行模式或輸入模式切換到命令模式,但是輸入模式與末行模式之間不能互相切換。

vi和vim有什么區(qū)別(vi設(shè)計(jì)包括什么)

命令模式:

用戶剛剛啟動(dòng) vi/vim,便進(jìn)入了命令模式。

此狀態(tài)下敲擊鍵盤動(dòng)作會(huì)被Vim識(shí)別為命令,而非輸入字符。比如我們此時(shí)按下i,并不會(huì)輸入一個(gè)字符,i被當(dāng)作了一個(gè)命令。

以下是常用的幾個(gè)命令:

i 切換到輸入模式,以輸入字符。
x 刪除當(dāng)前光標(biāo)所在處的字符。
: 切換到底線命令模式,以在最底一行輸入命令。

若想要編輯文本:啟動(dòng)Vim,進(jìn)入了命令模式,按下i,切換到輸入模式。

命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。

輸入模式

在命令模式下按下i就進(jìn)入了輸入模式。

在輸入模式中,可以使用以下按鍵:

字符按鍵以及Shift組合,輸入字符
ENTER,回車鍵,換行
BACK SPACE,退格鍵,刪除光標(biāo)前一個(gè)字符
DEL,刪除鍵,刪除光標(biāo)后一個(gè)字符
方向鍵,在文本中移動(dòng)光標(biāo)
HOME/END,移動(dòng)光標(biāo)到行首/行尾
Page Up/Page Down,上/下翻頁
Insert,切換光標(biāo)為輸入/替換模式,光標(biāo)將變成豎線/下劃線
ESC,退出輸入模式,切換到命令模式

底線命令模式

在命令模式下按下:(英文冒號)就進(jìn)入了底線命令模式。

底線命令模式可以輸入單個(gè)或多個(gè)字符的命令,可用的命令非常多。

在底線命令模式中,基本的命令有:

1、:w? ?保存文件但不退出vi?
2、:w file 將修改另外保存到file中,不退出vi?
3、:w!? 強(qiáng)制保存,不推出vi
4.、:wq 保存退出
5、:wq! 強(qiáng)制保存文件,并退出vi 
6、:q 不保存文件,退出vi
7、:q!不保存文件,強(qiáng)制退出vi?
8、:e! 放棄所有修改,從上次保存文件開始再編輯
9、:wq? 保存文件并退出vi?

按ESC鍵可隨時(shí)退出底線命令模式。

常用命令

打開文件,修改文件,保存退出,另存為文件。

vi /root/file.txt 打開文件路徑
a 修改
Esc 冒號 w 保存  或者 ZZ  保存退出。
:wq!強(qiáng)行保存退出,只有文件所有者,或者是root用戶。
:w  【保存】
:w /root/service.bak   【另存為】

三種模式下切換

命令模式    :
插入模式    a 或者 i  或者 o
編輯模式    ESC

搜索關(guān)鍵字

Esc /關(guān)鍵字 回車
n下一個(gè) 
shift+n 上一個(gè)

插入命令

a   【在光標(biāo)后附加文本】
A   【在本行行末附加文本】
i   【在光標(biāo)前插入文本】
I   【在本行開始插入文本】
o   【在光標(biāo)下插入新行】
O   【在光標(biāo)上插入新行】

定位命令

向左:
h或方向左鍵      【左移一個(gè)字符】
10h              向左移動(dòng)10個(gè)字符,到行首會(huì)停止

向下:
j或方向下       【下移一行】
5j              向下移動(dòng)5行,或者5下箭頭

向上:
k/方向上       【向上一行】
7k              #向上移動(dòng)7行

向右:
l/方向右鍵      【右邊移一個(gè)字符】   
6l #向右移動(dòng)6個(gè)字符,到行末會(huì)停止不會(huì)換行

$               【移至行尾】
0(零)            【移至行首】
H               【移至屏幕上端】
M               【移至屏幕中央】
L               【移至屏幕中下端】
W或w         【定位到當(dāng)前句子的開始位置】
E或e         【定位到當(dāng)前這句話的最后位置】

:set nu         【設(shè)置行號】
:set nonu       【取消行號】
gg              【到第一行】
G               【到最后一行】
nG或4gg          【到第n行】到第四行
:n              【到第n行】


Ctrl+b          【在文件中向上移動(dòng)一頁(相當(dāng)于 PageUp 鍵)】
Ctrl+f          【在文件中向下移動(dòng)一頁(相當(dāng)于 PageDown 鍵)】

撤銷命令

這個(gè)命令很常用,要記?。?/p>

u               【撤銷上一步的操作】
Ctrl+r          【恢復(fù)上一步被撤銷的操作】

貼士:比如修改nginx的配置之后保存不退出 :w 再 ctrl+z將文檔放在后臺(tái),用nignx -t ,或者重啟nginx服務(wù)。如果有問題則快速回到文檔編輯頁面fg,再按u。保存

實(shí)例:

vi /etc/nginx/nginx.conf
i編輯
再 :w 保存
ctrl+z
[1]+  Stopped                 vi /etc/nginx/nginx.conf
# jobs
[1]+  Stopped                 vi /etc/nginx/nginx.conf
# nginx -t 測試nginx文檔是否有錯(cuò)誤。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# fg 將后臺(tái)程序進(jìn)入前臺(tái)

刪除命令

x               【刪除光標(biāo)所在字符】
nx              【刪除光標(biāo)所在處后n個(gè)字符】
dd              【刪除光標(biāo)所在行,ndd刪除n行】
dG              【刪除光標(biāo)所在行到末尾的內(nèi)容】
D               【刪除從光標(biāo)所在處到行尾】
:n1,n2d         【刪除指定的行】 
:10,20d         【刪除第十行到第20行的內(nèi)容】
光標(biāo)移到第一行,然后dG    【刪除所有內(nèi)容】

小貼士,一般在操作在本地編輯好的文檔,全部復(fù)制,然后將服務(wù)器文檔 dG全部刪除,在粘貼新的文檔。

復(fù)制剪切命令

yy、Y            【復(fù)制當(dāng)前行】
nyy、nY          【復(fù)制當(dāng)前行一下n行】 
dd              【剪切當(dāng)前行】
ndd             【剪切當(dāng)前行一下n行】
p、P         【粘貼在當(dāng)前光標(biāo)所在行下活行上】

替換和取消命令

r               【取代光標(biāo)所在處字符】
R               【從光標(biāo)所在處開始替換字符,按Esc結(jié)束】
u               【取消上一步操作】   
Ctrl+r          【恢復(fù)上一步被撤銷的操作】

搜索和替換命令

/string             【向前搜索指定字符,搜索時(shí)請忽略大小寫:set ic】
n                   【搜索指定字符串的下一個(gè)出現(xiàn)位置】       
:%s/old/new/g       【全文替換指定字符】  
:%s/^#//g           【去掉以#注釋】
:%s/^/#/g           【在全文開頭添加#】  
:n1,n2s/old/new/g   【在指定范圍內(nèi)替換指定字符串】
:n1,n2s/^/#/g
:s/str1/str2/       【用字符串 str2 替換本行中首次出現(xiàn)的字符串 str1】
g是全局參數(shù),如果加上這個(gè),你文中有多少就替換多少,如果不加,就只能一個(gè)一個(gè)的替換!
fa(或fb)         【查詢這行a字母的的地方(或b字母)】
3fa                 【在這行中查找a出現(xiàn)的第三個(gè)位置】

應(yīng)用實(shí)例

導(dǎo)入其他文件內(nèi)容
            :r   文件名

在vi執(zhí)行命令
            :! 命令       
定義快捷鍵:
            :map 快捷鍵 觸發(fā)命令           
        實(shí)例:
            :map ^P I# <ESC>   【鍵盤按鍵實(shí)現(xiàn)^P:ctrl+v ctrl+p或者 ctrl+v+p 】
            
            :map ^B 0x
連續(xù)注釋:
        :n1,n2s/^/#/g
        :n1,n2s/^/#//g
        :n1,n2s/^////g
替換:
    :ab sammail samlee@163.com      

顯示行號

:set nu    顯示行號(注意前面輸入冒號進(jìn)入底行命令模式)
:set nonu  不顯示行號

環(huán)境變量與記錄

.viminfo:記錄用戶的行為,之前編輯過的文件光標(biāo)在什么位置,在這個(gè)文件中進(jìn)行過什么操作等,自動(dòng)建立

.vimrc:定義vim的默認(rèn)設(shè)置,如是否顯示行號等,需要手動(dòng)生成

命令

說明

:set nu /:set nonu

就是設(shè)定與取消行號!

:set hlsearch /:set nohlsearch

搜索時(shí)是否高亮顯示。默認(rèn)值是 hlsearch

:set autoindent :set noautoindent

是否自動(dòng)縮排?autoindent 就是自動(dòng)縮排。

:set backup/:set nobackup

是否自動(dòng)備份,一般是 nobackup 的, 如果設(shè)定 backup 的話,那么當(dāng)你更動(dòng)任何一個(gè)檔案時(shí),則源文件會(huì)被另存成一個(gè)檔名為 filename~ 的檔案。

:set ruler/:set noruler

是否顯示右下角的一些狀態(tài)欄說明

:set showmode/:set noshowmode

是否顯示左下角的狀態(tài)欄。

:set backspace=(012)

一般來說, 如果我們按下 i 進(jìn)入編輯模式后,可以利用backspace來刪除任意字符的。 但是,某些版本則不許如此。這時(shí)就可以使用這個(gè)設(shè)置2 可以刪除任意;0 或 1 僅可刪除剛剛輸入內(nèi)容

:set all

顯示目前所有的環(huán)境變量設(shè)定值。

:set

顯示與系統(tǒng)默認(rèn)值不同的設(shè)置, 用戶修改過的

:syntax on :syntax off

是否顯示顏色

:set bg=dark :set bg=light

可用以顯示不同的顏色色調(diào),預(yù)設(shè)是『 light 』。如果你常常發(fā)現(xiàn)批注的字體深藍(lán)色實(shí)在很不容易看, 那么這里可以設(shè)定為 dark 喔!試看看,會(huì)有不同的樣式呢!

密碼設(shè)置與取消

加密

vim filename
:X
Warning: Using a weak encryption method; see :help 'cm'                                                                                   
Enter encryption key: 
輸入密碼
Enter encryption key: ******
Enter same key again: ******
保存(否則不加密)
 
# cat filename 
VimCrypt~01!i
# vim filename   (不能用vi)
Need encryption key for "filename"
Warning: Using a weak encryption method; see :help 'cm'
Enter encryption key: 

取消密碼

vim filename--->輸入正確密碼--->:X--->空密碼--->保存
vim filename--->:set key= --->保存

注意:不要對系統(tǒng)文件進(jìn)行加密的操作

其他命令


J(大寫):將光標(biāo)所在行下一行合并到該行,中間有空格間隔,光標(biāo)移動(dòng)到該空格處,要想達(dá)到在寫字板中”[end]+[del]“的效果(即光標(biāo)移動(dòng)到行末,然后del使下一行提到該行),可以用Jx組合命令。

u(小寫):撤銷上一次所做的操作。多次使用 u 命令會(huì)一步一步依次撤銷之前做過的操作(在一次切換到文本輸入模式中輸入的所有文本算一次操作)。

U(大寫):一次性撤銷自上次移動(dòng)到當(dāng)前行以來做過的所有操作,再使用一次 U 命令則撤銷之前的 U 命令所做的操作,恢復(fù)被撤銷的內(nèi)容。所以U命令是不能一直撤銷的,相當(dāng)于只能撤銷一步,再使用就是恢復(fù)了。

[ctrl]+ r:按住ctrl鍵和r,類似快捷鍵的用法,是恢復(fù)操作,與命令u(小寫)對應(yīng),可以在多次使用u命令撤銷多步后,用該命令多次恢復(fù)至最新。
.(小數(shù)點(diǎn)):重復(fù)執(zhí)行上一次的命令,注意和恢復(fù)不一樣。例如重復(fù)粘貼,重復(fù)刪除。

字符差異

由于linux和windows的系統(tǒng)差異,它們針對于文件的中的一些特殊符號表示方式也是不同的,比如說用來表示換行的符號等,如

# cat -A hello-linux.txt
hello$
$
# cat -A hello-windows.txt
hello^M$
^M$

如果這種文件是從windows拷貝到linux的一本小說的話,基本沒什么問題,但是如果是一個(gè)我們需要執(zhí)行指定工作的shell腳本就會(huì)出現(xiàn)問題,因?yàn)閘inux不認(rèn)識(shí)這種符號的含義,就會(huì)導(dǎo)致shell腳本無法執(zhí)行(踩坑了很多次,都是在win編輯txt文本,再后綴名sh,導(dǎo)致莫名的報(bào)錯(cuò))。所以此時(shí)我們就要對這種文件進(jìn)行處理

# unix2dos [-kn] file [newfile]
選項(xiàng)與參數(shù):
-k  :保留文件原本的 mtime 時(shí)間格式
-n  :保留舊文件,將轉(zhuǎn)換后的內(nèi)容輸出到新文件,如: dos2unix -n old new

還有一種方式就是直接在linux下編輯文件,再下載到win系統(tǒng)下使用IDE編輯器編輯開發(fā),再回到linux全部粘貼。

總結(jié)

以上的常用命令和操作都是基于vim的基本原理形成的,vim的命令很強(qiáng)大,尤其底行命令模式甚至可以類似于一個(gè)小型的腳本語言。

如果有遺漏,歡迎留言告知,謝謝!

vim官網(wǎng)有一個(gè)經(jīng)典的全鍵位圖,如下

vi和vim有什么區(qū)別(vi設(shè)計(jì)包括什么)

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至2705686032@qq.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。文章鏈接:http://m.z1146.cn/zx/yunwei/4238.html

(0)
尊云服務(wù)器的頭像尊云服務(wù)器
上一篇 2024 年 4 月 20 日 08:23
下一篇 2024 年 4 月 20 日 08:28

相關(guān)推薦

發(fā)表回復(fù)

登錄后才能評論

聯(lián)系我們

400-900-3935

在線咨詢: QQ交談

郵件:cong@zun.com

工作時(shí)間:365天無休服務(wù) 24小時(shí)在線

添加微信