vim文本編輯器及文本處理常用命令

Vim是從 vi發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。

160203p7z2cnamxmg2mawx

一、文本編輯器的種類主要有:

行編輯器:sed

全屏編輯器:nano,vi

vim – Vi Improved(vi文本編輯器的升級版)

 

二、Vim文本編輯器相關命令:

Vim是從?vi發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。

1.vim打開文件:

vim[option]…FILE…

+#??? 打開文件后,讓光標處于第#行行首

-o???? 后跟多個文件可水平顯示多個窗口

-O??? 后跟多個文件可垂直顯示多個窗口

-b???? 以二進制方式打開文件

-d file1 file2… 比較多個文件

注:當一個文件不存在時,用vim打開編輯存盤后會自動創建它

 

2.vim的三種主要模式:

命令(normal)模式:默認模式,可移動光標,剪切/粘貼文本。左下角顯示文本路徑,行數,字符數,右下角顯示光標位置

插入(insert)模式:也叫編輯模式,修改文本。左下角顯示 –INSERT–

擴展命令(extended command)模式:保存、退出等。左下角顯示 “:”

 

3.vim模式切換:

命令模式—>插入模式

i:在光標處輸入

I:在光標所在行首輸入

a:在光標所在處后輸入

A:在光標所在行行尾輸入

o:在光標所在行的下方打開一個新行

O:在光標所在行的上方打開一個新行

 

插入模式—>命令模式

ESC

 

命令模式—>擴展命令模式

 

擴展命令模式—>命令模式

ESC,Enter

 

 

4.vim的其他一些模式:

替換(replace)模式:??????? 命令模式下R切換,可隨意替換字符;右下角顯示–REPALCE–

可視化(visual)模式:v??? 切換面向字符的可視化模式;右下角顯示–VISUAL–

V? 切換面向行的可視化模式

ctrl+v?? 面試塊的可視化模式

 

 

5.vim關閉文件

擴展模式

按”:”從命令模式進入Ex模式

wq?? 存盤退出

q?????? 文本未修改,不存盤退出

q!? 文本已被修改,想不存盤退出

w file ???? 文件另存為file

r file 讀取file文件內容到當前文件

!command??? 直接在擴展模式下執行命令

r!command? 讀入命令的輸入到當前文件光標處

 

命令模式下也可關閉文件(不推薦使用)

ZZ???? 保存退出

ZQ??? 不保存退出

 

6.命令模式常用命令:

單詞間跳轉:

w????? 下一個單詞詞首

e?????? 下一個單詞詞尾

b?????? 當前或前一個單詞的詞首

當前頁跳轉:

H????? 頁首

M???? 頁中間

L?????? 頁底

行首行尾跳轉:

^?????? 跳轉至行首第一個非空白字符

0?????? 跳轉至行首

$?????? 跳轉至行尾

行間移動:

#G??? 調至第#行;擴展模式下可執行 :G

G????? 最后一行

1G,gg??? 第一行

 

命令模式下字符操作

x:刪除光標所在處字符

#x:刪除從光標所在處開始#個字符

xp:交換光標所在處字符和它后面字符的位置(原理是剪切粘貼)

~:波浪符轉換大小寫

J:刪除當前行后的換行符

r:替換光標所在處字符

 

d:刪除命令

d$??? 當前光標刪除至行尾

d^??? 當前光標刪除到非空行首

d0??? 當前光標刪除到行首

dw?? 刪除單詞

dd??? 刪除光標所在的行

#dd? 多行刪除,一下刪除#行

 

y:復制命令(用法類似d刪除)

y$???? 復制當前光標到行尾

y^???? 復當前光標位置到非空行首

yw??? 復制單詞

yy???? 復制光標所在的行

 

p:粘貼

p?????? 粘貼至光標所在行下一行

P?????? 粘貼至光標所在行上一行

 

u:撤銷更改

#u??? 撤銷之前多次修改

U????? 撤銷光標落在這行后所有此行的修改

Ctrl+r?????? 返回上次撤銷

 

7.擴展命令模式常用命令:

格式:地址定界+編輯命令

地址定界

:#? 跳到第#行

:#,#??? 第左側第#行,到右側第#行;2,5表示第2到第5行

:#,+#? 從左側第#行,加上右側#的行;2,+3表示第2到5行

:.?? 當前行

$?????? 最后一行

%????? 全文,相當于1,$

:/pat1/,/pat2/?????????????? 從pat1匹配到的行開始,到第一次被pat2匹配到的行

:/pat1/,#?? 可混用

 

使用方式:后跟一個編輯命令

d?????? 刪除

y?????? 復制

w file??????? 將范圍內行另存至指定文件中

r file 在指定位置插入匹配內容

 

查找字符

/PATTERN:從光標所在處向文件尾部查找

?PATTERN:從光標所在處向文件首部查找

n:與命令同方向

N:與命令反方向

 

s:查找并替換

格式:s/要查找的內容/替換為的內容/修飾符

修飾符:

i:忽略大小寫

g:全局替換每一行的第一次出現的匹配

gc:全局替換所有匹配,每次替換前詢問

查找替換的分隔符/可用其他分隔符代替:如#,@

 

命令模式

u:撤銷更改

ctrl+r??????? 恢復上一次撤銷

.??????? 重復執行上一次操作

  1. 重復執行上一次操作n次

 

8.vim的剪貼板

有26個命名剪貼板和一個無命名剪貼板,存放不同的剪切內容,可以不同會話間分享

例:”myy 表示復制光標所在行到m剪貼板

“mp 表示將m剪貼板內容粘貼

3″tyy 表示復制3行內容到t剪貼板

“tp?? 表示將t剪貼板內容粘貼

 

9.vim多文件模式

vim FILE1 FILE2 FILE3

:next???? 下一個文件

:prev???? 上一個文件

:first????? 第一個文件

:last?????? 最后一個文件

:wall????? 保存所有文件

:qall?????? 退出所有

:wqall?? 保存退出

 

單文件的窗口分隔:方便對照文件內容

ctrl+w放開后按s?????????? 水平分割

ctrl+w放開后按v????????? 垂直分割

ctrl+w放開后按q????????? 取消相鄰窗口

ctrl+w放開后按w???????? ?????? 取消全部窗口;與:wqall相同

QQ圖片20180408193404

 

三、定制vim的工作特性

擴展命令模式下執行:

set number????? 添加行號

set nonumber 取消行號

此操作僅臨時有效,退出重進vim后,操作失效,要想永久保存vim的工作特性,需寫入配置文件中

 

配置文件:使vim工作特性永久有效

全局:/etc/vimrc

個人:~/.vimrc

 

其他一些常用vim特性命令:

忽略大小寫

set ic??????? 忽略大小寫

set noic 取消忽略大小寫

自動縮進

set ai??????? 自動和上一行對齊

set noai?? 取消對齊

文件格式轉換

set fileformat=unix???????? Windows文件轉換Linux文件

set fileformat=dos Linux文件轉換Windows文件

設置光標所在行下劃線

set cursorline?????????? 啟用

set no cursorline???? 禁用

復制時保留格式:

set paste????????? 啟用

set nopaste????????????? 禁用

 

查看全部已配置的vim工作特性

:set??????? 顯示全部已配置set

:help???? 查看幫助

 

 

四、文本處理常用命令

cut??????????? 按列抽取文本

-d???? 指定分隔符

-f????? 指定第幾列

–output-delimiter=’ ‘????? 指定單引號中符號作為分隔符

diff?????????? 比較兩個文件直接的差別,后跟file1,file2

-u

head

-n???? 顯示頭n行

-c???? 顯示頭n個字節

tail

-n???? 顯示最后n行

-c???? 顯示最后n個字節

-f????? 跟蹤文本的變化(追加內容),可寫為tailf

-F???? 跟蹤文件名

sort????????? 排序

-t????? 指定分隔符(類似cut -d)

-k???? 指定第幾列(類似cut -f)

-n???? 以數字排序

-r????? 倒序排列

-f????? 忽略大小寫

-u???? 刪除重復的行壓縮到一行

-R???? 隨機排序

paste??????????????? 合并兩個文件同行號的列到一行

-s????? 合并兩個文件按一行顯示

-d???? 指定分隔符,類似cut -d的用法

grep???????? 基于行過濾的文本過濾工具(grep文本處理三劍客之一)

-v???? 顯示不被匹配到的行

-i????? 忽略字符大小寫

-n???? 添加匹配到的行的行號

-c???? 統計被匹配到的行數

-o???? 僅顯示匹配到的字符

-q???? 靜默模式

-A#?? 包含此匹配行和后#行

-B#?? 包含此匹配行和前#行

-C#?? 包含此匹配行和前后#行

-e???? 實現多個匹配字符的或者(or)關系 -e a -e b:a或b

-w??? 匹配整個單詞,數字、字母、下劃線都算單詞一部分

-r????? 遞歸目錄

-E???? 使用ERE,擴展的正則表達式

-F???? 相當于fgrep

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95476

(3)
wangxczwangxcz
上一篇 2018-04-08
下一篇 2018-04-08

相關推薦

欧美性久久久久