一、一般模式:刪除、復(fù)制與粘貼類命令
創(chuàng)新互聯(lián)建站專注于沈北新企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站開發(fā)。沈北新網(wǎng)站建設(shè)公司,為沈北新等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
x,X
x為向后刪除一個(gè)字符,X為先前刪除一個(gè)字符
nx(n代表數(shù)字)
向后刪除n個(gè)字符
dd
刪除當(dāng)前行
D
刪除當(dāng)前行所有字符,試成為空行
ndd(n代表數(shù)字)
刪除光標(biāo)所在行的向下n列
d1G
刪除光標(biāo)所在行到第一行的所有數(shù)據(jù)
dG
刪除光標(biāo)所在行到最后一行的所有數(shù)據(jù)
yy
復(fù)制光標(biāo)所在行
y1G
復(fù)制光標(biāo)所在行到第一行的所有數(shù)據(jù)
yG
復(fù)制光標(biāo)所在行到最后一行的所有數(shù)據(jù)
ynj(n代表數(shù)字)
復(fù)制光標(biāo)所在行向下n+1行
dnj(n代表數(shù)字)
刪除光標(biāo)所在行向下n+1行
p,P
p為復(fù)制的數(shù)據(jù)粘貼在光標(biāo)的下一行,P為復(fù)制的數(shù)據(jù)粘貼在光標(biāo)的上一行
J
將光標(biāo)所在行與下一行的數(shù)據(jù)結(jié)合成一行
u
恢復(fù)前一個(gè)動(dòng)作(undo)
二、編輯模式命令
i,I
i為在當(dāng)前光標(biāo)所在處插入輸入的文字,I為在光標(biāo)所在行第一個(gè)非空字符插入輸入的文字
a,A
a為在當(dāng)前光標(biāo)所在處下一個(gè)字符插入輸入的文字,A為在光標(biāo)所在行最后一個(gè)字符的下一個(gè)字符處插入輸入的文字
o,O
o為在光標(biāo)所在行的下一行行首開始插入字符,O為在光標(biāo)所在行的上一行行首開始插入字符
r,R
r為替換光標(biāo)所在那一個(gè)字符,R為一直替換光標(biāo)所指的文字,直到退出
Esc
退出,回到一般模式
三、命令模式
h
光標(biāo)向左移一個(gè)字符
j
光標(biāo)向下移一個(gè)字符
k
光標(biāo)向上移一個(gè)字符
l
光標(biāo)向右移一個(gè)字符
Ctrl+f
屏幕向下翻一頁(yè)
Ctrl+b
屏幕向上翻一頁(yè)
Ctrl+d
屏幕向下翻半頁(yè)
Ctrl+u
屏幕向上翻半頁(yè)
+
光標(biāo)移動(dòng)到下一行的第一個(gè)非空字符
-
光標(biāo)移動(dòng)到當(dāng)前行的第一個(gè)非空字符
n空格(n代表數(shù)字)
光標(biāo)向當(dāng)前行向右移動(dòng)n個(gè)字符
0(數(shù)字0)
光標(biāo)移動(dòng)到當(dāng)前行的第一個(gè)字符(可以為空字符,注意與-區(qū)分)
$
光標(biāo)移動(dòng)到當(dāng)前行的最后一個(gè)字符(可以為空字符,注意與-區(qū)分)
H
光標(biāo)移動(dòng)到當(dāng)前屏幕最上方的那一行的第一個(gè)非空字符
M
光標(biāo)移動(dòng)到當(dāng)前屏幕最中間那一行的第一個(gè)非空字符
L
光標(biāo)移動(dòng)到當(dāng)前屏幕最下方的那一行的第一個(gè)非空字符
G
光標(biāo)移動(dòng)到該文章最后一行的第一個(gè)非空字符
nG(n代表數(shù)字)
光標(biāo)移動(dòng)到該文章第n行的第一個(gè)非空字符
n
光標(biāo)從當(dāng)前行向下移動(dòng)n行的第一個(gè)非空字符
/word
在光標(biāo)之后查找word字符串
?word
在光標(biāo)之前查找word字符串
:s/word1/word2/g
在光標(biāo)當(dāng)前行查找word1,并替換成word2
:n1,n2s/word1/word2/g
在第n1行與第n2行之間查找word1,并替換成word2
:%s/word1/word2/g
整個(gè)文章查找word1,并替換成word2
:w
將編輯的數(shù)據(jù)保存到硬盤文件中
:w
[filename]
將編輯后的數(shù)據(jù)保存到硬盤的另一個(gè)文件中
:r
[filename]
在編輯數(shù)據(jù)時(shí),讀入另一個(gè)文件中的數(shù)據(jù),即將filename文件中的內(nèi)容加到光標(biāo)所在行下一行
:wq或:x
保存并退出
:q
退出,適用于未修改的文件
:q!
強(qiáng)制退出,適用于修改文件后不保存退出
:set
nu
顯示行號(hào)
:set
nonu
取消行號(hào)
:n1,n2
w
[filename]
將n1到n2行的內(nèi)容保存到名為filename的文件中
一般模式常用操作
【h(或向左方向鍵)】 光標(biāo)左移一個(gè)字符
【j(或向下方向鍵)】 光標(biāo)下移一個(gè)字符
【k(或向上方向鍵)】 光標(biāo)上移一個(gè)字符
【l(或向右方向鍵)】 光標(biāo)右移一個(gè)字符
【[Ctrl] + f】 屏幕向下移動(dòng)一頁(yè)(相當(dāng)于Page Down鍵)
【[Ctrl] + b】 屏幕向上移動(dòng)一頁(yè)(相當(dāng)于Page Up鍵)
【[0]或[Home]】 光標(biāo)移動(dòng)到當(dāng)前行的最前面
【[$]或[End]】 光標(biāo)移動(dòng)到當(dāng)前行的末尾
【G】 光標(biāo)移動(dòng)到文件的最后一行(第一個(gè)字符處)
【nG】 n為數(shù)字(下同),移動(dòng)到當(dāng)前文件中第n行
【gg】 移動(dòng)到文件的第一行,相當(dāng)于"1G"
【n[Enter]】 光標(biāo)向下移動(dòng)n行
【延展閱讀】
(一)vi/vim是什么?
Linux世界幾乎所有的配置文件都是以純文本形式存在的,而在所有的Linux發(fā)行版系統(tǒng)上都有vi編輯器,因此利用簡(jiǎn)單的文字編輯軟件就能夠輕松地修改系統(tǒng)的各種配置了,非常方便。vi就是一種功能強(qiáng)大的文本編輯器,而vim則是高級(jí)版的vi,不但可以用不同顏色顯示文字內(nèi)容,還能進(jìn)行諸如shell腳本、C語(yǔ)言程序編輯等功能,可以作為程序編輯器。
(二)為什么要學(xué)習(xí)vi/vim?
首先所有的Linux發(fā)行版系統(tǒng)上都會(huì)默認(rèn)內(nèi)置vi編輯器,而不一定帶有其他文本編輯器,非常通用;其次,很多軟件的編輯接口都會(huì)默認(rèn)調(diào)用vi;第三,vi具有程序編輯的能力;最后,vi程序簡(jiǎn)單,編輯速度相當(dāng)快速。
(三)vim配置文件
vim的配置文件為/etc/vimrc,但一般不建議直接修改這個(gè)文件,而是在用戶根目錄下創(chuàng)建一個(gè)新的隱藏文件:
vim ~/.vimrc
然后編輯這個(gè)文件,常用的配置如下:
bash
"雙引號(hào)后面的內(nèi)容為注釋
set nu "顯示行號(hào)
set hlsearch "查找的字符串反白顯示
set backspace=2 "可隨時(shí)用退格鍵進(jìn)行刪除
set autoindent "自動(dòng)縮排
set ruler "在最下方一行顯示狀態(tài)
set showmode "在左下角顯示模式
set bg=dark "顯示不同的底色,還可以為light
syntax on "語(yǔ)法檢驗(yàn),顏色顯示
參考資料
$Linux vi/vim編輯器常用命令與用法總結(jié).鍵盤上的手藝人[引用時(shí)間2018-3-7]
高級(jí)一些的編輯器,都會(huì)包含宏功能,vim當(dāng)然不能缺少了,在vim中使用宏是非常方便的:
:qx 開始記錄宏,并將結(jié)果存入寄存器x
q 退出記錄模式
@x 播放記錄在x寄存器中的宏命令
稍微解釋一下,當(dāng)在normal模式下輸入:qx后,你對(duì)文本的所有編輯動(dòng)作將會(huì)被記錄下來(lái),再次輸入q即退出了記錄模
式,然后輸入@x對(duì)剛才記錄下來(lái)的命令進(jìn)行重復(fù),此命令后可跟數(shù)字,表示要重復(fù)多少次,比如@x20,可以重復(fù)20次。這個(gè)在文本的批處理中是非常有用的。
同時(shí)編輯多個(gè)文件
在vim眾多的插件中,有一個(gè)叫minibuffer的插件,就是下面所說(shuō)的標(biāo)簽頁(yè)功能了,可以支持同時(shí)編輯多個(gè)文件。
標(biāo)簽命令
:tabe fn 在一個(gè)新的標(biāo)簽頁(yè)中編輯文件fn
gt 切換到下一個(gè)標(biāo)簽頁(yè)
gT 切換到上一個(gè)標(biāo)簽頁(yè)
:tabr 切換到第一個(gè)標(biāo)簽頁(yè)
:tabl 切換到最后一個(gè)標(biāo)簽頁(yè)
:tabm [N] 把當(dāng)前tab移動(dòng)到第N個(gè)tab之后
對(duì),正如你所想象的那樣,跟eclipse, ue等的標(biāo)簽頁(yè)是一個(gè)意思!
窗口命令
ctrl+w s 水平分割窗口
ctrl+w w 切換窗口
ctrl+w q 退出當(dāng)前窗口(由于同時(shí)有多個(gè)文件,此命令不會(huì)影響其他窗口)
ctrl+w v 垂直分割窗口
其他
vim在保存之前不會(huì)對(duì)文件做實(shí)際的修改,只是加載到緩沖區(qū)中,對(duì)文件的編輯其實(shí)是對(duì)緩沖區(qū)的編輯,直到:w時(shí)才會(huì)存入物理文件。
:e file 把file加載到新的緩沖區(qū)中
:bn 跳轉(zhuǎn)到下一個(gè)緩沖區(qū)
:bd 刪除緩沖區(qū)(關(guān)閉文件)
:sp fn 分割窗口,并將fn加載到新的窗口中
退出編輯器
:w 將緩沖區(qū)寫入文件,即保存修改
:wq 保存修改并退出
:x 保存修改并退出
:q 退出,如果對(duì)緩沖區(qū)進(jìn)行過(guò)修改,則會(huì)提示
:q! 強(qiáng)制退出,放棄修改
查找替換
/pattern 向后搜索字符串pattern
?pattern 向前搜索字符串pattern
n 下一個(gè)匹配(如果是/搜索,則是向下的下一個(gè),?搜索則是向上的下一個(gè))
N 上一個(gè)匹配(同上)
:%s/old/new/g 搜索整個(gè)文件,將所有的old替換為new
:%s/old/new/gc 搜索整個(gè)文件,將所有的old替換為new,每次都要你確認(rèn)是否替換
復(fù)制粘貼
dd 刪除光標(biāo)所在行
dw 刪除一個(gè)字(word)
x 刪除當(dāng)前字符
X 刪除前一個(gè)字符
D 刪除到行末
yy 復(fù)制一行,此命令前可跟數(shù)字,標(biāo)識(shí)復(fù)制多行,如6yy,表示從當(dāng)前行開始復(fù)制6行
yw 復(fù)制一個(gè)字
y$ 復(fù)制到行末
p 粘貼粘貼板的內(nèi)容到當(dāng)前行的下面
P 粘貼粘貼板的內(nèi)容到當(dāng)前行的上面
]p 有縮進(jìn)的粘貼,vim會(huì)自動(dòng)調(diào)節(jié)代碼的縮進(jìn)
"a 將內(nèi)容放入/存入a寄存器,可以支持多粘貼板
附:比如常用的一個(gè)寄存器就是系統(tǒng)寄存器,名稱為+,所以從系統(tǒng)粘貼板粘貼到vim中的命令為"+p,注意此處的+不表示操作符,二十一個(gè)寄存器。
移動(dòng)光標(biāo)
在vim中移動(dòng)光標(biāo)跟其他的編輯器中有很大的區(qū)別,不過(guò)一旦學(xué)會(huì)了,就會(huì)飛速的在文本中移動(dòng)了。
h,j,k,l 上,下,左,右
ctrl-f 上翻一頁(yè)
ctrl-b 下翻一頁(yè)
% 跳到與當(dāng)前括號(hào)匹配的括號(hào)處,如當(dāng)前在{,則跳轉(zhuǎn)到與之匹配的}處
w 跳到下一個(gè)字首,按標(biāo)點(diǎn)或單詞分割
W 跳到下一個(gè)字首,長(zhǎng)跳,如end-of-line被認(rèn)為是一個(gè)字
e 跳到下一個(gè)字尾
E 跳到下一個(gè)字尾,長(zhǎng)跳
b 跳到上一個(gè)字
B 跳到上一個(gè)字,長(zhǎng)跳
0 跳至行首,不管有無(wú)縮進(jìn),就是跳到第0個(gè)字符
^ 跳至行首的第一個(gè)字符
$ 跳至行尾
gg 跳至文件的第一行
gd 跳至當(dāng)前光標(biāo)所在的變量的聲明處
[N]G 跳到第N行,如0G,就等價(jià)于gg,100G就是第100行
fx 在當(dāng)前行中找x字符,找到了就跳轉(zhuǎn)至
; 重復(fù)上一個(gè)f命令,而不用重復(fù)的輸入fx
tx 與fx類似,但是只是跳轉(zhuǎn)到x的前一個(gè)字符處
Fx 跟fx的方向相反
),( 跳轉(zhuǎn)到上/下一個(gè)語(yǔ)句
* 查找光標(biāo)所在處的單詞,向下查找
# 查找光標(biāo)所在處的單詞,向上查找
`. 跳轉(zhuǎn)至上次編輯位置
在屏幕上移動(dòng)
H 移動(dòng)光標(biāo)到當(dāng)前屏幕上最上邊的一行
M 移動(dòng)光標(biāo)到當(dāng)前屏幕上中間的一行
L 移動(dòng)光標(biāo)到當(dāng)前屏幕上最下邊的一行
書簽
ma 把當(dāng)前位置存成標(biāo)簽a
`a 跳轉(zhuǎn)到標(biāo)簽a處
編輯
r 替換一個(gè)字符
J 將下一行和當(dāng)前行連接為一行
cc 刪除當(dāng)前行并進(jìn)入編輯模式
cw 刪除當(dāng)前字,并進(jìn)入編輯模式
c$ 擦除從當(dāng)前位置至行末的內(nèi)容,并進(jìn)入編輯模式
s 刪除當(dāng)前字符并進(jìn)入編輯模式
S 刪除光標(biāo)所在行并進(jìn)入編輯模式
xp 交換當(dāng)前字符和下一個(gè)字符
u 撤銷
ctrl+r 重做
. 重復(fù)上一個(gè)編輯命令
~ 切換大小寫,當(dāng)前字符
g~iw 切換當(dāng)前字的大小寫
gUiw 將當(dāng)前字變成大寫
guiw 將當(dāng)前字變成小寫
將當(dāng)前行右移一個(gè)單位
將當(dāng)前行左移一個(gè)單位(一個(gè)tab符)
== 自動(dòng)縮進(jìn)當(dāng)前行
插入模式
i 從當(dāng)前光標(biāo)處進(jìn)入插入模式
I 進(jìn)入插入模式,并置光標(biāo)于行首
a 追加模式,置光標(biāo)于當(dāng)前光標(biāo)之后
A 追加模式,置光標(biāo)于行末
o 在當(dāng)前行之下新加一行,并進(jìn)入插入模式
O 在當(dāng)前行之上新加一行,并進(jìn)入插入模式
Esc 退出插入模式
可視模式
標(biāo)記文本
v 進(jìn)入可視模式,單字符模式
V 進(jìn)入可視模式,行模式
ctrl+v 進(jìn)入可視模式,列模式,類似于UE的列模式
o 跳轉(zhuǎn)光標(biāo)到選中塊的另一個(gè)端點(diǎn)
U 將選中塊中的內(nèi)容轉(zhuǎn)成大寫
O 跳轉(zhuǎn)光標(biāo)到塊的另一個(gè)端點(diǎn)
aw 選中一個(gè)字
ab 選中括號(hào)中的所有內(nèi)容,包括括號(hào)本身
aB 選中{}括號(hào)中的所有內(nèi)容
ib 選中括號(hào)中的內(nèi)容,不含括號(hào)
iB 選中{}中的內(nèi)容,不含{}
對(duì)標(biāo)記進(jìn)行動(dòng)作
塊右移
塊左移
y 復(fù)制塊
d 刪除塊
~ 切換塊中內(nèi)容的大小寫
vi profile
返回
:q 退出
:wq或者:x或者shift+zz 保存并退出
:q! 不保存并退出
:w 保存
:w! 強(qiáng)制保存
編輯到輸入模式:
i 在當(dāng)前光標(biāo)前面輸入
I 在當(dāng)前光標(biāo)所在行的行首,轉(zhuǎn)換為輸入模式
a 在當(dāng)前光標(biāo)后面輸入
A 在當(dāng)前光標(biāo)所在行的行尾,轉(zhuǎn)換為輸入模式
o 在當(dāng)前光標(biāo)所在行的下方,新建一行,并轉(zhuǎn)為輸入模式
O 在當(dāng)前光標(biāo)所在行的上方,新建一行,并轉(zhuǎn)為輸入模式
1、 移動(dòng)光標(biāo)
字符:方向鍵上下左右或者鍵盤kjhl(上下左右)
單詞:w移至下一個(gè)單詞的詞首;e跳至當(dāng)前或下一個(gè)單詞的詞尾;b跳至當(dāng)前或前一個(gè)單詞的詞首
行內(nèi):0絕對(duì)行首;^行首的第一個(gè)非空白字符;$絕對(duì)行尾
行間:G文章末尾;3G第3行;gg文章開頭
翻屏:ctrl f【往后翻】;Ctrl b【往前翻】
2、 刪除、替換單個(gè)字符
x刪除光標(biāo)位置字符;3x刪除光標(biāo)開始3個(gè)字符;r替換光標(biāo)位置字符
dw刪除一個(gè)單詞;4dw刪除光標(biāo)開始的4個(gè)單詞;dd刪除光標(biāo)所在行;5dd刪除光標(biāo)開始的5行
3、復(fù)制粘貼剪切
yw復(fù)制一個(gè)單詞,p在該行粘貼單詞;yy復(fù)制整行,p在該行下方粘貼整行
dd剪切整行,p再粘貼整行;dw剪切一個(gè)單詞,p再粘貼一個(gè)單詞
4、 撤銷重做
u:撤銷;ctrl+r:重做撤銷的操作;.重復(fù)上一步的操作【假設(shè)先dd,再.,會(huì)再執(zhí)行dd命令】
1、 set設(shè)置
set nu
set nonu
set readonly #設(shè)置只讀文件,不能修改,只在當(dāng)前環(huán)境有效,退出文件,再次打開,這個(gè)只讀就無(wú)效了
set noreadonly #取消只讀
2、 /查找
/after查找文檔中的after【可以找到所有的after】,n向下翻,N向上翻
:/after查找文檔中的after所在行【可以找到所有的after】,n向下翻,N向上翻
3、!執(zhí)行命令
比如:查找root目錄
:!ls /root/
4、 查找并替換
格式
【 :查找范圍s/查找的詞/要替換的詞/ 】
或者【:查找范圍s#查找的詞#要替換的詞# 】
或者【:查找范圍s%查找的詞%要替換的詞%】,
即分隔符可以是/、#、%
其中, 查找范圍 包括【.當(dāng)前光標(biāo)行】;【$末尾行】;【%全文】;【g一行內(nèi)全部替換】;【i忽略大小寫】
比如 【 :.,$s/after/before/】 表示在當(dāng)前光標(biāo)行【.】到末尾【$】這個(gè)范圍內(nèi),將after替換為before, 但是如果一行有多個(gè)after的話,只會(huì)把第一個(gè)after替換掉 。
比如 【 :%s/after/before/】 表示在全文,將after替換為before,但是如果一行有多個(gè)after的話,只會(huì)把第一個(gè)after替換掉。
比如 【:%s/after/before/g】 ,表示在全文,將after替換為before,但是 如果一行有多個(gè)after的話,會(huì)把該行所有after替換掉,因?yàn)樵诿罾锩婕恿薵 。
比如 【:%s/after/before/gi】 ,表示在全文,將after替換為before,且忽略大小寫并替換一行內(nèi)所有after。
比如 【 :%d或者dG】 ,表示刪除全文
比如 【:1,$-4d】 ,表示刪除第一行到倒數(shù)第5行的數(shù)據(jù)
比如 【:1,4y】 ,表示復(fù)制1到4行,再按p可粘貼這4行