vi-vim常用命令
vi-vim常用命令
1 簡介
在UNIX系統(tǒng)中,創(chuàng)建和修改配置文件、shell腳本、初始化文件、編寫程序都離不開VI。
1????? vi[1]屬于兩個主要的UNIX規(guī)范:POSIX和單一UNIX規(guī)范。
2????? vi編輯器由Bill Joy于1976年創(chuàng)建。
3????? vi是一種面向屏幕的編輯器。
4????? vi來源于另一個編輯器ex。
5????? vim是vi的增強(qiáng)版。
2 使用幫助
學(xué)習(xí)vi,學(xué)會使用聯(lián)機(jī)手冊或幫助命令是非常重要的。Unix有兩個最重要的文檔資料系統(tǒng):Unix手冊和Info(GNU項(xiàng)目的官方文檔資料系統(tǒng))。
常用命令:
1????? man vi?????
2????? vi --help
3????? info vi
對于較長的說明頁,可使用分頁程序分頁顯示。常用的分頁程序有:less、more、pg。例如:man cp | less
查找說明書頁的其它方法(基于web):
1????? 使用google搜索:(一定要確保包含雙引號)
○????“man vi ”
○????“man pages” vi
?? 2 另外一種基于web的說明書頁的方法是xman,xman是一個基于GUI的程序,它充當(dāng)說明書頁瀏覽器。在命令行啟動xman:xman&。
Vi的幫助命令::help
3 模式和命令
3.1 輸入模式和命令模式
命令模式[2](command mode):所鍵入的鍵都被解釋成命令。
輸入模式(input mode):鍵入的任何內(nèi)容都直接插入到編輯緩沖區(qū)中。
當(dāng)離開輸入模式時,使用Esc鍵切換到命令模式。
了解所處模式的方法:
?????? :set showmode
3.2 vi和ex命令
vi和ex是同一個程序的兩種不同的表現(xiàn)形式。也就是說可以同時使用vi和ex命令。
vi:
①大多數(shù)vi命令都是單字母或雙字母的表現(xiàn)形式。
②vi鍵入時命令不回顯。
ex:
①ex命令比vi命令長。
②所有的ex命令都以一個:(冒號)開頭。鍵入:后,vi就將光標(biāo)移動到命令行上(屏幕最底部)。
③ex命令的每個字符都將回顯。
④ex命令結(jié)束,必須按下<Return>鍵盤。
4 啟動與編輯vi-vim
4.1編輯一個文件
語法:vi 【-rR】 【file……】
常用命令:
1????? vi file ? ? ? ? ? ? ??啟動vi,編輯指定的文件
2????? vi -R file?? ?????? ? 以只讀模式啟動vi
3????? view file??? ?????? ? 以只讀模式啟動vi (vi -R file等同于view file)
4????? vim file??????????? ?????? 啟動vim,編輯指定的文件
5????? vim -C????? file?? ?????? 以兼容模式啟動vi
4.2編輯多個文件
語法:vi a.txt b.txt c.txt
切換文件: :next
4.3 編輯技巧
編輯技巧:
1????? vi +[num] file ? ? ? ? ?打開文件,并將光標(biāo)置于第n行首
2????? vi + file ? ? ? ? ? ? ? ? ? 打開文件,并將光標(biāo)置于最后一行首
3????? vi +/pattern file ? ? ? 打開文件,并將光標(biāo)置于第一個與pattern匹配的字符串
4????? vi +?pattern file ? ? ? 編輯工作從匹配pattern的最后一行開始
5????? vi -r file ? ? ? ? ? ? ? ? (-r 即recover,恢復(fù))
4.4 寫入文件
常用命令:
1????? :w???????????? ?????? 將數(shù)據(jù)寫入到原始文件
2????? :w file????????????? ?????? 將數(shù)據(jù)寫入到指定文件
3????? :w >> file ? ? ? ? ? ? ? ?將數(shù)據(jù)追加到指定文件
4????? :r [filename]??????????? 在編輯的數(shù)據(jù)中,讀取另一個檔案的數(shù)據(jù),亦將檔案內(nèi)容加到游標(biāo)所在行的后面
5????? :n1,n2 w [filename]????? 將n1到n2的內(nèi)容存儲成另一個檔案。
4.5 退出文件、停止vi
常用命令:
1????? :q???????????? 退出文件
2????? :q!??????????? 不保存數(shù)據(jù),強(qiáng)制退出
3????? :wq?????????? 保存退出文件
4????? shift+ZZ ? ?停止vi
5????? ZQ ? ? ? ? ? ?無條件退出
4.6 vi與vim命令行常用選項(xiàng)
-b?????? ?????? ?????? 以二進(jìn)制模式編輯文件
-c command ? ? ?啟動后立即運(yùn)行給定的ex命令
-d?????? ?????? ?????? 以diff模式運(yùn)行
-o[num]???? ?????? 啟動vim時打開num個窗口
-O[num]???? ?????? 啟動vim時打開num個水平排列
-r ? ? ? ? ? ? ? ? ? ? ?恢復(fù)模式
-R?????? ?????? ?????? 于只讀模式中編輯文件
-t tag ? ? ? ? ? ? ? ?編輯包含tag的文件,并將光標(biāo)置于tag位置
-T type????????????? 設(shè)置可選終端類型
5 插入
輸入模式:
| 操作鍵 | 說明 |
| i | ?在當(dāng)前光標(biāo)位置前插入數(shù)據(jù) |
| a | ?在當(dāng)前光標(biāo)位置后插入數(shù)據(jù) |
| I | ?在當(dāng)前行開頭處插入數(shù)據(jù) |
| A | ?在當(dāng)前行末尾處插入數(shù)據(jù) |
| o | ?在當(dāng)前行下面出入一行 |
| O | ?在當(dāng)前行上面插入一行 |
?
6 移動和跳轉(zhuǎn)
6.1獲取光標(biāo)當(dāng)前位置
獲取方式:^G
6.2 緩沖區(qū)移動
?
| 操作鍵 | 說明 |
| ^F | ?向下移動一屏 |
| ^B | ?向上移動一屏 |
| n^F | ?向下移動n屏 |
| n^B | ?向上移動n屏 |
| ^D | ?向下移動半屏 |
| ^U | ?向上移動半屏 |
| n^D | ?向下移動n行 |
| n^U | ?向上移動n行 |
| ^E | ?向屏幕頂端多滾動一行 |
| ^L | ?向屏幕底端多滾動一行 |
| zENTER | ?將光標(biāo)所在的行移動到屏幕頂端 |
| z. | 將光標(biāo)所在的行移動到屏幕中間 |
| z- | 將光標(biāo)所在的行移動到屏幕底端 |
?
6.3 光標(biāo)移動
| 操作鍵 | 說明 |
| h?????? <Left> | ?將光標(biāo)向左移動一個位置 |
| j???? <Down> | ?將光標(biāo)向下移動一個位置 |
| k???????? <Up> | ?將光標(biāo)向上移動一個位置 |
| l?????? <Right> | ?將光標(biāo)向右移動一個位置 |
| - | ?將光標(biāo)移動到上一行的開頭 |
| +???? <Return> | ?將光標(biāo)移動到下一行的開頭 |
| ^ | ?將光標(biāo)移動到當(dāng)前行的第一個非空格/制表符的字符上 |
| 數(shù)字0 | ?將光標(biāo)移動到當(dāng)前行的開始 |
| $ | ?將光標(biāo)移動到當(dāng)前行的末尾 |
| w W | ?將光標(biāo)移動到下一個單詞的詞首(大寫字母,略過空格) |
| e E | ?將光標(biāo)移動到下一個單詞的詞尾(大寫字母,略過空格) |
| b B | ?將光標(biāo)移動到上一個單詞的詞首(大寫字母,略過空格) |
| ) | ?向前移動到下一個句子 |
| ( | ?向后移動到上一個句子 |
| { | ?向前移動到下一個段落 |
| } | ?向后移動到上一個段落 |
| H | ?將光標(biāo)移動到屏幕頂部 |
| M | ?將光標(biāo)移動到屏幕中間 |
| L | ?將光標(biāo)移動到屏幕的最后一行 |
| fcharacter | ?單字符搜索移動(f為搜索命令,character為要搜索的字符) |
| Fcharacter | ?單字符左方向搜索移動 |
| % | ?已匹配一個括號為目的的移動 |
?
說明:
1.命令計數(shù):在移動命令前加數(shù)字,如3j,可實(shí)現(xiàn)向下移動三行。
?? 語法:ncommand?? (n為數(shù)字,command為移動命令)
2. 規(guī)律:一個命令的大寫字母形式會做同樣的事情,但是方向相反。
6.4 行號跳轉(zhuǎn)
顯示行號:???? :set number
關(guān)閉行號:???? :set nonumber
| 命令 | 說明 |
| nG 、?? :n | ?跳轉(zhuǎn)到第n行 |
| 1G 、 gg? 、 :1 | ?跳轉(zhuǎn)到編輯緩沖區(qū)的第一行 |
| G?? 、? :$ | ?跳轉(zhuǎn)到編輯緩沖區(qū)最后一行 |
?
附加:
另一個移動到某行的辦法是:在命令?%?前加一個命令計數(shù),如 50% 會把光標(biāo)定位在文件中間。
6.5 跳轉(zhuǎn)到前一位置
返回前一位置:
a)??????``(兩個反引號)
b)????? ‘’(兩個單引號)
6.6 使用名稱標(biāo)示任意行,進(jìn)行跳轉(zhuǎn)
?????????? 用不可見的名稱標(biāo)識任意行,當(dāng)需要時使用此名稱跳轉(zhuǎn)到這一行。
?????? 可以鍵入m標(biāo)示這一行,后跟一個字母,這個字母就是這一行的名稱。例如:用”b“標(biāo)示這一行,可以鍵入mb。為了跳轉(zhuǎn)到這一行,可以鍵入一個反引號或單引號,后面跟這一行的名稱。如:`b 或 ’b
7 搜索
7.1搜索常用命令
向前搜索: /
向后搜索: ?
常用命令:
1????? /??????? ?向前重復(fù)搜索
2????? ????????????? 向后重復(fù)搜索
3????? /regex ? ? ? 向前搜索指定的正則表達(dá)式
4????? ?regex ? ? 向后搜索指定的正則表達(dá)式
5????? n????????????? 重復(fù)上一條/或?命令,搜索方向相同
6????? N ? ? ? ? ? ? ?重復(fù)上一條/或?命令,搜索方向相反
附:?
????? 命令歷史記錄:用上下箭頭來查找用過的搜索
7.2查找字符串便捷方式
*命令 : 將光標(biāo)定位于字符串,按下*鍵,vi將會取當(dāng)前光標(biāo)所在的字符串并將它作用目標(biāo)字符串進(jìn)行搜索。
#命令: 與*相反。
%:搜索與當(dāng)前花括號、圓括號、方括號成對的符號。
7.3 查找整個字符串
方法:
使用\<? \>進(jìn)行匹配。
例子:/\<word\>
?
8 文本改動
8.1替換之vi命令
r:精確替換一個字符(不進(jìn)入輸入模式)。
R:替換多個字符(以覆蓋方式替換)。(先將光標(biāo)移動到希望開始替換的位置,然后輸入R。切換到輸入模式,隨后鍵入的每個字符都將替換當(dāng)前行上的一個字符。)
s:允許使用多個字符替換一個單個的字符(以插入方式替換)。
C:允許替換從當(dāng)前光標(biāo)位置到本行末尾的所有字符。
S?或?cc:以插入方式替換當(dāng)前整行。
cmove:以插入方式從當(dāng)前光標(biāo)處替換到move所給出的位置處。
8.2替換之ex命令_常用方法
ex命令:
語法::s/pattern/replace/?? 其中,pattern是替換的模式,replace是替換的文本。
使用方法總結(jié):
1????? :s/pattern/replace/?????? ?? 替換當(dāng)前行
2????? s/pattern/replace/g????????????? 替換當(dāng)前行所有
3????? :lines/pattern/raplace/?? ?????? 替換指定行
4????? :line,lines/pattern/replace/ ? ? 替換指定范圍內(nèi)的行
5????? :%s/pattern/replace/??????????? 替換所有行
6????? :.,$s/pattern/replace/g?? ?????? 從當(dāng)前行末尾至編輯緩沖區(qū)的末尾進(jìn)行相同的替換
7????? :line,.s/pattern/replace/g ? ? ? 從編輯緩沖區(qū)的指定位置到當(dāng)前行進(jìn)行相同的替換
說明 :
1????? 所有的ex命令都以:開頭。
2????? :s只替換當(dāng)前行上該模式的第一個匹配項(xiàng)。
3????? 為了替換所有匹配項(xiàng),需在該命令的末尾鍵入字母g。例如::s/UNIX/linux/g
4????? 替換前進(jìn)行確認(rèn),可在命令末尾添加c。例如::s/UNIX/linux/cg
5????? .點(diǎn)號代表當(dāng)前行。$代表緩沖區(qū)最后一行。%代表編輯緩沖區(qū)內(nèi)所有的行。
8.3 交換字符
交換兩個字符的位置:?? xp
交換兩行的位置:ddp??
調(diào)換兩個單詞(光標(biāo)開始處于第一個單詞的左邊):deep
9 刪除
9.1 刪除命令
| vi命令 | 操作鍵 |
| x | ?刪除當(dāng)前光標(biāo)處的字符 |
| X | ?刪除光標(biāo)左邊的字符 |
| D | ?刪除從當(dāng)前光標(biāo)到本行末尾的字符 |
| J | ?刪除兩行之間的換行符 (亦可用于合并兩行) |
| dmove | ?刪除從當(dāng)前光標(biāo)到move所給位置的字符 |
| dd | ?刪除當(dāng)前行 |
| ex命令 | ? |
| :lined | ?刪除指定行 |
| :line,lined | ?刪除指定范圍內(nèi)的行 |
?
9.2 常用的刪除組合命令
說明:操作符命令+位移命令
1????? nx? ???????? ?????? 刪除多個字符(n為刪除的字符個數(shù))???????
2????? dw ?? ????????????? 刪除1個單詞
3????? d10w??????? ?????? 刪除10個單詞
4????? d10W ? ? ? ? ? ? ?刪除10個單詞,忽略標(biāo)點(diǎn)符號。
5????? db???? ????????????? 向后刪除一個單詞
6????? d2)? ????????????? 刪除兩個句子
7????? d5}??? ????????????? 刪除5個段落
8????? dG 或 :.,$d ? ? ? ?刪除當(dāng)前行到編輯緩沖區(qū)末尾的所有行
9????? dgg 或 d1G 或:1,.d?????? 刪除當(dāng)前行到編輯緩沖區(qū)開頭的所有行
10??? :1,$d 或 :%f ? ? ? ? ? ? ? ?刪除整個編輯緩沖區(qū)
11??? d/word ? ? ? ? ? ? ? ? ? ? ? 刪除從光標(biāo)所在位置到單詞word的所有文本
12??? .,/word/d???????? 刪除從光標(biāo)所在位置到單詞word的所有文本
13??? df x???????????????? 刪除至當(dāng)前行中x所在的位置
14??? d^?????????????????? 刪除至該行的開始處
9.3插入模式中刪除操作
^U??? ???????????????????? 刪除當(dāng)前行
^H??? ???????????????????? 刪除前一個字符
^W?? ???????????????????? 刪除前一個詞
9.4 撤銷或重復(fù)改變
vi命令:
1????? u?????? ????????????? 撤銷上一命令對編輯緩沖區(qū)的修改
2????? U?????? ????????????? 恢復(fù)當(dāng)前行(即一次撤銷對當(dāng)前行的全部操作)
3????? .點(diǎn)號? ????????????? 重復(fù)上一命令對編輯緩沖區(qū)的修改
9.5 恢復(fù)刪除
語法:"1p(P)?
說明:
1????? 1為緩沖區(qū)的編號。
2????? p在當(dāng)前行的下面插入,P在當(dāng)前行的上面插入。
9.6 復(fù)制上一次刪除
| 命令 | 說明 |
| p | ?復(fù)制上一次刪除的內(nèi)容,插入到光標(biāo)的后面/下面 |
| P | ?復(fù)制上一次刪除的內(nèi)容,插入到光標(biāo)的前面/上面 |
10 復(fù)制
10.1 接出(復(fù)制單詞、句子、段落)
當(dāng)在不刪除文本的情況下將文本復(fù)制到無名緩沖區(qū)時,稱為接出(yank)。(因此將命令命名為y、yy、Y)。
步驟:
1????? 使用y、yy、Y將文本由編輯緩沖區(qū)復(fù)制到無名緩沖區(qū)中,但不刪除原始文本。
2????? 將光標(biāo)移動到希望插入文本的位置。
3????? 使用P或p命令執(zhí)行插入。
| 常用命令 | 操作鍵 |
| yw | ?接出一個單詞 |
| y10w | ?接出10個單詞 |
| y10W | ?接出10個單詞,忽略標(biāo)點(diǎn)符號 |
| yb | ?向后接出一個單詞 |
| y2) | ?接出兩個句子 |
| y2} | ?接出5個段落 |
| yy | ?接出一行 |
| 10yy | ?接出10行 |
| y$ | ?接出從當(dāng)前字符到本行末尾的的文本 |
| y0 | ?接出從當(dāng)前字符到這一行開頭之間的文本 |
10.2 復(fù)制與移動行
語法:
?????? :x,ycoz
?????? :x,ymz
說明:
1????? x,y,z都是行號。x,y是源行,z是目標(biāo)行號。
2????? 源行x,y被復(fù)制或移動,插入到z行的下面。
3????? :m刪除原始行,:co不刪除原始行。
例子:
1????? :2co4??????? 復(fù)制第2行,插入到第4行下面
2????? :2,4co8??????????? 復(fù)制第2行到第4行,插入到第8行下面
3????? :2m4??????? 移動第2行,插入到第4行下面
4????? :2,4m8???????????? 移動第2行到第4行,插入到第8行下面。
11 使用縮寫
要為經(jīng)常使用的單詞或表達(dá)式創(chuàng)建縮寫,可使用:ab命令。
1????? 創(chuàng)建縮寫,語法::ab?[ short long ]
2????? 刪除縮寫,語法:?:una?short
12 命令補(bǔ)全與文本補(bǔ)全
命令補(bǔ)全:Tab
關(guān)鍵字補(bǔ)全:^N ^P
13 shell命令
14.1 執(zhí)行shell命令
1????? :!command????? 暫停vi,執(zhí)行制定的shell命令
2????? :!! pause vi ? ? ?執(zhí)行上一條shell命令
3????? :sh??????????? 暫停vi,啟動一個新的shell
4????? :!csh??????? ? 暫停vi,啟動一個新的c-shell
14.2 使用shell命令處理數(shù)據(jù)
1????? n!! command????????? 對n行數(shù)據(jù)執(zhí)行command
2????? !move command??? 對當(dāng)前光標(biāo)至move所指定的位置的數(shù)據(jù)執(zhí)行command
3????? !move fmt????????????? 格式化當(dāng)前光標(biāo)到move所指定的行
15? 顯示與設(shè)置選項(xiàng)
15.1 顯示選項(xiàng)
1????? 語法:??????????????????? :set [option]
2????? 顯示所有選項(xiàng)的值: :set all
3????? 顯示一個選項(xiàng)的值: :set option?
15.2 設(shè)置選項(xiàng)
語法::set [no]option..... :set option[=value]...
15.3常用設(shè)置命令
16 初始化文件與配置文件
16.1初始化文件
vi的初始化文件:.exrc
vim的初始化文件:vimrc
16.2配置文件
linux配置文件:???????????? /usr/share/vim/vimrc
查找Windows配置文件:????? scriptnames
17 在線資料
1????? vim官網(wǎng):http://www.vim.org/
2????? FreeBSD vi:http://www.dc.fi.udc.es/~afyanez/info-vi/man-page.html
3????? vim中文文檔:http://vimdoc.sourceforge.net/htmldoc/usr_toc.html
4????? vim作者個人網(wǎng)站:http://www.moolenaar.net/
5????? vim手冊中文版:http://sourceforge.net/projects/vimcdoc/
6????? vi-ex:http://ex-vi.sourceforge.net/
7????? vi:http://thomer.com/vi/vi.html
8????? 非常好vim學(xué)習(xí)網(wǎng)站:http://www.openvim.com/
9????? 圖形化vi-vim小抄:http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
10?? vim配置文件:http://amix.dk/vim/vimrc.html
11?? 史上最強(qiáng)vim配置文件:http://blog.csdn.net/redguardtoo/article/details/1172136
12?? vi正則表達(dá)式:http://www.softpanorama.org/Editors/Vimorama/vim_regular_expressions.shtml
13?? 神奇的vi:http://www.ibm.com/developerworks/cn/linux/l-tip-prompt/tip15/
14?? vim資料:http://wiki.hotoo.me/Vim.html
15?? vi-vim book:http://search.oreilly.com/?q=vi+vim&x=-873&y=-56
16?? OReilly:http://books.google.com/books?id=J5nKVVg5YHAC&printsec=frontcover&dq=vi+vim&hl=en&sa=X&ei=UcVRUeCPKs-viQew54CwDQ&ved=0CC8Q6AEwAA#v=onepage&q&f=false
17?? OReilly:http://books.google.com/books?id=YQXfIbb0cJ8C&printsec=frontcover&dq=vi+vim&hl=en&sa=X&ei=s8VRUc2VO8SViAeB9YGYBA&ved=0CDoQ6AEwAQ
轉(zhuǎn)載于:https://www.cnblogs.com/halberts/p/6850013.html
總結(jié)
以上是生活随笔為你收集整理的vi-vim常用命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20170512 Python练习册00
- 下一篇: SAS编程基础 - 逻辑库和数据集