vim編輯器詳解(week1_day3)--技術流ken


 

vi編輯器

 

作用:編輯文本文件中的內容的工具

 

命令歷史

 

末行模式中,以:和/開頭的命令都有歷史紀錄,可以首先鍵入:或/然后按上下箭頭來選擇某個歷史命令。

 

啟動vim

 

在命令行窗口中輸入以下命令即可

vim 直接啟動vim

vim filename 打開vim並創建名為filename的文

 

vim的模式

 

 

 

vi的工作模式

 

命令模式:僅僅可以查看內容,但是不能進行修改(默認)

輸入模式:可以對文件中的內容進行修改

末行模式:此模式可以執行一些命令

 

 vi打開文件

 

vi打開文件

vi 文件名

 

注意:

1. vi打開文件,如果發現文件是空的,那么說明你所打開的文件是不存在的

2. 也就是vi既可以打開現有的文件,也可以創建新文件,只是所創建的新文件內容是空白的

3. vi有增強版本,稱之為vim(建議用vim)

4. vi是用來編輯文本文件的,不能用來打開目錄

 

情況1:從命令模式到輸入模式

 

i:在光標所在位置的前插入內容

I:將光標移到到行首,然后進入輸入模式

a:將光標向后移到一位,然后進行插入模式(輸入的內容會在光標原始位置的后一位。

A:在當前行尾插入

o:在光標所在行的下面新開一行,然后進入輸入模式

O:在光標所在行的開面新開一行,然后進入輸入模式

 

命令模式下的常用操作

 

第一類操作:復制、移動刪除文件內容

yy:復制光標所在的行

nyy:復制光標所在的行開始向下的N行

dd:剪切光標所在的行

ndd:剪切光標所在的行開始向下的N行

p(小):粘貼到光標所在行的下面

P(大):粘貼到光標所在行的上面

 

D:刪除光標所在位置到行尾的內容

dG:刪除光標所在的行到末尾全部的行

 

第二類操作:撤銷和重復執行的相關操作

u:撤銷上次所指向的操作(相當於windows中ctrl+z)

nu:撤銷n次操作(n的值最大是50)

ctrl+r:撤銷剛剛所撤銷的那個操作(相當於windows中ctrl+y)

 

.:重復執行上一次所做的操作

 

 

第三類操作:跳轉相關的操作

nG:跳轉到第n行

G:直接跳轉到最后一行

 

0:跳轉到行首(會認為空格也是內容,此時會跳轉到空格的最前面)

^:跳轉到行首(不認為空格是內容,此時會跳轉到第一個非空字符)

$:跳轉到行尾

 

ctrl+f:向下翻一屏

ctrl+b:向上翻一屏

 

第四類操作:替換相關操作

r:替換一個字符(替換完成之后,自動返回到編輯模式)

R:進入替換模式(要想退出替換模式,按esc)

 

第五類操作:查找

/string:在文件中搜索指定的字符串

n:正向查找

N:反向查找

 

情況2:從輸入模式到命令模式

 

esc

 

 

情況3:從編輯模式到末行模式

 

進入末行模式的方式:在編輯模式下按shift+:

 

末行模式下的常用操作

 

第一類命令:行號

set nu:顯示行號

set nonu:關閉行號

 

第二類命令:跳轉

num:直接跳轉到第num行

$:直接跳轉到最后一行

 

第三類命令:取消匹配到的內容的高亮

nohl

 

第四類命令:替換

start,end s/原始內容/替換內容/g

(分隔符不一定是/,只要是三個相同的符號即可)

 

 

注意:

如果不用g,那么僅僅會替換每行的第一個找到的對象

如果使用g,那么會將范圍內所有找到的對象全部做替換

 

例子:將54到56之間的echo替換為bajie

:54,56 s/echo/bajie/g

 

例子:將文件中全部的echo替換為bajie

:1,$ s/echo/bajie/g

:% s/echo/bajie/g

 

例子:將文件的50-100行行首添加一個#

:50,100 s/^/#/g

 

例子:1-5行首添加空格

:1,5 s/^/ /g

 

例子:將全部行首的空格刪除

:1,$ s/^ //g

 

例子:將全部行首的#刪除

:1,$ s/^#//g

 

例子:將1-5行中的a刪除

:1,5 s/a//g

 

例子:在1-5行的末尾添加一個#

:1,5 s/$/#/g

 

例子:將文件中全部的/替換為+

:% s@/@+@g

 

補充1:

^:表示行首

$:表示行位

 

 

第五類命令:保存和退出

w:執行保存操作(保存到原始文件中)

w /path/to/file:實現文件另存為

q:退出

!:強制執行操作

 

第六類命令:高級操作

!命令:在vi中直接執行命令

r /path/to/file:將file中的內容導入到當前文件中

set tabstop=4:將tab縮進的字符數設置為4個

set ai:設置自動縮進

set noai:取消自動縮進

 

第七類命令:復制、移動、刪除多行的操作

start,end d:刪除多行

start,end m dest:將多行移動到指定行的下面

start,end co dest:將多個復制到指定行的下面

 

例子:將59到198之間的內容復制到233行的下面

59,198 co 233

 

 

分屏操作

 

vim -o file1 file2:實現水平分屏

vim -O file1 file2: 實現垂直分屏

ctrl+w:切換到另一個分屏

 

 

打開文件的小技巧

vim +num file:打開文件的時候,自動跳轉到第num行(加號不可省略)

vim + file:打開文件的時候,自動跳轉到最后一行

 

 

 

vi的配置文件

 

/etc/vimrc:全局配置文件,在這個文件中做的配置,會對所有用戶生效

~/.vimrc:(默認不存在,需要自己手動創建)用戶配置文件,僅僅對當前用戶生效

 

1. 編輯vi的配置文件,實現可以自動顯示行號、縮進4個字符、自動對齊

# vi ~/.vimrc

:set nu

:set ai

:set tabstop=4

 

vi崩潰緩存機制

 

用vim編輯一個文件的是,如果文件沒有正常的關閉(wq、q、q!),那么就會生成一個崩潰緩存文件

 

 

崩潰緩存文件的和作用

1. 緩存文件是隱藏文件

2. 緩存文件基本格式是 .file.swp

3. 緩存文件的作用是用於在系統意外關機的情況下,恢復文件中的內容(修改了文件內容,意外關掉終端或者系統)

4. 緩存文件的使用方式

第一步:# vim -r .file.swp

第二步:保存退出

第三步:刪除緩存文件

 

 

注意:

1. 如果文件發生了修改,那么無法直接退出

2. 如果要退出一個修改了的文件,有三種方式

方式1:先執行保存(w),然后執行退出(q)

方式2:直接保存並退出(wq)

方式3:不保存,並強制執行退出操作(q!)

 

 

練習

 

先執行如下命令

cd /tmp

cp /etc/rc.d/rc.local ./

 

然后用vim打開這個文件

然后在這個文件第三行寫上自己的名字

然后返回到命令模式

 

 

 

先執行命令

cd /tmp

cp /etc/init.d/functions ./

 

1.然后用vim打開文件

2.然后將第一行移動到第五行

3.將第8行以后的全面行都刪除

4.將第一行到底7行的內容復制一次,粘貼到第7行下面

5.然后還原第七行中的內容

6.保存退出

 

 

 

先執行命令

cd /tmp

cp /etc/init.d/functions ./

 

1.然后用vim打開文件

2.跳轉到第443行

3.跳轉到最后一行

4.向上翻1屏

5.將664行中settings中的i替換為大寫

6.跳轉到第2行

7.將第3行以后的全部內容都刪除

6.保存退出

 

 

先執行命令

cd /tmp

cp /etc/init.d/functions ./

 

1. 然后用vim打開文件,並顯示行號

2. 在文件每行的末尾添加上 -自己姓名

3. 將文件的最后10行的行首添上#

4. 將以#開頭的行的行首添加 newline

5. 取消行號、取消文件內容的高亮

6. 保存文件

7. 不保存強制退出

#######################

 

2. 用vim在tmp創建一個文件file,寫入如下內容

# my info

my name is liuqi

your name is wukong#

we are going to xi tian#

my email is 161@qq.com

password is in /etc/passwd

over.

3. 將第2行到第6行的內容復制到第7行的下面,復制5次

4. 將在文件中查找單詞 my

5. 執行一次保存操作

5. 將第7行到末行的首部添加一個#

5. 將文件中的/替換為=

6. 將 # my info 移動到 .over 的下面

7. 跳轉到末行,再跳轉到首行

8. 保存並退出

 

######################################

補充:

1. 創建空白文件的方式有兩種touch、vi\vim

2. linux中,文件的后綴對於文件的屬性沒有任何影響,文件的屬性只和創建文件的時候所執行的命令有關

3. linux中無論是命令還是文件名,都嚴格區分大小寫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM