日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

vi-vim常用命令

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vi-vim常用命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

vi-vim常用命令

1 簡介

在UNIX系統中,創建和修改配置文件、shell腳本、初始化文件、編寫程序都離不開VI。

1????? vi[1]屬于兩個主要的UNIX規范:POSIX和單一UNIX規范。

2????? vi編輯器由Bill Joy于1976年創建。

3????? vi是一種面向屏幕的編輯器。

4????? vi來源于另一個編輯器ex。

5????? vim是vi的增強版。

2 使用幫助

學習vi,學會使用聯機手冊或幫助命令是非常重要的。Unix有兩個最重要的文檔資料系統:Unix手冊和Info(GNU項目的官方文檔資料系統)。

常用命令:

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的程序,它充當說明書頁瀏覽器。在命令行啟動xman:xman&

Vi的幫助命令::help

3 模式和命令

3.1 輸入模式和命令模式

命令模式[2](command mode):所鍵入的鍵都被解釋成命令。

輸入模式(input mode):鍵入的任何內容都直接插入到編輯緩沖區中。

當離開輸入模式時,使用Esc鍵切換到命令模式。

了解所處模式的方法:

?????? :set showmode

3.2 vi和ex命令

vi和ex是同一個程序的兩種不同的表現形式。也就是說可以同時使用vi和ex命令。

vi:

①大多數vi命令都是單字母雙字母的表現形式。

②vi鍵入時命令不回顯。

ex:

①ex命令比vi命令長。

②所有的ex命令都以一個:(冒號)開頭。鍵入:后,vi就將光標移動到命令行上(屏幕最底部)。

③ex命令的每個字符都將回顯。

④ex命令結束,必須按下<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 ? ? ? ? ?打開文件,并將光標置于第n行首

2????? vi + file ? ? ? ? ? ? ? ? ? 打開文件,并將光標置于最后一行首

3????? vi +/pattern file ? ? ? 打開文件,并將光標置于第一個與pattern匹配的字符串

4????? vi +?pattern file ? ? ? 編輯工作從匹配pattern的最后一行開始

5????? vi -r file ? ? ? ? ? ? ? ? (-r 即recover,恢復)

4.4 寫入文件

常用命令:

1????? :w???????????? ??????   將數據寫入到原始文件

2????? :w file????????????? ?????? 將數據寫入到指定文件

3????? :w >> file ? ? ? ? ? ? ? ?將數據追加到指定文件

4????? :r [filename]??????????? 在編輯的數據中,讀取另一個檔案的數據,亦將檔案內容加到游標所在行的后面

5????? :n1,n2 w [filename]????? 將n1到n2的內容存儲成另一個檔案。

4.5 退出文件、停止vi

常用命令:

1????? :q???????????? 退出文件

2????? :q!??????????? 不保存數據,強制退出

3????? :wq?????????? 保存退出文件

4????? shift+ZZ ? ?停止vi

5????? ZQ ? ? ? ? ? ?無條件退出

4.6 vi與vim命令行常用選項

-b?????? ?????? ?????? 以二進制模式編輯文件

-c command ? ? ?啟動后立即運行給定的ex命令

-d?????? ?????? ?????? 以diff模式運行

-o[num]???? ?????? 啟動vim時打開num個窗口

-O[num]???? ?????? 啟動vim時打開num個水平排列

-r ? ? ? ? ? ? ? ? ? ? ?恢復模式

-R?????? ?????? ?????? 于只讀模式中編輯文件

-t tag ? ? ? ? ? ? ? ?編輯包含tag的文件,并將光標置于tag位置

-T type????????????? 設置可選終端類型

5 插入

輸入模式:

操作鍵

說明

i

?在當前光標位置前插入數據

a

?在當前光標位置后插入數據

I

?在當前行開頭處插入數據

A

?在當前行末尾處插入數據

o

?在當前行下面出入一行

O

?在當前行上面插入一行

?

6 移動和跳轉

6.1獲取光標當前位置

獲取方式:^G

6.2 緩沖區移動

