vi編輯器3

shell中啓動可視化編輯器
vi filename 指示shell啓動vi編輯器,並將參數filename傳給它。如果當前目前中存在該文件,則vi編輯器將它解釋爲要打開的文件;如果沒有該文件,則vi編譯器創建新文件
vi file1 file2 file3 shell傳遞3個參數給vivi將它們解釋爲要打開的文件。可以使用:w命令保存文件,使用:n命令訪問下一個文件
vi +# filename 打開文件,並將光標移到指定的行。例如,命令vi +100 records 從第100行開始編輯文件records
vi +/the filename 打開文件,並將光標移動包含有目標字符串的行。例如,命令vi +/Jason friends 從第1個含有字符串Jason的行開始編輯文件friends
view filename 打開文件進行編輯,但是拒絕保存對文件的修改,除非使用w!命令
光標移動命令
hjkl 將光標分別向左、下、上、右移動一個字符
0() 將光標移到當前行的行首
^(脫字符) 0一樣將光標移到當前行的行首
$ 將光標移到當前行的行末
##G 將光標移到G前面的數字指定的行。例如,42G將光標移到文件的第42
G 將光標移到文件的最後一行
w 將光標向前移到下一個單詞的首字母
e 將光標向前移到下一個單詞的最後一個字母
b 將光標向後移到上一個單詞首字母
- 將光標定位到上一行的行首
+ 將光標定位到下一行的行首
12| 將光標定位到當前行的第12
L 將光標定位到屏幕的最下面一行
M 將光標定位到屏幕中間的一行
H 將光標定位到屏幕的最上面一行
'' 兩個單引號將光標移到它的先前的位置
光標定位命令(上下文的)
fb將光標向前移到當前行上的下一個字母b(或者其他的任意指定的字符)
Fb將光標向後移到當前行上的上一個字母b(或指定的字符)
t#將光標移到當前行上字符#的第1個實例的右側。例如,命令tM將光標移到當前行上第1M的右側
T#在當前行上向左移動光標,將它移到字符#的第1個實例的前一字符
/word將光標向前移到單詞word的下一個實例
?word將光標向後移到單詞word的上一個實例
n將光標移到前面命令/word?word中指定模式的下一個實例
顯示調整命令
Ctrl+D顯示文件中的下半屏文本
Ctrl+U顯示文件中的上半屏文本
Ctrl+F顯示文件中的下一屏文本
Ctrl+B顯示文件中的上一屏文本
設置顯示選項
:set number將行號作爲屏幕顯示的一部分,但是行號並不是文件的一部分。它的縮寫形式爲:set nu
:set nonumber清除屏幕上的行號。也可以使用縮寫形式:set nonu
:set showmode在屏幕的右下角顯示追加模式信息
:set list在每行的行末顯示美元符號,並用Ctrl+I表示製表符
:set showmatch在輸入)或]時,將光標移到與之匹配的(或[
:set window=value定義屏幕上顯示的文本行的行數
:set autoindent自動縮進。也可以使用縮寫形式:set ai
:set tabstop=value設置顯示製表符的空格字符個數。也可以使用縮寫形式ts=value
:set wrapmargin=value 設置顯示器的右頁邊。當輸入進入所設置的頁邊時,編輯器自動回車換行
:set ignorecase 指示編輯器搜索字符串,並忽略目標中字母的大小寫
:set顯示設置的所有選項
:set all顯示所有可以設置的選項
文本刪除命令
dd刪除當前光標所有的文本行
#dd刪除#行文本
dw從文本中刪除一個單詞
#dw從文本中刪除#個單詞
x刪除光標所在的一個字符
#x從文本中刪除#個字符
D刪除當前行上光標後面的部分
:#,#d例如,:12,37d 將刪除第1237行之間的所有文本,包括第1237
撤銷命令
u撤銷。恢復最近一次的文本修改操作,即使已經移動了光標。在Linux系統中,再次使用撤銷命令將恢復更前一次的文本修改操作。在BSDvi中,第2次撤銷操作將撤銷第一次撤銷操作,恢復第1次撤銷前修改的文本
:redoLinux系統中,取消撤銷操作恢復文本修改。在標準的UNIX系統中,第2u命令取消第1u命令,結果就是一個“redo”
U如果在修改後還沒有將光標移出當前行,則可以撤銷對當前行進行的所有的文本修改
向文本中添加文本
a(小寫)從光標的右側開始插入文本
A(大寫)從當前行的行末開始添加文本
i(小寫)從光標的左側開始插入文本
I(大寫)從當前行的行首插入文本
o(小寫)在光標的下面打開(或插入)一個新行
O(大寫)在光標的上面打開一個新行
:#r filename例如,:8r report.old讀取文件report.old,並將它的內容放到當前文件的第8行之後
Esc無論使用什麼命令進入了追加/插入模式,都可以通過按Esc鍵離開追加模式返回到vi的命令模式
Ctrl+V允許輸入控制字符。按Ctrl+V鍵後再按回車鍵將把Ctrl+M插入到文件中
在文件中修改文本
cw 僅僅修改光標處的單詞(刪除單詞,然後進入追加模式中,以在被刪除單詞的位置添加文本)
s(小寫)替換單個字符
S(大寫) 替換整行文本
cc 替換整行文本(S)
r 用輸入的下一個字符替代當前光標處的字符,並自動返回到命令模式
R將編輯器放到覆蓋模式,用輸入的字符來逐個替換光標處的字符
C(大寫) 修改行上從光標到行末之間的文本
ct#修改行上從光標到前向第1個目標字符之間的文本。例如ctY將刪除當前行上從光標到向前第1個字符Y之間的所有文本,並進入追加模式以在刪除文本的位置添加文本
cf# 修改行上從光標到前向第1個目標字符之間的文本(包括目標字符)。例如cfY將刪除當前行上從光標到向前第1個字符Y之間(包括Y)的所有文本,並進入追加模式以在刪除文本的位置添加文本
cT# 修改行上從光標到後向第1個目標字符之間的文本。例如cTY將刪除當前行上從光標到向後第1個字符Y之間的所有文本,並進入追加模式以在刪除文本的位置添加文本
cF# 修改行上從光標到後向第1個目標字符之間的文本(包括目標字符)。例如cFY將刪除當前行上從光標到向後第1個字符Y之間(包括Y)的所有文本,並進入追加模式以在刪除文本的位置添加文本
接出和粘貼行的單詞
yy將當前行復制或接出到內在緩衝區。20yy將當前行和它後面的19行(共20行)文本複製到內存。目標行仍然保留在文件中,可以使用p命令將這些內存中的文本粘貼到文件中
dd 刪除當前行,並將它放到與yy命令使用的相同的內存緩衝區。目標行從文件中刪除,但是可以使用p命令將它粘貼到文件中的其他地方
yw將當前光標所在的單詞接出或複製到內在緩衝區。6yw命令將把當前單詞和它後面的5個(共6個)單詞複製到內存
dw刪除當前的單詞,並將它放到與yw命令使用的相同的內存緩衝區。可以使用p命令將單詞粘貼到文件的其他地方
yt#接出從光標到向前一個字符(不包括該字符)之間的文本。例如,ytB命令將從光標到字符B的下一實例(不包括字符B)之間的文本接出或複製到內存
yf#接出從光標到向前一個字符(包括該字符)之間的文本。例如,yf:命令將從光標到字符:的下一個實例(包括字符:)之間的文本接出或複製到內存
yT#後向接出(不包括目標字符)。例如,yTN命令將從光標到字符N的後向第1個實例之間的文本(不包括字符N)接出或複製到內存
yF#後向接出(包括目標字符)。例如,yFJ命令將把從光標到字符N的向後第1個實例之間的文本(包括字符N)接出或複製到內存
p將內存中的文本行粘貼到文件中光標所在行的下面,或將內存中的單詞粘貼到文件中光標的右側
P(大寫)將接出或刪除的文本行粘貼到文件中光標所在行的上面。或將接出或刪除的單詞粘貼到文件中光標的左側
文件移動命令
J 將下行文本同當前行合併成一行
:#,# move #將指定的行移到目標位置。:12,35 move 58命令將第1235行之間的所有文本移到第58行的後面。縮寫爲mo
:1,26 co 82 將第126行之間的所有文本複製到第82行的後面(可以選擇行號)
使用可視化編輯器進行全局編輯
:s /target/replacement/ 查找當前行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。只修改當前行上的第1個目標實例
:g /target/s//replacement/ 查找所有行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。修改所有行上目標的第1個實例
:#,# s/target/replacement/ 在指定的行上進行替換。例如,:7,37 s/march/walk/將查找第737行之間的所有文本行,並用字符串walk替換每行中的第1個目標字符串march。所有指定行上的第1個目標字符串修改
:#,# s/target/replacement/g在指定的行上進行全局替換。例如,:1,$ s/fun/joyful/g 將在第1行到文件最後一行之間查找目標字符串fun的所有實例並刪除,然後用字符串joyful替換。指定行上的目標字符串的所有實例都被修改
:g /target/s/replacement 查找所有行上目標字符串的第1個實例並刪除,然後用字符串replacement替換。所有行上的第1個目標都被修改
:#,# target/s/replacement/ 在指定的行上進行替換,例如,:7,37 march/s/walk命令在第737行之間每個文本行上查找目標字符串的第1個實例並刪除,然後用字符串walk替換。所有指定行上的第1個目標字符串都被修改
:#,# target/s/replacement/g在指定的行上進行全局替換。例如,:1,$ fun/s/joyful/g將在第1行到文件最後一行之間查找目標字符串fun的所有實例並刪除,然後用字符串joyful替換。指定行上的所有目標字符串都被修改
編輯工具:映射,縮寫和標記
m#用字母標記當前行。例如,ma

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章