當前位置:首頁 » 文件管理 » vi命令可以查看文件么
擴展閱讀
我曾以為我可以是什麼歌 2025-05-17 14:55:33
經期可以做腰腹部運動 2025-05-17 14:54:02

vi命令可以查看文件么

發布時間: 2022-10-23 04:23:15

『壹』 vi 命令大全

vi filename   打開或新建文檔,並將游標置於第一行行首
vi +n filename   打開文件,並將游標置於第n行首
vi + filename   打開文件,並將游標置於最後一行首
vi +/pattern filename   打開文件,並將游標置於第一個與pattern匹配的串處
vi -r filename   在上次正用vi編輯時發生系統崩潰,恢復filename
vi filename....filename   打開多個文件,依次進行編輯

w   保存當前文件
w /tmp1   另存為/tmp1
20,59w /tmp1   僅將20-59行之間的內存另存為/tmp1
x 或 wq   保存退出
q   退出vi
q!   退出不保存 >
!command   執行shell命令command
n1,n2 w !command   將文件中n1行至n2行的內容作為command的輸入並執行之,若不指定n1,n2,則表示將整個文件內容作為command的輸入
r !command   將命令command的輸出結果放到當前行
w !sudo tee %   保存沒許可權時,可獲取許可權再保存

h  游標左移一個字元
l  游標右移一個字元
space  游標右移一個字元
Backspace  游標左移一個字元
k Ctrl+p   游標上移一行
j Ctrl+n   游標下移一行
Enter   游標下移一行
w W   游標右移一個字至字首
b B   游標左移一個字至字首
e E   游標右移一個字至字尾
)   游標移至句尾
(   游標移至句首
}   游標移至段落開頭
{   游標移至段落結尾
nG   游標移至第n行首
n+   游標下移n行
n-   游標上移n行
n$   游標移至第n行尾
H   游標移至屏幕頂行
M   游標移至屏幕中間行
L   游標移至屏幕最後行
0   (注意是數字零)游標移至當前行首
$   游標移至當前行尾

Ctrl+u   向文件首翻半屏
Ctrl+d   向文件尾翻半屏
Ctrl+f   向文件尾翻一屏
Ctrl+b   向文件首翻一屏
nz   將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部

i   在游標前
I   在當前行首
a   游標後
A   在當前行尾
o   在當前行之下新開一行
O   在當前行之上新開一行
r   替換當前字元
R   替換當前字元及其後的字元,直至按ESC鍵
s   從當前游標位置處開始,以輸入的文本替代指定數目的字元
S   刪除指定數目的行,並以所輸入文本代替
ncw nCW   修改指定數目的字
nCC   修改指定數目的行

ndw ndW   刪除游標處開始及其後的n-1個字
do   刪至行首
d$   刪至行尾
ndd   刪除當前行及其後n-1行
x X   刪除一個字元,x刪除游標後的,而X刪除游標前的
Ctrl+u   刪除輸入方式下所輸入的文本
n1,n2 d   將n1行到n2行之間的內容刪除
%d   刪除全部內容
1,$d   刪除全部內容

yy   復制當前行
nyy   復制當前行開始的n行
  先按 v 然後方向鍵選擇區域,按 y 復制選中行
dd   剪切當前行
p (小)   在當前游標處下面粘貼內容
P (大)   在當前游標處上面粘貼內容
n1,n2 co n3   將n1行到n2行之間的內容拷貝到第n3行下
n1,n2 m n3   將n1行到n2行之間的內容移至到第n3行下

/abc   從游標開始處向文件尾搜索abc
?abc   從游標開始處向文件首搜索abc
//abc   從游標開始處向文件尾搜索/abc,其中/是轉義
n   在同一方向重復上一次搜索命令
N   在反方向上重復上一次搜索命令

s/vivian/sky/   替換當前行第一個 vivian 為 sky
s/vivian/sky/g   替換當前行所有 vivian 為 sky
n,$s/vivian/sky/   替換第 n 行開始到最後一行中每一行的第一個 vivian 為 sky
n,$s/vivian/sky/g   替換第 n 行開始到最後一行中每一行所有 vivian 為sky
%s/vivian/sky/g   (等同於 g/vivian/s//sky/) 替換每一行的每一個 vivian 為 sky
s#vivian/#sky#   替換當前行第一個 vivian/ 為 sky/(可以使用 # 或 + 作為分隔符,此時中間出現的 / 不會作為分隔符)
s/p1/p2/g   將當前行中所有p1均用p2替代
n1,n2s/p1/p2/g   將第n1至n2行中所有p1均用p2替代
g/p1/s//p2/g   將文件中所有p1均用p2替換

"?nyy   將當前行及其下n行的內容保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyw   將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數字
"?nyl   將當前行及其下n個字元保存到寄存器?中,其中?為一個字母,n為一個數字
"?p   取出寄存器?中的內容並將其放到游標位置處。這里?可以是一個字母,也可以是一個數字
ndd   將當前行及其下共n行文本刪除,並將所刪內容放到1號刪除寄存器中

set number   顯示行號
set number!   不顯示行號,其它選項同理加!號
set all   列出所有選項設置情況
set term   設置終端類型
set ignorance   在搜索中忽略大小寫
set list   顯示製表位(Ctrl+I)和行尾標志($)
set report   顯示由面向行的命令修改過的數目
set terse   顯示簡短的警告信息
set warn   在轉到別的文件時若沒保存當前文件則顯示NO write信息
set nomagic   允許在搜索模式中,使用前面不帶「」的特殊字元
set nowrapscan   禁止vi在搜索到達文件兩端時,又從另一端開始
set mesg   允許vi顯示其他用戶用write寫到自己終端上的信息

參考文獻:
https://www.cnblogs.com/mondol/p/vi-examples.html

『貳』 Linux vi命令

vi是Linux下的一個編輯器,類似於Windows的Notepad(記事本)功能。
你說的那個就是列目錄功能,是ls,要配合匹配符*來使用,比如
ls Test_*
即可列出當明目錄下所有Test_開頭的文件名。

『叄』 Linux的vi命令怎麼進去

linux編輯文件時,雖然使用vi 文件名可以查看文件,但是無法修改文件,原因如下1、vi 文件名 後,進入文件但是一般模式,無法修改文件。2、按鍵 i 進入修改模式,此模式下可以修改文件。3、修改完後,按ESC,進入命令模式,此時用:wq 保存退出 或用:q!不保存退出。盡請關注《linux就該這么學》官網。

『肆』 linux用vi打開文件怎麼打開

其實任何文件都可以用vi打開,只不過vi是用ascii碼顯示文件內容而已。
如果是文本文件,可以直接看出文件內容;
如果是編譯的二進制文件、還有比如word、xls等office編輯的帶格式控制的文件,顯示出來的內容看不懂的。

『伍』 linux查找文件內容命令

搜索、查找文件當中的內容,一般最常用的是grep命令,另外還有egrep, vi命令也能搜索文件裡面內容

1:搜索某個文件裡面是否包含字元串,使用grep "search content" filename1, 例如

$ grep ORA alert_gsp.log

$ grep "ORA" alert_gsp.log

例如我們需要搜索、查找utlspadv.sql文件中包含ORA的字元內容

[oracle@DB-Server admin]$ grep "ORA" utlspadv.sql
-- ORA-XXXXX: Monitoring already started. If for example you want
-- ORA-20111:
-- ORA-20112:
-- ORA-20113: 'no active monitoring job found'
-- ORA-20113: 'no active monitoring job found'
-- 0 |<PS> =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""
-- |<PR> DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM=> 100% 0% 0% "" |<PR> ...
-- =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" |<PR> ...
-- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00
-- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM
-- ORA-20111:
-- ORA-20112:
-- ORA-20100:
-- ORA-20113: 'no active monitoring job found'
-- ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$

如上所示,這個是一個模糊匹配,其實我是想要查看ORA這類錯誤,那麼我要過濾掉哪一些沒有用的,搜索的內容修改一下即可(當然也可以使用特殊參數,後面有講述),如下所示。

[oracle@DB-Server admin]$ grep "ORA-" utlspadv.sql
-- ORA-XXXXX: Monitoring already started. If for example you want
-- ORA-20111:
-- ORA-20112:
-- ORA-20113: 'no active monitoring job found'
-- ORA-20113: 'no active monitoring job found'
-- ORA-20111:
-- ORA-20112:
-- ORA-20100:
-- ORA-20113: 'no active monitoring job found'
-- ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$

7:有些場景,我們並不知道文件類型、或那些文件包含有我們需要搜索的字元串,那麼可以遞歸搜索某個目錄以及子目錄下的所有文件

[oracle@DB-Server ~]$ grep -r "v$temp_space_header" /u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view v_$temp_space_header as select * from v$temp_space_header;

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym v$temp_space_header for v_$temp_space_header;

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace view gv_$temp_space_header as select * from gv$temp_space_header;

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql:create or replace public synonym gv$temp_space_header

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql: FROM gv$temp_space_header

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym v$temp_space_header;

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql:drop public synonym gv$temp_space_header;

[oracle@DB-Server ~]$

8:如果我們只想獲取那些文件包含搜索的內容,那麼可以使用下命令

[oracle@DB-Server ~]$ grep -H -r "v$temp_space_header" /u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql

[oracle@DB-Server ~]$ grep -H -r "v$temp_space_header" /u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/ | cut -d: -f1 | uniq

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspace.sql

/u01/app/oracle/proct/11.1.0/dbhome_1/rdbms/admin/catspacd.sql

[oracle@DB-Server ~]$

9:如果只想獲取和整個搜索字元匹配的內容,那麼可以使用參數w

你可以對比一下兩者的區別

[oracle@DB-Server admin]$ grep -w "ORA" utlspadv.sql
-- ORA-XXXXX: Monitoring already started. If for example you want
-- ORA-20111:
-- ORA-20112:
-- ORA-20113: 'no active monitoring job found'
-- ORA-20113: 'no active monitoring job found'
-- ORA-20111:
-- ORA-20112:
-- ORA-20100:
-- ORA-20113: 'no active monitoring job found'
-- ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$ grep "ORA" utlspadv.sql
-- ORA-XXXXX: Monitoring already started. If for example you want
-- ORA-20111:
-- ORA-20112:
-- ORA-20113: 'no active monitoring job found'
-- ORA-20113: 'no active monitoring job found'
-- 0 |<PS> =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 0 0 2 99.3% 0% 0.7% ""
-- |<PR> DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM=> 100% 0% 0% "" |<PR> ...
-- =>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 92 7 99.3% 0% 0.7% "" |<PR> ...
-- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM 2 0 0 0.E+00
-- |<C> CAPTURE_USER1=>DBS2.REGRESS.RDBMS.DEV.US.ORACLE.COM
-- ORA-20111:
-- ORA-20112:
-- ORA-20100:
-- ORA-20113: 'no active monitoring job found'
-- ORA-20113: 'no active monitoring job found'
[oracle@DB-Server admin]$

10: grep命令結合find命令搜索

[oracle@DB-Server admin]$ find . -name '*.sql' -exec grep -i 'v$temp_space_header' {} ; -print
create or replace view v_$temp_space_header as select * from v$temp_space_header;
create or replace public synonym v$temp_space_header for v_$temp_space_header;
create or replace view gv_$temp_space_header as select * from gv$temp_space_header;
create or replace public synonym gv$temp_space_header
FROM gv$temp_space_header
./catspace.sql
drop public synonym v$temp_space_header;
drop public synonym gv$temp_space_header;
./catspacd.sql
[oracle@DB-Server admin]$

11: egrep -w -R 'word1|word2' ~/klbtmp

12: vi命令其實也能搜索文件裡面的內容,只不過沒有grep命令功能那麼方便、強大。

『陸』 Linux之vi命令

vi profile
返回

:q 退出
:wq或者:x或者shift+zz 保存並退出
:q! 不保存並退出
:w 保存
:w! 強制保存

編輯到輸入模式:
i 在當前游標前面輸入
I 在當前游標所在行的行首,轉換為輸入模式
a 在當前游標後面輸入
A 在當前游標所在行的行尾,轉換為輸入模式
o 在當前游標所在行的下方,新建一行,並轉為輸入模式
O 在當前游標所在行的上方,新建一行,並轉為輸入模式

1、 移動游標
字元:方向鍵上下左右或者鍵盤kjhl(上下左右)
單詞:w移至下一個單詞的詞首;e跳至當前或下一個單詞的詞尾;b跳至當前或前一個單詞的詞首
行內: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:重做撤銷的操作;.重復上一步的操作【假設先dd,再.,會再執行dd命令】

1、 set設置
set nu
set nonu
set readonly #設置只讀文件,不能修改,只在當前環境有效,退出文件,再次打開,這個只讀就無效了
set noreadonly #取消只讀
2、 /查找
/after查找文檔中的after【可以找到所有的after】,n向下翻,N向上翻
:/after查找文檔中的after所在行【可以找到所有的after】,n向下翻,N向上翻
3、!執行命令
比如:查找root目錄
:!ls /root/
4、 查找並替換
格式
【 :查找范圍s/查找的詞/要替換的詞/ 】
或者【:查找范圍s#查找的詞#要替換的詞# 】
或者【:查找范圍s%查找的詞%要替換的詞%】,
即分隔符可以是/、#、%
其中, 查找范圍 包括【.當前游標行】;【$末尾行】;【%全文】;【g一行內全部替換】;【i忽略大小寫】
比如 【 :.,$s/after/before/】 表示在當前游標行【.】到末尾【$】這個范圍內,將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,且忽略大小寫並替換一行內所有after。
比如 【 :%d或者dG】 ,表示刪除全文
比如 【:1,$-4d】 ,表示刪除第一行到倒數第5行的數據
比如 【:1,4y】 ,表示復制1到4行,再按p可粘貼這4行

『柒』 vi命令怎麼編輯文件和保存

點擊vi文件名,按Enter鍵打開相應的文件。如果沒有相應的文件,vi命令將自動創建一個新文件。vi是打開文件後的命令模式狀態,可以使用i或a命令進入可編輯狀態,按a進入編輯模式。在編輯模式的情況下,應保存內容,此時應保存文件。要保存文件請按esc,返回vi的命令模式。

『捌』 如何在 Vim/Vi 中快速查找和替換文本內容

Vim 是 Vi 多模式命令行 編輯器 的加強版,通常默認的Unix或Linux系統中都默認自帶Vi命令編輯器。當然,為了更好的體驗,如果系統默認沒有安裝Vim,建議安裝Vim。

通過本文的講解,你將學會如何在Vim/Vi中快速的使用命令進行查找替換文本。

首先,啟動Vim/Vi編輯器,處於正常模式下。如果你不確定是否處於正常模式下,這時你可以按「ESC」,編輯器就會進入正常模式。

替換命令的格式一般如下:

該命令表示在[range]的每一行中搜索{pattern},並將其替換為{string}。 [count]是一個乘以命令的正整數。

如果沒有給出[range]和[count],則僅替換當前行中找到的模式。

例如,要搜索當前行中字元串「foo」的首次出現,並將其替換為「bar」,可以使用:

要替換當前行中搜索到的所有內容,可以添加 g 標志:

如果想搜索和替換整個文件中的匹配內容,使用百分比字元 % 作為范圍。此字元指示從文件第一行到最後一行的范圍:

如果省略 {string} 部分即上面的bar,則將其視為空字元串,相當於將匹配到的內容替換為空,既刪除匹配到的內容。

以下命令刪除當前行中字元串「foo」的所有實例:

當然,除了作為分隔符外,還可以使用任何其他非字母數字單位元組字元,而不是斜杠字元( / )。例如:

要確認每個替換,可以使用 c 標志。

替換前會詢問:

按 y 替換匹配項,或按l替換匹配項並退出。 按 n 跳過當前匹配,按 q 或 Esc 退出替換。 a 選項替換匹配項和所有剩餘匹配項。

若要向下滾動屏幕,請使用 CTRL + Y ,向上滾動,請使用 CTRL + E 。

還可以使用 正則表達式 作為搜索模式,例如:

^ 符號表示與行首匹配, .* 表示匹配任意數量的字元。

默認情況下,搜索操作區分大小寫;搜索「FOO」將與「FOo」不匹配。

要忽略搜索模式的案例,請使用 i 標志:

另一種強制忽略案例的方法是在搜索模式後添加 \c 。例如, /Linux\c 執行忽略大小寫搜索。

當未指定范圍時,替換命令僅在當前行中操作。

范圍可以是一行,也可以是兩行之間的范圍。 行說明符之間可用英文 , 分隔 ; 字元分割。 可以使用絕對行號或特殊符號指定范圍。

例如,要在從第3行到第10行的所有行中將所有出現的「 foo」替換為「 bar」,可以使用:

該范圍是包含范圍的,這意味著該范圍包括第一行和最後一行。

. 字元表示當前行, $ 美元符號表示最後一行。 要在從當前行到最後一行的所有行中替換「 foo」:

也可以使用「 +」或「-」符號來設置行說明符,其後是從前一個行號添加或減去的數字。 如果省略符號後的數字,則默認為1。

例如,從當前行和接下來的四行開始,用「 bar」替換每個「 foo」,鍵入:

替代命令將模式作為字元串而不是整個單詞查找。 例如,如果您正在搜索「 gnu」,則搜索查找匹配「 gnu」嵌入在較大單詞(例如「cygnus」 或 「magnum」)中的情況。

要搜索整個單詞,請鍵入\ <標記單詞的開頭,輸入搜索模式,鍵入>標記單詞的結尾:

例如,要搜索單詞「 foo」,可以使用 \<foo\> :

Vim會跟蹤您在當前會話中運行的所有命令。

要瀏覽歷史記錄以查找先前的替代命令,請輸入 :s 並使用向上或向下箭頭鍵查找先前的替代操作。 要運行該命令,只需按Enter。 您也可以在執行操作之前編輯命令。

注釋行(在行前添加#)從5到20:

取消注釋行從5到20,恢復以前的更改:

將「蘋果」,「橙色」和「芒果」的所有實例替換為「水果」:

刪除每行末尾的空格:

搜索和替換在Vim中是一個非常強大的功能,學會使用它能使您可以快速更改文本,提高自己的工作效率。

歡迎通過查看我個人介紹信息,私信跟我溝通!

『玖』 如何使用vi命令打開文件

在命令行輸入vi 空格 文件名 就可以了,如:
vi file.txt

『拾』 linux 查看文件內容的幾種命令

好多的吧,我說下常用的吧
cat #將文件內容輸出到屏幕
head #查看文件開頭N行
tail #查看文件末尾N行
tailf #動態的查看的寫入,有寫入時屏幕輸出
vim、vi #文件編輯器,也可以當是查看文件{進入文件}
grep #查看特定的字元行
sed #這個是不進入文件裡面修改文件,可以看文件的
awk #這個是按列查看文件
grep/sed/awk #這是文本三劍客,對字元的篩選,替換,修改,這三個比較重要的