『壹』 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 #這是文本三劍客,對字元的篩選,替換,修改,這三個比較重要的