?

操作鍵

說明

^F

?向下移動一屏

^B

?向上移動一屏

n^F

?向下移動n屏

n^B

?向上移動n屏

^D

?向下移動半屏

^U

?向上移動半屏

n^D

?向下移動n行

n^U

?向上移動n行

^E

?向屏幕頂端多滾動一行

^L

?向屏幕底端多滾動一行

zENTER

?將光標所在的行移動到屏幕頂端

z.

將光標所在的行移動到屏幕中間

z-

將光標所在的行移動到屏幕底端

?

6.3 光標移動

操作鍵

說明

h?????? <Left>

?將光標向左移動一個位置

j???? <Down>

?將光標向下移動一個位置

k???????? <Up>

?將光標向上移動一個位置

l?????? <Right>

?將光標向右移動一個位置

-

?將光標移動到上一行的開頭

+???? <Return>

?將光標移動到下一行的開頭

^

?將光標移動到當前行的第一個非空格/制表符的字符上

數字0

?將光標移動到當前行的開始

$

?將光標移動到當前行的末尾

w W

?將光標移動到下一個單詞的詞首(大寫字母,略過空格)

e E

?將光標移動到下一個單詞的詞尾(大寫字母,略過空格)

b B

?將光標移動到上一個單詞的詞首(大寫字母,略過空格)

?向前移動到下一個句子

?向后移動到上一個句子

{

?向前移動到下一個段落

}

?向后移動到上一個段落

H

?將光標移動到屏幕頂部

M

?將光標移動到屏幕中間

L

?將光標移動到屏幕的最后一行

fcharacter

?單字符搜索移動(f為搜索命令,character為要搜索的字符)

Fcharacter

?單字符左方向搜索移動

%

?已匹配一個括號為目的的移動

?

說明:

1.命令計數:在移動命令前加數字,如3j,可實現向下移動三行。

?? 語法:ncommand?? (n為數字,command為移動命令)

2. 規律:一個命令的大寫字母形式會做同樣的事情,但是方向相反。

6.4 行號跳轉

顯示行號:???? :set number

關閉行號:???? :set nonumber

命令

說明

nG 、?? :n

?跳轉到第n行

1G 、 gg? 、 :1

?跳轉到編輯緩沖區的第一行

G?? 、? :$

?跳轉到編輯緩沖區最后一行

?

附加:

另一個移動到某行的辦法是:在命令?%?前加一個命令計數,如 50% 會把光標定位在文件中間。

6.5 跳轉到前一位置

返回前一位置:

a)??????``(兩個反引號)

b)????? ‘’(兩個單引號)

6.6 使用名稱標示任意行,進行跳轉

?????????? 用不可見的名稱標識任意行,當需要時使用此名稱跳轉到這一行。

