咱們經常使用的文本編輯軟件有MS WORD,國人的WPS也不遜色,最近也推出了linux版的WPS,而與之相對應的是處理ASCII編碼的文本處理工具,最經常使用的當屬vi /vim了,今天咱們介紹vim(Visual Interface inproved,可視界面加強版)。linux
爲了練手,咱們將一些複雜的文本文件保存到用戶家目錄下正則表達式
例如我把cp /etc/httpd/conf/httpd.conf ~cyb/ 咱們把httpd的配置文件複製到家目錄下練手。vim
vim [options][/path/to/somefile]bash
例如咱們要在當下路徑建立一個a.txt的文本,咱們使用以下命令app
# vim a.txtide
Vim 有三種模式:1,編輯模式(命令行模式)2,輸入模式 3,末行模式工具
首先,咱們說明,3者之間是如何轉換的編碼
編輯模式---------à輸入模式spa
1, iinstert:在當前光標所在處前面插入命令行
2, aappend:z在當前光標所在行後面插入
3, o,在當前光標所在行的的下方新建一個空白行,而且轉爲輸入模式
4, I 光標跳轉至光標所在行首並改成輸入模式
5,A 光標跳轉至光標所在的行尾處並改成輸入模式
6, O光標跳轉至光標所在行的上一行,並改成輸入模式
輸入模式轉爲編輯模式
按ESC鍵便可
編輯模式轉爲末行模式
鍵入:
末行模式轉爲編輯模式:
按兩次ESC鍵
光標跳轉
字符間的跳轉:
K(上)
H(左) L(右)
J(下)
還有 #h 能夠調準#個字符,先按住#(例如3)向左跳轉3個字符
This is the main Apacheserver configuration file.It containsthe
光標在’s’處,而後按住3,再按h,光標到’T’處
咱們來看但此間跳轉,
咱們以此段話爲例
咱們來看句間跳轉
):下一句,
(:前一句按(
默認以 . 做爲分隔符
段落間跳轉
{ 上一段
} 下一段
行間跳轉
gg 或者 1G 跳轉至行首
G,跳轉至行尾
#G,跳轉至第#行的行首
行內跳轉
^ :行首的第一個非空白字符
$ :絕對行尾
0 :絕對行首
咱們來看怎麼關閉文件
在末行模式下:
:q 退出
:w 保存
:!強制
:wq 保存並退出
:q!強制退出
:x 等價於wq 保存並退出
在編輯模式下
ZZ 保存並退出
qall 退出所有(由於有時候可能會一次打開多個文件去編寫)
打開文件
vim –[options][file]
-o 打開多個文件時,上下屏顯示
-O 打開多個文件時,左右屏幕顯示
左屏幕到右屏幕 ctrl+w
若是不加
咱們同時打開多個文件時,須要文本間跳轉,在末行模式下,輸入如下命令
:next 下一個
:last最後一個
:first 頭一個
:prev 前一個
編輯命令
x 刪除單個字符
#x:刪除#個字符
dw 刪除光標所在處的單詞
db: 刪除光標所在處的前一個單詞
de: 刪除光標所在處及下個單詞
d^: 從行首刪除到當前光標所在處
dd 刪除所在行
d$ 當前位置刪除到光標所在行尾
在末行模式下能夠地址定界,使用d命令能夠更加靈活
起始地址,結束地址
$:最後一行
.當前光標所在行
%,全文
1,7d ,第一行到第七行所有刪除
%d 刪除全文
1,$d 從第一行到最後一行所有刪除
1,+6d 從第一行,到1+6行所有刪除
1, $-2d 從第一行到當前光標所在行數-2所在的行刪除
.,+3 d從當前行到之後+3行全部的行所有刪除
撤銷此前的操做
U, vim會保存最近50次的操做,U命令可逐一撤銷此前編輯的操做
咱們還能夠撤銷此前的撤銷 ctrl+r
--à(此前一步操做)----à(如今操做)
(撤銷u)<--------
-------à(撤銷撤銷ctrl+r)
複製
yy 複製當前行
#yy 複製當前行所在的向下3行,
y$ 複製光標所在處至行尾
y^ 複製當前行到行首(光標自動跳轉到行首)
yw ,複製當前單詞
粘貼
p在光標所在處的後方粘貼
P在光標所在出的前方粘貼
vim的options
-# 默認打開後光標所在處爲#行的行首
咱們介紹翻屏
Ctrl+f 向文件尾部翻一屏
Ctrl+d 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
Vim支持文本搜索
/keyword:從當前光標所在處向文件尾部查找
?keyword:從當前光標所在處向文件首部查找
n:下一個,跟命令查找方向相同
N:前一個,跟命令查找方向相反;
固然能夠支持模式搜索,支持正則表達式
窗口屬性的定義
Set number,set nu顯示行號
查找和替換
:地址定界s/查找模式/替換成的內容/gi
: 地址定界s@查找模式@替換成的內容@gi
一、刪除/etc/grub.conf文件中行首的空
%s@^[[:space:]]\{1,\}@@
二、替換/etc/inittab文件中"id:3:initdefault:"一行中的數字爲5;
%s@id:3:@id:5:@g
三、刪除某文件中開頭的#號及後面的空白字符,但要求#號後面必須有空白字符;
%s@^#[[:space:]]\{1,\}@@
四、爲指定範圍內的行的行首添加#;1,10s@^@#@g