天天看點

linux強制退出編輯界面,Linux之vim編輯器使用與詳解

vim編輯器使用與詳解

vim :vi improved

vi的模式:

編輯模式:鍵盤操作通常被解析為編輯指令:

輸入模式:

末行模式:vim的内置的指令行接口,執行vim内置指令

編輯模式-->輸入模式

i:目前光标處輸入内容

I:在目前光标所在行的行首

a:在目前光标所在處的後面

A:在目前光标所在行的行尾輸入

o:在光标所在行的下方新增一行空白行

O:在光标所在行的上方新增一行空白行

輸入模式- -> 編輯模式

ESC

編輯模式- ->末行模式

末行模式- ->編輯模式

ESC,ESC

vi指令的使用格式

vim [options] /path/to/file

–d file1 file2… 比較多個檔案

–b file 二進制方式打開檔案

+/PATTERN 讓光标處于第一個被PATTERN比對到的行的行首

-m file 隻讀打開檔案

vim -e file 或 ex file 直接進入ex模式

退出:

:q!強制退出,不儲存并退出

:wq 儲存修改并退出

:x,儲存并退出

w 寫(存)磁盤檔案

wq 寫入并退出

x 寫入并退出

q 退出

q! 不存盤退出,即使更改都将丢失

r filename 讀檔案内容到目前檔案中

w filename 将目前檔案内容寫入另一個檔案

!command 執行指令

r!command 讀入指令的輸出

編輯模式:ZZ,儲存退出,ZQ不儲存退出

打開:

多檔案跳轉

:next 下一個

:prev 上一個

:first 第一個

:last 最後一個

:qall 退出所有的檔案

:wqall:修改并退出多個檔案

分隔視窗打開多個檔案

-o:水準分隔

ctrl+w,左右箭頭

-O:垂直分隔

ctrl+W,上下箭頭

+num:打開檔案後在第num号行首

+:打開檔案後在最後一行

光标移動:

單字元移動:

h:左

l:右

j:下

k:上

可以和數字組合

單詞間移動:

w:調至下一個單詞的詞首

b:目前或前一個的詞首

e:目前或下一個詞的詞尾

行内移動:

0:絕對行首

^:第一個非空白字元

$:絕對行尾

句子間移動:

):上一句

(: 下一句

段落間移動:

}:上一段

{:下一段

行間移動:

#G:第幾行

G:最後一行

目前頁跳轉:

H:頁首 M:頁中間行 L:頁底

zt:将光标所在目前行移到螢幕頂端

zz:将光标所在目前行移到螢幕中間

zb:将光标所在目前行移到螢幕底端

編輯操作:

x:删除光标所在處的字元

#x:删除光标所在處向後的#個字元

替換指令(r, replace)

r 替換光标所在處的字元

R 切換成REPLACE模式

d:删除指令

結果光标跳轉指令使用

%:全部

dd:删除一行

#dd:删除所在行後的#行

字元編輯:

x 删除光标處的字元

#x 删除光标處起始的#個字元

xp 交換光标所在處的字元及其後面字元的位置

~ 轉換大小寫

J 删除目前行後的換行符

di" 光标在冒号之間,則删除冒号之間的内容

yi( 光标在()之間,則複制()之間的内容

vi[ 光标在[]之間,則選中[]之間的内容

dtx 删除字元直到遇見光标之後的第一個 x 字元

ytx 複制字元直到遇見光标之後的第一個 x 字元

末行模式:範圍定界

start,end:可以使用絕對定界,也可以使用相對定界

.:表示目前行

$:最後一行

$-2:倒數第3行

/pat1/,/pat2/:起始處為光标所在行

c:修改後切換成插入模式

跟d一樣操作

y:yank,複制

跟d一樣操作

p:paste 粘貼

複制或删除的是整行

p:目前行的下一行

P:目前行的上一行

複制或删除的為非整行

p:粘貼在光标所在字元的後面

P: 粘貼在光标所在字元的前面

撤銷編輯

u:undo

#u:最近50次操作

撤銷此前的撤銷操作

ctrl+r:

重複執行此前的指令:

.

翻屏:

ctrl+f:向檔案尾部翻一屏

ctrl+b:向檔案首部翻一屏

ctrl+d:向檔案尾部翻半屏

ctrl+u:向檔案首部翻半屏

Enter:下一行

k :上一行

查找:

/keyword

?keyword

n:

N:

支援正規表達式

:set nohlsearch 關閉高亮顯示,對目前shell有效

vim的可視化模式

編輯模式:

v:按照光标走過的區域選擇

V:選擇矩形塊

vim可視化模式:

v: 按光标走過的區域選擇

V: 選擇矩形塊

打開多個檔案,分視窗:

vim -o

vim -O

Ctrl+w, 上下箭頭

分割目前視窗:

Ctrl+w, s 水準分割

Ctrl+w, v 垂直分割

Ctrl+w, q 關閉目前光标視窗

Ctrl+w, o 關閉所有視窗

視窗屬性的定義:

:set nu

:set nonu

:set ai 自動縮進

:set noai

:set ic

:set noic

顯示對應的括号

:set sm (show match)

:set nosm

文法高亮:

:syntax on

:syntax off

搜尋高亮:

:set hlsearch

:set nohlsearch

vim的配置檔案:

全局:/etc/vimrc

個人:~/.vimrc

查找替換:

:位址定界s/查找模式/替換為的内容/gi

g:全局替換

i:不區分大小寫

:位址定界[email protected]查找模式@替換為的内容@gi

&:用于在替換為的内容部分中引用前面比對到的所有内容

練習:

1.複制/etc/grup.conf至/tmp目錄,删除/tmp/grub.conf檔案中行首的空白符

:%s\^[[:space:]]\{1,\}\\g

2.複制/etc/rc.d/rc.sysinit至/tmp目錄。将/tmp/rc.sysinit檔案中的以至少一個空白字元開頭的行,行首加#号

:%[email protected]^[[:space:]]\{1,\}.*@#&@g

3.删除/tmp/rc.sysinit檔案中以#開頭且後面跟了至少一個空白字元的行的行首的#和空白符

:1,%[email protected]^#[[:space:]]\{1,\}@@g

4.為/tmp/grub。conf檔案中的前三行的行首加#号

:1,[email protected]^@#@g

5.将/etc/yum.repos.d/CentOS-Media.repo中enable=0一行最後的0改為1;

:%@\(enabled=\)[0-9]@\[email protected]