?????? 可以鍵入m標示這一行,后跟一個字母,這個字母就是這一行的名稱。例如:用”b“標示這一行,可以鍵入mb。為了跳轉到這一行,可以鍵入一個反引號或單引號,后面跟這一行的名稱。如:`b 或 ’b

7 搜索

7.1搜索常用命令

向前搜索: /

向后搜索: ?

常用命令:

1????? /???????   ?向前重復搜索

2????? ????????????? 向后重復搜索

3????? /regex ? ? ? 向前搜索指定的正則表達式

4????? ?regex ? ? 向后搜索指定的正則表達式

5????? n????????????? 重復上一條/或?命令,搜索方向相同

6????? N ? ? ? ? ? ? ?重復上一條/或?命令,搜索方向相反

附:?

????? 命令歷史記錄:用上下箭頭來查找用過的搜索

7.2查找字符串便捷方式

*命令 : 將光標定位于字符串,按下*鍵,vi將會取當前光標所在的字符串并將它作用目標字符串進行搜索。

#命令: 與*相反。

%:搜索與當前花括號、圓括號、方括號成對的符號。

7.3 查找整個字符串

方法:

使用\<? \>進行匹配。

例子:/\<word\>

?

8 文本改動

8.1替換之vi命令

r:精確替換一個字符(不進入輸入模式)。

R:替換多個字符(以覆蓋方式替換)。(先將光標移動到希望開始替換的位置,然后輸入R。切換到輸入模式,隨后鍵入的每個字符都將替換當前行上的一個字符。)

s:允許使用多個字符替換一個單個的字符(以插入方式替換)。

C:允許替換從當前光標位置到本行末尾的所有字符。

S??cc:以插入方式替換當前整行。

cmove:以插入方式從當前光標處替換到move所給出的位置處。

8.2替換之ex命令_常用方法

ex命令:

語法::s/pattern/replace/?? 其中,pattern是替換的模式,replace是替換的文本。

使用方法總結:

1????? :s/pattern/replace/??????  ?? 替換當前行

2????? s/pattern/replace/g????????????? 替換當前行所有

3????? :lines/pattern/raplace/?? ?????? 替換指定行

4????? :line,lines/pattern/replace/ ? ? 替換指定范圍內的行

5????? :%s/pattern/replace/??????????? 替換所有行

6????? :.,$s/pattern/replace/g?? ?????? 從當前行末尾至編輯緩沖區的末尾進行相同的替換

7????? :line,.s/pattern/replace/g ? ? ? 從編輯緩沖區的指定位置到當前行進行相同的替換

說明 :

1????? 所有的ex命令都以:開頭。

2????? :s只替換當前行上該模式的第一個匹配項。

3????? 為了替換所有匹配項,需在該命令的末尾鍵入字母g。例如::s/UNIX/linux/g

4????? 替換前進行確認,可在命令末尾添加c。例如::s/UNIX/linux/cg

5????? .點號代表當前行。$代表緩沖區最后一行。%代表編輯緩沖區內所有的行。

8.3 交換字符

交換兩個字符的位置:?? xp

交換兩行的位置:ddp??

調換兩個單詞(光標開始處于第一個單詞的左邊):deep

9 刪除

9.1 刪除命令

vi命令

操作鍵

x

?刪除當前光標處的字符

X

?刪除光標左邊的字符

D

?刪除從當前光標到本行末尾的字符

J

?刪除兩行之間的換行符 (亦可用于合并兩行)

dmove

?刪除從當前光標到move所給位置的字符

dd

?刪除當前行

ex命令

?

:lined

?刪除指定行

:line,lined

?刪除指定范圍內的行

?

9.2 常用的刪除組合命令

說明:操作符命令+位移命令

1????? nx? ???????? ?????? 刪除多個字符(n為刪除的字符個數)???????

2????? dw ?? ????????????? 刪除1個單詞

3????? d10w??????? ?????? 刪除10個單詞

4????? d10W ? ? ? ? ? ? ?刪除10個單詞,忽略標點符號。

5????? db???? ????????????? 向后刪除一個單詞

6????? d2)? ????????????? 刪除兩個句子

7????? d5}??? ????????????? 刪除5個段落

8????? dG 或 :.,$d ? ? ? ?刪除當前行到編輯緩沖區末尾的所有行

9????? dgg 或 d1G 或:1,.d?????? 刪除當前行到編輯緩沖區開頭的所有行

10??? :1,$d 或 :%f ? ? ? ? ? ? ? ?刪除整個編輯緩沖區

11??? d/word ? ? ? ? ? ? ? ? ? ? ? 刪除從光標所在位置到單詞word的所有文本

12??? .,/word/d???????? 刪除從光標所在位置到單詞word的所有文本

13??? df x???????????????? 刪除至當前行中x所在的位置

14??? d^?????????????????? 刪除至該行的開始處

9.3插入模式中刪除操作

^U??? ???????????????????? 刪除當前行

^H??? ???????????????????? 刪除前一個字符

^W?? ???????????????????? 刪除前一個詞

9.4 撤銷或重復改變

vi命令:

1????? u?????? ????????????? 撤銷上一命令對編輯緩沖區的修改

2????? U?????? ????????????? 恢復當前行(即一次撤銷對當前行的全部操作)

3????? .點號? ????????????? 重復上一命令對編輯緩沖區的修改

9.5 恢復刪除

語法:"1p(P)?

說明:

1????? 1為緩沖區的編號。

2????? p在當前行的下面插入,P在當前行的上面插入。

9.6 復制上一次刪除

命令

說明

p

?復制上一次刪除的內容,插入到光標的后面/下面

P

?復制上一次刪除的內容,插入到光標的前面/上面

10 復制

10.1 接出(復制單詞、句子、段落)

當在不刪除文本的情況下將文本復制到無名緩沖區時,稱為接出(yank)。(因此將命令命名為y、yy、Y)。

步驟:

1????? 使用y、yy、Y將文本由編輯緩沖區復制到無名緩沖區中,但不刪除原始文本。

2????? 將光標移動到希望插入文本的位置。

3????? 使用P或p命令執行插入。

常用命令

操作鍵

yw

?接出一個單詞

y10w

?接出10個單詞

y10W

?接出10個單詞,忽略標點符號

yb

?向后接出一個單詞

y2)

?接出兩個句子

y2}

?接出5個段落

yy

?接出一行

10yy

?接出10行

y$

?接出從當前字符到本行末尾的的文本

y0

?接出從當前字符到這一行開頭之間的文本

10.2 復制與移動行

語法:

?????? :x,ycoz

?????? :x,ymz

說明:

1????? x,y,z都是行號。x,y是源行,z是目標行號。

2????? 源行x,y被復制或移動,插入到z行的下面。

3????? :m刪除原始行,:co不刪除原始行。

例子:

1????? :2co4??????? 復制第2行,插入到第4行下面

2????? :2,4co8??????????? 復制第2行到第4行,插入到第8行下面

3????? :2m4??????? 移動第2行,插入到第4行下面

4????? :2,4m8???????????? 移動第2行到第4行,插入到第8行下面。

11 使用縮寫

要為經常使用的單詞或表達式創建縮寫,可使用:ab命令。

1????? 創建縮寫,語法::ab?[ short long ]

2????? 刪除縮寫,語法:?:una?short

12 命令補全與文本補全

命令補全:Tab

關鍵字補全:^N ^P

13 shell命令

14.1 執行shell命令

1????? :!command????? 暫停vi,執行制定的shell命令

2????? :!! pause vi ? ? ?執行上一條shell命令

3????? :sh???????????   暫停vi,啟動一個新的shell

4????? :!csh???????  ? 暫停vi,啟動一個新的c-shell

14.2 使用shell命令處理數據

1????? n!! command????????? 對n行數據執行command

2????? !move command??? 對當前光標至move所指定的位置的數據執行command

3????? !move fmt????????????? 格式化當前光標到move所指定的行

15? 顯示與設置選項

15.1 顯示選項

1????? 語法:??????????????????? :set [option]

2????? 顯示所有選項的值: :set all

3????? 顯示一個選項的值: :set option?

15.2 設置選項

語法::set [no]option..... :set option[=value]...

15.3常用設置命令

  • 設置行號顯示與否:????? ?????? 簡寫 :set nu? / :set no nu
  • 設置自動縮進:??????????? 簡寫 :set ai / :set no ai
  • 設置縮進寬度:??????????? 簡寫 :set sw=4
  • 設置大小寫忽略與否:?? 簡寫 :set ic / :set no ic
  • 16 初始化文件與配置文件

    16.1初始化文件

    vi的初始化文件:.exrc

    vim的初始化文件:vimrc

    16.2配置文件

    linux配置文件:???????????? /usr/share/vim/vimrc

    查找Windows配置文件:????? scriptnames

    17 在線資料

    1????? vim官網: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作者個人網站: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學習網站: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?? 史上最強vim配置文件:http://blog.csdn.net/redguardtoo/article/details/1172136

    12?? vi正則表達式: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

    轉載于:https://www.cnblogs.com/halberts/p/6850013.html

    總結

    以上是生活随笔為你收集整理的vi-vim常用命令的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。