vi profile
創(chuàng)新互聯(lián)是專業(yè)的中衛(wèi)網(wǎng)站建設(shè)公司,中衛(wèi)接單;提供網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行中衛(wèi)網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
返回
:q 退出
:wq或者:x或者shift+zz 保存并退出
:q! 不保存并退出
:w 保存
:w! 強制保存
編輯到輸入模式:
i 在當前光標前面輸入
I 在當前光標所在行的行首,轉(zhuǎn)換為輸入模式
a 在當前光標后面輸入
A 在當前光標所在行的行尾,轉(zhuǎn)換為輸入模式
o 在當前光標所在行的下方,新建一行,并轉(zhuǎn)為輸入模式
O 在當前光標所在行的上方,新建一行,并轉(zhuǎn)為輸入模式
1、 移動光標
字符:方向鍵上下左右或者鍵盤kjhl(上下左右)
單詞:w移至下一個單詞的詞首;e跳至當前或下一個單詞的詞尾;b跳至當前或前一個單詞的詞首
行內(nèi):0絕對行首;^行首的第一個非空白字符;$絕對行尾
行間:G文章末尾;3G第3行;gg文章開頭
翻屏:ctrl f【往后翻】;Ctrl b【往前翻】
2、 刪除、替換單個字符
x刪除光標位置字符;3x刪除光標開始3個字符;r替換光標位置字符
dw刪除一個單詞;4dw刪除光標開始的4個單詞;dd刪除光標所在行;5dd刪除光標開始的5行
3、復制粘貼剪切
yw復制一個單詞,p在該行粘貼單詞;yy復制整行,p在該行下方粘貼整行
dd剪切整行,p再粘貼整行;dw剪切一個單詞,p再粘貼一個單詞
4、 撤銷重做
u:撤銷;ctrl+r:重做撤銷的操作;.重復上一步的操作【假設(shè)先dd,再.,會再執(zhí)行dd命令】
1、 set設(shè)置
set nu
set nonu
set readonly #設(shè)置只讀文件,不能修改,只在當前環(huán)境有效,退出文件,再次打開,這個只讀就無效了
set noreadonly #取消只讀
2、 /查找
/after查找文檔中的after【可以找到所有的after】,n向下翻,N向上翻
:/after查找文檔中的after所在行【可以找到所有的after】,n向下翻,N向上翻
3、!執(zhí)行命令
比如:查找root目錄
:!ls /root/
4、 查找并替換
格式
【 :查找范圍s/查找的詞/要替換的詞/ 】
或者【:查找范圍s#查找的詞#要替換的詞# 】
或者【:查找范圍s%查找的詞%要替換的詞%】,
即分隔符可以是/、#、%
其中, 查找范圍 包括【.當前光標行】;【$末尾行】;【%全文】;【g一行內(nèi)全部替換】;【i忽略大小寫】
比如 【 :.,$s/after/before/】 表示在當前光標行【.】到末尾【$】這個范圍內(nèi),將after替換為before, 但是如果一行有多個after的話,只會把第一個after替換掉 。
比如 【 :%s/after/before/】 表示在全文,將after替換為before,但是如果一行有多個after的話,只會把第一個after替換掉。
比如 【:%s/after/before/g】 ,表示在全文,將after替換為before,但是 如果一行有多個after的話,會把該行所有after替換掉,因為在命令里面加了g 。
比如 【:%s/after/before/gi】 ,表示在全文,將after替換為before,且忽略大小寫并替換一行內(nèi)所有after。
比如 【 :%d或者dG】 ,表示刪除全文
比如 【:1,$-4d】 ,表示刪除第一行到倒數(shù)第5行的數(shù)據(jù)
比如 【:1,4y】 ,表示復制1到4行,再按p可粘貼這4行
1.如圖,vi 文件名,接著按回車即可打開對應的文件,如果沒有對應的文件,那么vi命令就會自動創(chuàng)建一個新的。
2.如圖,vi打開文件后是命令模式狀態(tài),要用i或者a命令才可進入可編輯的狀態(tài)喲。這里我就按a進入了編輯模式了哦。
3.如圖,在編輯模式的情況下敲完內(nèi)容,這個時候就應該保存文件了。保存文件要按esc,這樣就會退回vi的命令模式喔。
4.按完esc后輸入冒號(英文的),然后就轉(zhuǎn)換到了末行模式了,末行模式?jīng)Q定是否保存文件。
5.如圖所示,末行模式下可以按x來保存,x命令可以保存編輯好的文件喲。
6.也可以用到wq來保存,如果是q!則不保存哦,這點要自己謹記在心,這里我就保存一下vi編寫的文件。
7.然后查看,查看用到了cat 文件名哦。
8.如圖所示,vi編寫的內(nèi)容可以看到,這表明保存成功。
linux下vim查找命令:
/text--查找text,按n查找下一個,N查找上一個
?text--查找text(反向查找),按n查找下一個,N查找上一個
*/#--查找光標當前的單詞,相當于/text
:setignorecase--查找忽略大小寫
:setnoignorecase--查找不忽略大小寫
:nohlsearch--關(guān)閉當前的高亮顯示,當再次查找時恢復高亮
:setincsearch--逐步搜索模式,對當前鍵入的字符進行查找,不必等輸入完成
:setwrapscan--重新搜索,當搜索到文件頭或尾時,返回重新搜索
擴展資料:
1、文件窗口:
:openfile--在當前窗口打開新文件
:splitfile--在新窗口打開文件
:newfile--用新窗口打開文件,同:splitfile
:bn--切換到下一個文件
:bp--切換到上一個文件
:args--查看當前打開的文件列表(當前正在編輯的文件會用[]括起來)
:e
:e\qadriveest.txt--打開遠程文件
:split--打開一個新窗口,光標停在頂層的窗口上
:new--打開一個新窗口,光標停在頂層的窗口上
:vsplit--橫向打開窗口。
Ctrl+ww--移動到下一個窗口
Ctrl+wj--移動到下方的窗口
Ctrl+wk--移動到上方的窗口
2、其他命令:
Esc/Ctrl+[--鍵入命令
:!command--執(zhí)行shell命令
:suspend/Ctrl+Z--掛起vim,回到shell,fg返回vim
:!perl-cscript.pl--檢查perl腳本語法,不用退出vim
:!perlscript.pl--執(zhí)行perl腳本,不用退出vim
:help--顯示幫助文檔
:helpi--顯示i的幫助文檔(:特殊鍵用,-t:啟動參數(shù)用-)
3、編輯命令:
插入:
i--在當前位置插入
A--在當前行尾插入
I--在當前行首插入
o--在當前行后插入一行
O--在當前行前插入一行
拷貝粘貼剪切:
yy--拷貝當前行
2yy--拷貝當前行開始的2行
p--在當前光標后粘貼
P--在當前行前粘貼
:1,10co20--將1-10行插入到第20行之后。
:1,$co$--將整個文件復制一份并添加到文件尾部
v--進入選擇模式,相當于在Windows下按住Shift選擇
V--進入選擇模式,整行選擇
ddp--交換當前行和其下一行
2dd--剪切當前行之后的2行
:1,10d--將1-10行剪切
:1,10m20--將第1-10行移動到第20行之后
替換:
ra--將當前光標所在字符替換為a
s/old/new/--用old替換new,替換當前行的第一個匹配
s/old/new/g--用old替換new,替換當前行的所有匹配
%s/old/new/--用old替換new,替換所有行的第一個匹配
%s/old/new/g--用old替換new,替換所有匹配
:10,20s/^/text/g--在第10行到第20行每行前面加上text(:3,5s/^/#/g--注釋3-5行,:3,5s/^#//g
--解除3-5行的注釋,:1,$s/^/#/g--注釋整個文檔,:%s/^/#/g--注釋整個文檔)
ddp--交換光標所在行和下一行
移動:
h--左移一個字符(5h--左移5個字符)
l--右移一個字符(5l--右移5個字符)
k--上移一個字符(5k--上移5個字符)
j--下移一個字符(5j--下移5個字符)
w--向后移動一個單詞(5w--向后移動5個單詞)
b--向前移動一個單詞(5b--向前移動5個單詞)
e--同w,光標停在單詞尾部
ge--同e,光標停在單詞尾部
^--移動到本行第一個非空白字符
0--移動到本行第0個字符
--同0
$--移動到行尾(3$--移動到下面3行的行尾)
gg--移動到文件頭(10gg--移動到第10行首)
[[--同gg
G--移動到文件尾(10G--移動到第10行尾)
]]--同G
fx--移動到本行光標后第一個為x的字符(3fx--移動到本行光標后第3個為x的字符)
Fx--同fx,反向查找
:20--跳到20行行首
Ctrl+e--向下滾動一行
Ctrl+y--向上滾動一行
Ctrl+d--向下滾動半屏
Ctrl+u--向上滾動半屏
Ctrl+f--向下滾動一屏
Ctrl+b--向上滾動一屏
撤銷:
u--撤銷
U--撤銷對整行的操作
Ctrl+r--撤銷剛才的撤銷
刪除:
x--刪除當前字符(3x--刪除當前光標開始向后三個字符)
X--刪除當前字符的前一個字符,同dh
dl--刪除當前字符,同x
dh--刪除前一個字符
dd--刪除當前行
dj--刪除上一行
dk--刪除下一行
10d--刪除當前行開始的10行。
D--刪除當前字符至行尾,同d$
kdgg--刪除當前行之前所有行(不包括當前行)
:1,10d--刪除1-10行
:11,$d--刪除11行及以后所有的行
:1,$d--刪除所有行
J--刪除兩行之間的空行,合并兩行
退出
:wq--保存并退出
ZZ--保存并退出
:q!--強制退出并忽略所有更改
:e!--放棄所有修改,并打開原來文件
:close--關(guān)閉窗口,最后一個窗口不能使用此命令,可以防止意外退出vim
:q--如果是最后一個被關(guān)閉的窗口,那么將退出vim
簡單的來說, vi 是老式的字處理器,不過功能已經(jīng)很齊全了,但是還是有可以進步的地方。 vim 則可以說是程序開發(fā)者的一項很好用的工具,就連 vim 的官方網(wǎng)站 ( ) 自己也說 vim 是一個『程序開發(fā)工具』而不是文字處理軟件~ _ 。你可以將 vim 視作 vi 的進階版本,vim 可以用顏色或底線等方式來顯示一些特殊的信息。
基本上 vi 共分為三種模式,分別是『一般指令模式』、『編輯模式』與『指令列命令模式』。 這 三種模式的作用分別是:一般指令模式 (command mode)、編輯模式 (insert mode)、指令列命令模式 (command-line mode)。
以 vi 打開一個文件就直接進入一般指令模式了(這是默認的模式,也簡稱為一般模式)。在這個模 式中, 你可以使用『上下左右』按鍵來移動光標,你可以使用『刪除字符』或『刪除整列』來處 理文件內(nèi)容, 也可以使用『復制、貼上』來處理你的文件數(shù)據(jù)。
在一般指令模式中可以進行刪除、復制、貼上等等的動作,但是卻無法編輯文件內(nèi)容的! 要等到你按下『 i, I, o, O, a, A, r, R 』等任何一個字母之后才會進入編輯模式。通常在 Linux
中,按下這些按鍵時,在畫面的左下方會出現(xiàn)『 INSERT 或 REPLACE 』的字樣,此時才可以進 行編輯。而如果要回到一般指令模式時, 則必須要按下『Esc』這個按鍵即可退出編輯模式。
在一般模式當中,輸入『 : / ? 』三個中的任何一個按鈕,就可以將光標移動到最底下那一列。在 這個模式當中, 可以提供你『搜尋資料』的動作,而讀取、存盤、大量取代字符、離開 vi 、顯 示行號等等的動作則是在此模式中達成的!
具體命令如下圖所示(來自鳥哥的 linux 私房菜)
以下是VI有關(guān)文件修改與保存的命令:\x0d\x0a\x0d\x0a插入命令\x0d\x0a\x0d\x0ai 在當前位置生前插入\x0d\x0a\x0d\x0aI 在當前行首插入\x0d\x0a\x0d\x0aa 在當前位置后插入\x0d\x0a\x0d\x0aA 在當前行尾插入\x0d\x0a\x0d\x0ao 在當前行之后插入一行\(zhòng)x0d\x0a\x0d\x0aO 在當前行之前插入一行\(zhòng)x0d\x0a\x0d\x0a查找命令\x0d\x0a\x0d\x0a/text查找text,按n健查找下一個,按N健查找前一個。\x0d\x0a\x0d\x0a?text查找text,反向查找,按n健查找下一個,按N健查找前一個。\x0d\x0a\x0d\x0avim中有一些特殊字符在查找時需要轉(zhuǎn)義.*[]^%/?~$\x0d\x0a\x0d\x0a:set ignorecase忽略大小寫的查找\x0d\x0a\x0d\x0a:set noignorecase不忽略大小寫的查找\x0d\x0a\x0d\x0a查找很長的詞,如果一個詞很長,鍵入麻煩,可以將光標移動到該詞上,按*或#鍵即可以該單詞進行搜索,相當于/搜索。而#命令相當于?搜索。\x0d\x0a\x0d\x0a:set hlsearch高亮搜索結(jié)果,所有結(jié)果都高亮顯示,而不是只顯示一個匹配。\x0d\x0a\x0d\x0a:set nohlsearch關(guān)閉高亮搜索顯示\x0d\x0a\x0d\x0a:nohlsearch關(guān)閉當前的高亮顯示,如果再次搜索或者按下n或N鍵,則會再次高亮。\x0d\x0a\x0d\x0a:set incsearch逐步搜索模式,對當前鍵入的字符進行搜索而不必等待鍵入完成。\x0d\x0a\x0d\x0a:set wrapscan重新搜索,在搜索到文件頭或尾時,返回繼續(xù)搜索,默認開啟。\x0d\x0a\x0d\x0a替換命令\x0d\x0a\x0d\x0ara 將當前字符替換為a,當期字符即光標所在字符。\x0d\x0a\x0d\x0as/old/new/ 用old替換new,替換當前行的第一個匹配\x0d\x0a\x0d\x0as/old/new/g 用old替換new,替換當前行的所有匹配\x0d\x0a\x0d\x0a%s/old/new/ 用old替換new,替換所有行的第一個匹配\x0d\x0a\x0d\x0a%s/old/new/g 用old替換new,替換整個文件的所有匹配\x0d\x0a\x0d\x0a:10,20 s/^/ /g 在第10行知第20行每行前面加四個空格,用于縮進。\x0d\x0a\x0d\x0addp 交換光標所在行和其下緊鄰的一行。\x0d\x0a\x0d\x0a移動命令\x0d\x0a\x0d\x0ah 左移一個字符\x0d\x0al 右移一個字符,這個命令很少用,一般用w代替。\x0d\x0ak 上移一個字符\x0d\x0aj 下移一個字符\x0d\x0a以上四個命令可以配合數(shù)字使用,比如20j就是向下移動20行,5h就是向左移動5個字符,在Vim中,很多命令都可以配合數(shù)字使用,比如刪除10個字符10x,在當前位置后插入3個!,3a!,這里的Esc是必須的,否則命令不生效。\x0d\x0a\x0d\x0aw 向前移動一個單詞(光標停在單詞首部),如果已到行尾,則轉(zhuǎn)至下一行行首。此命令快,可以代替l命令。\x0d\x0a\x0d\x0ab 向后移動一個單詞 2b 向后移動2個單詞\x0d\x0a\x0d\x0ae,同w,只不過是光標停在單詞尾部\x0d\x0a\x0d\x0age,同b,光標停在單詞尾部。\x0d\x0a\x0d\x0a^ 移動到本行第一個非空白字符上。\x0d\x0a\x0d\x0a0(數(shù)字0)移動到本行第一個字符上,\x0d\x0a\x0d\x0a 移動到本行第一個字符。同0健。\x0d\x0a\x0d\x0a$ 移動到行尾 3$ 移動到下面3行的行尾\x0d\x0a\x0d\x0agg 移動到文件頭。 = [[\x0d\x0a\x0d\x0aG(shift + g) 移動到文件尾。 = ]]\x0d\x0a\x0d\x0af(find)命令也可以用于移動,fx將找到光標后第一個為x的字符,3fd將找到第三個為d的字符。\x0d\x0a\x0d\x0aF 同f,反向查找。\x0d\x0a\x0d\x0a跳到指定行,冒號+行號,回車,比如跳到240行就是 :240回車。另一個方法是行號+G,比如230G跳到230行。\x0d\x0a\x0d\x0aCtrl + e 向下滾動一行\(zhòng)x0d\x0a\x0d\x0aCtrl + y 向上滾動一行\(zhòng)x0d\x0a\x0d\x0aCtrl + d 向下滾動半屏\x0d\x0a\x0d\x0aCtrl + u 向上滾動半屏\x0d\x0a\x0d\x0aCtrl + f 向下滾動一屏\x0d\x0a\x0d\x0aCtrl + b 向上滾動一屏\x0d\x0a\x0d\x0a撤銷和重做\x0d\x0a\x0d\x0au 撤銷(Undo)\x0d\x0aU 撤銷對整行的操作\x0d\x0aCtrl + r 重做(Redo),即撤銷的撤銷。\x0d\x0a\x0d\x0a刪除命令\x0d\x0a\x0d\x0ax 刪除當前字符\x0d\x0a\x0d\x0a3x 刪除當前光標開始向后三個字符\x0d\x0a\x0d\x0aX 刪除當前字符的前一個字符。X=dh\x0d\x0a\x0d\x0adl 刪除當前字符, dl=x\x0d\x0a\x0d\x0adh 刪除前一個字符\x0d\x0a\x0d\x0add 刪除當前行\(zhòng)x0d\x0a\x0d\x0adj 刪除上一行\(zhòng)x0d\x0a\x0d\x0adk 刪除下一行\(zhòng)x0d\x0a\x0d\x0a10d 刪除當前行開始的10行。\x0d\x0a\x0d\x0aD 刪除當前字符至行尾。D=d$\x0d\x0a\x0d\x0ad$ 刪除當前字符之后的所有字符(本行)\x0d\x0a\x0d\x0akdgg 刪除當前行之前所有行(不包括當前行)\x0d\x0a\x0d\x0ajdG(jd shift + g) 刪除當前行之后所有行(不包括當前行)\x0d\x0a\x0d\x0a:1,10d 刪除1-10行\(zhòng)x0d\x0a\x0d\x0a:11,$d 刪除11行及以后所有的行\(zhòng)x0d\x0a\x0d\x0a:1,$d 刪除所有行\(zhòng)x0d\x0a\x0d\x0aJ(shift + j)刪除兩行之間的空行,實際上是合并兩行。\x0d\x0a\x0d\x0a拷貝和粘貼\x0d\x0a\x0d\x0ayy 拷貝當前行\(zhòng)x0d\x0a\x0d\x0anyy 拷貝當前后開始的n行,比如2yy拷貝當前行及其下一行。\x0d\x0a\x0d\x0ap 在當前光標后粘貼,如果之前使用了yy命令來復制一行,那么就在當前行的下一行粘貼。\x0d\x0a\x0d\x0ashift+p 在當前行前粘貼\x0d\x0a\x0d\x0a:1,10 co 20 將1-10行插入到第20行之后。\x0d\x0a\x0d\x0a:1,$ co $ 將整個文件復制一份并添加到文件尾部。\x0d\x0a\x0d\x0a正常模式下按v(逐字)或V(逐行)進入可視模式,然后用jklh命令移動即可選擇某些行或字符,再按y即可復制\x0d\x0a\x0d\x0addp交換當前行和其下一行\(zhòng)x0d\x0a\x0d\x0axp交換當前字符和其后一個字符\x0d\x0a\x0d\x0a剪切命令\x0d\x0a\x0d\x0a正常模式下按v(逐字)或V(逐行)進入可視模式,然后用jklh命令移動即可選擇某些行或字符,再按d即可剪切\(zhòng)x0d\x0a\x0d\x0andd 剪切當前行之后的n行。利用p命令可以對剪切的內(nèi)容進行粘貼\x0d\x0a\x0d\x0a:1,10d 將1-10行剪切。利用p命令可將剪切后的內(nèi)容進行粘貼。\x0d\x0a\x0d\x0a:1, 10 m 20 將第1-10行移動到第20行之后。\x0d\x0a\x0d\x0a退出命令\x0d\x0a\x0d\x0a:wq 保存并退出\x0d\x0a\x0d\x0aZZ 保存并退出\x0d\x0a\x0d\x0a:q! 強制退出并忽略所有更改\x0d\x0a\x0d\x0a:e! 放棄所有修改,并打開原來文件。
linux的vi命令編輯后wq與x的區(qū)別只有一個。
這兩者一般情況下沒度什么不一樣,但是在編程方面,對編輯源文件可能會產(chǎn)生重要影響。因為文件即使沒有修改,":wq"強制更新文件的修改時間,這樣回會讓make編譯整個項目時以為文件被修改過了,然后就得答重新編譯鏈接生成可執(zhí)行文件。
這可能會產(chǎn)生讓人誤解的后果,當然也產(chǎn)生了不必要的系統(tǒng)資源花銷。
:wq 強制性寫入文件并退出百。即使文件沒有被修改也強制寫入,并更新文件的修改時間。
:x 寫入文件并退出。僅當文件被修改時才寫入,并更新文件修改時間,否則不會更新文件修改時間。
擴展資料
vi命令詳解:
基本上vi可以分為三種狀態(tài),分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區(qū)分如下:
1) 命令行模式command mode)
控制屏幕光標的移動,字符、字或行的刪除,移動復制某區(qū)段及進入Insert mode下,或者到 last line mode。
2) 插入模式(Insert mode)
只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。
3) 底行模式(last line mode)
將文件保存或退出vi,也可以設(shè)置編輯環(huán)境,如尋找字符串、列出行號……等。
不過一般在使用時把vi簡化成兩個模式,就是將底行模式(last line mode)也算入命令行模式command mode)。