-
當前位置:首頁 > 創(chuàng)意學院 > 景觀設計 > 專題列表 > 正文
vi命令如何切換到指定行(vi命令怎么換行)
大家好!今天讓小編來大家介紹下關于vi命令如何切換到指定行的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
創(chuàng)意嶺作為行業(yè)內優(yōu)秀的企業(yè),服務客戶遍布全球各地,相關業(yè)務請撥打電話:175-8598-2043,或添加微信:1454722008
文章目錄列表:
一、VI 編輯器基本操作及快捷鍵
在系統(tǒng)提示符號輸入vi及文件名稱后,就進入vi全屏幕編輯畫面:
$ vi myfile
不過有一點要特別注意,就是您進入vi之后,是處于 命令行模式(command mode) ,您要切換到 插入模式(Insert mode) 才能夠輸入文字。初次使用vi的人都會想先用上下左右鍵移動光標,結果電腦一直嗶嗶叫,把自己氣個半死,所以進入vi后,先不要亂動,轉換到 插入模式(Insert mode) 再說吧!
在 命令行模式(command mode) 下按一下字母 i 就可以進入 插入模式(Insert mode) ,這時候你就可以開始輸入文字了。
您目前處于 插入模式(Insert mode) ,您就只能一直輸入文字,如果您發(fā)現(xiàn)輸錯了字!想用光標鍵往回移動,將該字刪除,就要先按一下 ESC 鍵轉到 命令行模式(command mode) 再刪除文字。
在 命令行模式(command mode) 下,按一下 : 冒號鍵進入 Last line mode ,例如:
: w filename (輸入 w filename 將文章以指定的文件名filename保存)
: wq (輸入 wq ,存盤并退出vi)
: q! (輸入 q! , 不存盤強制退出vi)
按 i 切換進入插入模式 insert mode ,按"i"進入插入模式后是從光標當前位置開始輸入文件;
按 a 進入插入模式后,是從目前光標所在位置的下一個位置開始輸入文字;
按 o 進入插入模式后,是插入新的一行,從行首開始輸入文字。
按 ESC 鍵。
vi可以直接用鍵盤上的光標來上下左右移動,但正規(guī)的vi是用小寫英文字母 h 、 j 、 k 、 l ,分別控制光標左、下、上、右移一格。
按 ctrl + b :屏幕往"后"移動一頁。
按 ctrl + f :屏幕往"前"移動一頁。
按 ctrl + u :屏幕往"后"移動半頁。
按 ctrl + d :屏幕往"前"移動半頁。
按數(shù)字 0 :移到文章的開頭。
按 G :移動到文章的最后。
按 $ :移動到光標所在行的"行尾"。
按 ^ :移動到光標所在行的"行首"
按 w :光標跳到下個字的開頭
按 e :光標跳到下個字的字尾
按 b :光標回到上個字的開頭
按 #l :光標移到該行的第#個位置,如:5l,56l。
x :每按一次,刪除光標所在位置的"后面"一個字符。
#x :例如, 6x 表示刪除光標所在位置的"后面"6個字符。
X :大寫的X,每按一次,刪除光標所在位置的"前面"一個字符。
#X :例如, 20X 表示刪除光標所在位置的"前面"20個字符。
dd :刪除光標所在行。
#dd :從光標所在行開始刪除#行
yw :將光標所在之處到字尾的字符復制到緩沖區(qū)中。
#yw :復制#個字到緩沖區(qū)
yy :復制光標所在行到緩沖區(qū)。
#yy :例如, 6yy 表示拷貝從光標所在的該行"往下數(shù)"6行文字。
p :將緩沖區(qū)內的字符貼到光標所在位置。注意:所有與"y"有關的復制命令都必須與"p"配合才能完成復制與粘貼功能。
r :替換光標所在處的字符。
R :替換光標所到之處的字符,直到按下 ESC 鍵為止。
u :如果您誤執(zhí)行一個命令,可以馬上按下 u ,回到上一個操作。按多次"u"可以執(zhí)行多次回復。
cw :更改光標所在處的字到字尾處
c#w :例如, c3w 表示更改3個字
ctrl + g 列出光標所在行的行號。
#G :例如, 15G ,表示移動光標至文章的第15行行首。
在使用 last line mode 之前,請記住先按 ESC 鍵確定您已經處于 command mode 下后,再按 : 冒號即可進入 last line mode 。
set nu :輸入 set nu 后,會在文件中的每一行前面列出行號。
# : # 號表示一個數(shù)字,在冒號后輸入一個數(shù)字,再按回車鍵就會跳到該行了,如輸入數(shù)字15,再回車,就會跳到文章的第15行。
/關鍵字 :先按 / 鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按 n 會往后尋找到您要的關鍵字為止。
?關鍵字 :先按 ? 鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按 n 會往前尋找到您要的關鍵字為止。
w :在冒號輸入字母 w 就可以將文件保存起來。
q :按 q 就是退出,如果無法離開vi,可以在 q 后跟一個 ! 強制離開vi。
qw :一般建議離開時,搭配 w 一起使用,這樣在退出的時候還可以保存文件。
h
左移光標一個字符
l
右移光標一個字符
k
光標上移一行
j
光標下移一行
^
光標移動至行首
0
數(shù)字"0",光標移至文章的開頭
G
光標移至文章的最后
$
光標移動至行尾
Ctrl+f
向前翻屏
Ctrl+b
向后翻屏
Ctrl+d
向前翻半屏
Ctrl+u
向后翻半屏
i
在光標位置前插入字符
a
在光標所在位置的后一個字符開始增加
o
插入新的一行,從行首開始輸入
ESC
從輸入狀態(tài)退至命令狀態(tài)
x
刪除光標后面的字符
#x
刪除光標后的#個字符
X
(大寫X),刪除光標前面的字符
#X
刪除光標前面的#個字符
dd
刪除光標所在的行
#dd
刪除從光標所在行數(shù)的#行
yw
復制光標所在位置的一個字
#yw
復制光標所在位置的#個字
yy
復制光標所在位置的一行
#yy
復制從光標所在行數(shù)的#行
p
粘貼
u
取消操作
cw
更改光標所在位置的一個字
#cw
更改光標所在位置的#個字
w filename
儲存正在編輯的文件為filename
wq filename
儲存正在編輯的文件為filename,并退出vi
q!
放棄所有修改,退出vi
set nu
顯示行號
/ 或 ?
查找,在/后輸入要查找的內容
n
與/或?一起使用,如果查找的內容不是想要找的關鍵字,按n或向后(與/聯(lián)用)或向前(與?聯(lián)用)繼續(xù)查找,直到找到為止。
對于第一次用vi,有幾點注意要提醒一下:
1、用vi打開文件后,是處于 命令行模式(command mode) ,您要切換到 插入模式(Insert mode) 才能夠輸入文字。切換方法:在 命令行模式(command mode) 下按一下字母 i 就可以進入 插入模式(Insert mode) ,這時候你就可以開始輸入文字了。
2、編輯好后,需從插入模式切換為命令行模式才能對文件進行保存,切換方法:按 ESC 鍵。
3、保存并退出文件:在命令模式下輸入:wq即可!(別忘了wq前面的)
vi使用手冊
VI是unix上最常用的文本編輯工具,作為unix軟件測試人員,有必要熟練掌握它。
進入vi的命令
vi filename :打開或新建文件,并將光標置于第一行首
vi +n filename :打開文件,并將光標置于第n行首
vi + filename :打開文件,并將光標置于最后一行首
vi +/pattern filename:打開文件,并將光標置于第一個與pattern匹配的串處
vi -r filename :在上次正用vi編輯時發(fā)生系統(tǒng)崩潰,恢復filename
vi filename…filename :打開多個文件,依次編輯
移動光標類命令
h :光標左移一個字符
l :光標右移一個字符
space:光標右移一個字符
Backspace:光標左移一個字符
k或Ctrl+p:光標上移一行
j或Ctrl+n :光標下移一行
Enter :光標下移一行
w或W :光標右移一個字至字首
b或B :光標左移一個字至字首
e或E :光標右移一個字j至字尾
) :光標移至句尾
( :光標移至句首
}:光標移至段落開頭
{:光標移至段落結尾
nG:光標移至第n行首
n+:光標下移n行
n-:光標上移n行
n :光標移至當前行尾
屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
插入文本類命令
i :在光標前
I :在當前行首
a:光標后
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字符
R:替換當前字符及其后的字符,直至按ESC鍵
s:從當前光標位置處開始,以輸入的文本替代指定數(shù)目的字符
S:刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW:修改指定數(shù)目的字
nCC:修改指定數(shù)目的行
刪除命令
ndw或ndW:刪除光標處開始及其后的n-1個字
do:刪至行首
d$:刪至行尾
ndd:刪除當前行及其后n-1行
x或X:刪除一個字符,x刪除光標后的,而X刪除光標前的
Ctrl+u:刪除輸入方式下所輸入的文本
搜索及替換命令 :
/pattern:從光標開始處向文件尾搜索pattern
?pattern:從光標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
:s/p1/p2/g:將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換
選項設置
all:列出所有選項設置情況
term:設置終端類型
ignorance:在搜索中忽略大小寫
list:顯示制表位(Ctrl+I)和行尾標志($)
number:顯示行號
report:顯示由面向行的命令修改過的數(shù)目
terse:顯示簡短的警告信息
warn:在轉到別的文件時若沒保存當前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan:禁止vi在搜索到達文件兩端時,又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
最后行方式命令
:n1,n2 co n3:將n1行到n2行之間的內容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內容刪除
:w :保存當前文件
:e filename:打開文件filename進行編輯
:x:保存當前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:執(zhí)行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內容作為command的輸入并執(zhí)行之,若不指
定n1,n2,則表示將整個文件內容作為command的輸入
:r!command:將命令command的輸出結果放到當前行 。
二、vi 命令大全
vi filename 打開或新建文檔,并將光標置于第一行行首
vi +n filename 打開文件,并將光標置于第n行首
vi + filename 打開文件,并將光標置于最后一行首
vi +/pattern filename 打開文件,并將光標置于第一個與pattern匹配的串處
vi -r filename 在上次正用vi編輯時發(fā)生系統(tǒng)崩潰,恢復filename
vi filename....filename 打開多個文件,依次進行編輯
w 保存當前文件
w /tmp1 另存為/tmp1
20,59w /tmp1 僅將20-59行之間的內存另存為/tmp1
x 或 wq 保存退出
q 退出vi
q! 退出不保存 >
!command 執(zhí)行shell命令command
n1,n2 w !command 將文件中n1行至n2行的內容作為command的輸入并執(zhí)行之,若不指定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 (注意是數(shù)字零)光標移至當前行首
$ 光標移至當前行尾
Ctrl+u 向文件首翻半屏
Ctrl+d 向文件尾翻半屏
Ctrl+f 向文件尾翻一屏
Ctrl+b 向文件首翻一屏
nz 將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部
i 在光標前
I 在當前行首
a 光標后
A 在當前行尾
o 在當前行之下新開一行
O 在當前行之上新開一行
r 替換當前字符
R 替換當前字符及其后的字符,直至按ESC鍵
s 從當前光標位置處開始,以輸入的文本替代指定數(shù)目的字符
S 刪除指定數(shù)目的行,并以所輸入文本代替
ncw 或 nCW 修改指定數(shù)目的字
nCC 修改指定數(shù)目的行
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 然后方向鍵選擇區(qū)域,按 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/(可以使用 # 或 + 作為分隔符,此時中間出現(xiàn)的 / 不會作為分隔符)
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為一個數(shù)字
"?nyw 將當前行及其下n個字保存到寄存器?中,其中?為一個字母,n為一個數(shù)字
"?nyl 將當前行及其下n個字符保存到寄存器?中,其中?為一個字母,n為一個數(shù)字
"?p 取出寄存器?中的內容并將其放到光標位置處。這里?可以是一個字母,也可以是一個數(shù)字
ndd 將當前行及其下共n行文本刪除,并將所刪內容放到1號刪除寄存器中
set number 顯示行號
set number! 不顯示行號,其它選項同理加!號
set all 列出所有選項設置情況
set term 設置終端類型
set ignorance 在搜索中忽略大小寫
set list 顯示制表位(Ctrl+I)和行尾標志($)
set report 顯示由面向行的命令修改過的數(shù)目
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如何跳轉到指定行
:5
就跳去第5行了
四、vim操作技巧
不知不覺使用vim已經有一些時間了,也算得上真正掌握使用技巧了吧。想不起來當初為什么去學習這個編輯器,也不記得怎么學會使用編輯文件,只記得當初按完所有的鍵盤按鍵都沒有退出vim。一顆種子要經過多少風雨才能長成參天大樹,一條小溪要經過多少高山河流才能匯入大海。我們平常學習一樣東西,要經過多少困難,多少挫折,只有自己最清楚。
普通編輯器都可以直接打開文件進行編輯、保存、使用快捷鍵等等,vim也具備這些功能,但是有些功能要在特定模式下才能使用。也是因為這些模式,讓vim學習路線變得特別比較陡峭。vim具有多種模式,每種模式都有特定功能,有時你需要某些功能時,特意切換到指定模式下操作。使用鍵盤就可以隨意切換模式,讓vim不依賴鼠標操作,使用最小化組合鍵的操作,編輯效率大大提高。
這個模式主要功能,可以使用移動命令,擴大高亮的文本區(qū)域。輸入命令將直接作用于選中文本區(qū)域。這就相當于你用鼠標選中一段文本區(qū)域,可以使用可以使用命令進行,復制、剪切、修改操作,但是vim并不需要鼠標。
這個模式要在可視模式下才能進入,可以直接使用退格鍵或者空格鍵刪除選中文本區(qū)域,或者直接輸入新的文本,替換選中高亮區(qū)域進入插入模式。
平常在使用vim主要是在普通模式、插入模式、可視模式、命令模式進行操作,掌握這里基本就可以熟悉使用vim了。
掌握這些快捷鍵,移動光標得時候,手機基本不會離開核心鍵盤區(qū),有沒有像 w , a , s , d 移動角色的感覺🙂。
要想編寫文本內容,還必須在插入模式下進行操作,以下命令由普通模式進入到插入模式
d 刪除字符(delete), d 本身沒有任何涵義,但是它可以跟其他命令組合,完成一些快速操作。
<font size=5>操作符 + 動作命令 = 操作</font>
d<span style="color:red;">{motion}</span> 命令可以對一個字符 dl 、一個完整單詞 daw 或
一整個段落 dap 進行操作,它作用的范圍由動作命令決
定。c<span style="color:red;">{motion}</span>、y<span style="color:red;">{motion}</span> 以及其他一些命令也類似,它們被統(tǒng)稱為操作符(operator)。
<center>Vim的操作符命令</center>
看著上面刪除操作,是不是很容易理解操作符 + 動作命令 的模式,比如我們已經知道 daw 刪除整個單詞, gU 反轉大寫,我們就可以使用 gUaw 反轉整個單詞, gUap 反轉整個段落大寫
由于vim中copy快捷鍵已經被change修改占用了,只能使用 y 代表復制(yank),粘貼(put)使用 p , d 其實是將內容剪切到寄存器中,剪切實現(xiàn)刪除操作。 ddp 看起來是將兩行位置互換,其實先剪切當前行到寄存器中, p 粘貼到光標下的位置。主要記住使用命令 y + 動作指令 或者 d + 動作指令,都是將文本暫存到寄存器中,使用 p 或者 P 進行粘貼。進行一個小demo練習,將變量field替換下面的函數(shù)參數(shù)foo。
思路: 先使用 yw 復制field字段,下移動foo中, dw 刪除foo, P 粘貼。但是你會發(fā)現(xiàn)粘貼結構居然還是foo。這是因為 dw 將刪除文本放入寄存器中,覆蓋了上面copy的變量。我們平常復制,剪切的文本都會暫存再無名寄存器中。
在vim中的刪除、復制、粘貼都是使用寄存器,可以使用 "{registerName} 方式命名寄存器。平時我們使用 dd , yy 命令,不指名寄存器名稱默認使用無名寄存器。倘若沒有指定要使用的寄存器,Vim將缺省使用無名寄存器,它可以用雙引號表示(參見 :h quote_quote )。無名寄存器可以使用 "" 表示,比如 ""yy 相當于 yy , ""p 相當于 p
"[0-9]表示數(shù)字寄存器,數(shù)字越小表示最早在寄存器內容。例如 "0 表示第一個進入寄存器文本, "1 表示第二個進入寄存器內容,類似值棧結構,先進后出排列??梢允褂?:reg 查看寄存器中內容。
在win系統(tǒng)中,可以在任意地方Ctrl c復制文本,vim是否可以粘貼非vim中復制內容?當然是可以的。 "+ 表示系統(tǒng)寄存器,可以讀取系統(tǒng)vim之外的系統(tǒng)粘貼板中的內容,可以粘貼內容,復制到系統(tǒng)粘貼板中去。ubuntu上需要安裝vim-gnome,才可以正常使用系統(tǒng)寄存器。
使用粘貼命令前面+寄存器名稱,就可以直接使用專用寄存器中的內容了,例如 "+p 直接粘貼系統(tǒng)剪貼板中的內容。
在插入模式使用 <Ctrl r> + 寄存器名稱粘貼字符文本。例如可以使用 <Ctrl r>" 粘貼無名寄存器中內容。
本文章有部分內容參考 《vim實用技巧第2版》 ,有興趣的同學可以買一個本來看看,真的很不錯哦!
以上就是小編對于vi命令如何切換到指定行問題和相關問題的解答了,如有疑問,可撥打網(wǎng)站上的電話,或添加微信。
推薦閱讀:
澳大利亞ChatGPT情感(澳大利亞tripviewlite)