11. vim備查の小手札

三種模式

命令模式(默認)      command mode:移動光標,剪切/粘貼文本
插入(編輯)模式         edit mode:修改文本
擴展命令模式 extended command mode:保存,退出等

命令格式

vim [OPTION]... FILE...
OPTION 解釋說明
+# 打開文件后,直接讓光標處于第#行的行首
vim + file 直接打開file,光標在最后一行
+/PATTERN 打開文件后,直接讓光標處于第一個被PATTERN匹配到的行的行首
vim –b file 二進制方式打開文件
vim –d file1 file2… 比較多個文件(可用ctrl+w在各個窗口間移動,打開的三個文件都可以修改,保存需逐個進行)
vim -m file 只讀打開文件(強制命令!也不好使)
ex file 或 vim –e 直接進入僅ex模式(不可視)

模式轉換

命令 說明
ESC 插入/擴展模式 —-> 命令模式
: 命令模式 —-> 擴展模式
CTRL+s,Ctrl+q 鎖定和解鎖

命令模式–>插入模式

命令 說明
i insert, 在光標所在處輸入(shift+s也可以)
I 在當前光標所在行的行首輸入
a append, 在光標所在處后面輸入
A 在當前光標所在行的行尾輸入
o 在當前光標所在行的下方打開一個新行
O 在當前光標所在行的上方打開一個新行
ZZ 保存退出
ZQ 不保存退出

## 擴展模式

命令 說明
q 退出
q! 強制退出,丟棄做出的修改
wq 保存退出
x 保存退出
w 寫(存)磁盤文件
r filename 讀文件內容到當前文件中
w filename 將當前文件內容寫入另一個文件
!command 在編輯文件過程中,臨時執行某命令而不需退出文件編輯
r!command 執行某命令,將其結果讀入當前編輯文件的光標處后

命令模式

光標跳轉

命令 說明
h
l
j
k
#h/l/j/k 向指定方向跳轉#個字符
w 下一個單詞的詞首
e 當前或下一個單詞的詞尾
b 當前或前一個單詞的詞首
#w/e/b 向指定方向跳轉#個單詞數
H 當前頁頁首
M 當前頁頁中間行
L 當前頁頁底
^ 跳轉至行首的第一個非空白字符;
0 跳轉至行首
$ 跳轉至行尾
#G、擴展模式:# 跳轉至由#指定行
G 最后一行
1G, gg 第一行
) 下一句
( 上一句
} 下一段
{ 上一段
Ctrl+f 向文件尾部翻一屏
Ctrl+b 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏

字符編輯

命令 說明
x 刪除光標處的字符(實際上類似于剪切);
#x 刪除光標處起始的#個字符
xp 交換光標所在處的字符及其后面字符的位置
~ 轉換大小寫
r 替換光標所在處的字符
R 切換成REPLACE模式
d 刪除命令,可結合光標跳轉字符,實現范圍刪除;(并未真正刪除,實際上類似于剪切);
d$ 刪除到行尾
d^ 刪除到非空行首
d0 刪除到行首
dw 刪除光標位至下個單詞詞首
de 刪除光標位到本詞或下個單詞詞尾
db 刪除光標位到本詞或下個單詞詞首
#COMMAND 刪除#指定的內容(如:15d0,表示向前刪除本行15個字符,若不足15個字符也不向上擴展)
dd 刪除光標所在的行
#dd 多行刪除
D 從當前光標位置一直刪除到行尾,留空行,等同于d$
y 復制yank,行為相似于d命令
y$ 復制到行尾
y0 復制到行首
y^ 復制到非空行首
ye 復制光標位到本詞或下個單詞詞尾
yw 復制光標位至下個單詞詞首
yb 復制光標位到本詞或下個單詞詞首
#COMMAND 復制#指定的內容()
yy 復制行
#yy 復制多行
Y 復制整行
p 緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面
P 緩沖區存的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面
c 修改后切換成插入模式
c$ 刪除當前光標到行尾,并切換成插入模式
c^ 刪除當前光標到非空行首,并切換成插入模式
c0 刪除當前光標到行首,并切換成插入模式
cb 刪除光標位到本詞或下個單詞詞首,并切換成插入模式
ce 刪除光標位到本詞或下個單詞詞尾,并切換成插入模式
cw 刪除光標位至下個單詞詞首,并切換成插入模式
#COMMAND 刪除#指定的內容,并切換成插入模式(如:3c0,表示向前刪除本行3個字符,若不足15個字符也不向上擴展)
cc 刪除當前行并切換至插入模式,輸入新內容
#cc 刪除多行并切換至插入模式,以輸入新內容
C 刪除當前光標到行尾,并切換成插入模式
gU 變大寫
gu 變小寫
<start position><command><end position> 對于y/d/gU/gu,可以使用該組合,如0y$,^gU$等;
100iwang[ESC] 粘貼 wang 100次
u 撤銷最近的更改
#u 撤銷之前多次更改
U 撤消光標落在這行后所有此行的更改
Ctrl+r 重做最后的“撤消”更改
. 重復前一個操作
n. 重復前一個操作n次

擴展模式

地址定界

地址定界 編輯命令(d/y/w/r)
    w file: 將范圍內的行另存至指定文件中
    r file:在指定位置插入指定文件中的所有內容
命令 說明
start_pos,end_pos
# 具體第#行,例如2表示第2行;
#,# 從左側#表示行起始,到右側#表示行結尾
#,+# 從左側#表示的行起始,加上右側#表示的行數
2,+3 表示2到5行
. 當前行
$ 最后一行
.,$-1 當前行到倒數第二行
% 全文, 相當于1,$
/pat1/,/pat2/ 從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束
#,/pat/ 從指定行開始,到第一次匹配pat的行結束
/pat/,$ 從第一次匹配pat的行開始,到最后一行結束

查找

命令 說明
/PATTERN 從當前光標所在處向文件尾部查找
?PATTERN 從當前光標所在處向文件首部查找
n 與命令同方向
N 與命令反方向
s/要查找的內容/替換為的內容/修飾符 在擴展模式下完成查找替換操作()

查找替換

s/要查找的內容/替換為的內容/修飾符
    (分隔符/可用其他字符替換)
要查找的內容:可使用模式
替換為的內容:不能使用模式,但可以使用\1, \2, ...等后向引用符號;還可以使用“&”引用前面查找時查找到的整個內容
修飾符:        
    i : 忽略大小寫        
    g : 全局替換;默認情況下,每一行只替換第一次出現        
    gc: 全局替換,每次替換前詢問

寄存器

命名/無命名寄存器(a~z表示26個命名寄存器、1個命名寄存器)

26個命名寄存器(a~z表示)和1個無命名寄存器,常存放不同的剪貼版內容,可以不同會話間共享。未指定,將使用無命名寄存器。
格式:
    [數字]["寄存器][命令]如:    3"tyy 表示復制3行到t寄存器中
      "tp 表示將t寄存器內容粘貼

數字寄存器(0~9表示)

有10個數字寄存器,用0,1,…,9表示,0存放最近復制內容,1存放最近刪除內容。
當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。
數字寄存器不能在不同會話間共享。

編輯二進制文件

vim –b binaryfile   以二進制方式打開文件
    %!xxd   :擴展命令模式下,利用xxd命令轉換為可讀的十六進制
    %!xxd –r:擴展命令模式下,利用xxd命令轉換回二進制

可視化模式

該模式允許選擇的文本塊:
                     v 面向字符
                     V 面向行
                ctrl+v 面向塊
可視化鍵可用于與移動鍵(如:w,e,b,),},箭頭等)結合使用。
突出顯示的文字可以被刪除d,復制y,變更c,過濾,搜索/替換s等

多文件模式

vim FILE1 FILE2 FILE3 ...    
    :next 下一個    
    :prev 前一個    
    :first 第一個    
    :last 最后一個    
    :wall 保存所有    
    :qall 退出所有    
    :wqall

多“窗口”模式

  • 多文件分割

vim -o|-O FILE1 FILE2 ...
    -o: 水平分割    
    -O: 垂直分割
    在窗口間切換:Ctrl+w, Arrow
  • 單文件窗口分割:

Ctrl+w,s    : split, 水平分割
Ctrl+w,v    : vertical, 垂直分割
ctrl+w,q    :取消相鄰窗口
ctrl+w,o    : 取消全部窗口

定制vim的工作特性

  • 配置文件:永久有效

    全局:/etc/vimrc
    個人:~/.vimrc
  • 擴展模式:當前vim進程有效

  • 配置項

(1) 行號
        顯示:set number, 簡寫為set nu
        禁用:set nonumber, 簡寫為set nonu
(2) 括號成對匹配
        匹配:set showmatch, 簡寫為set sm
        禁用:set nosm
(3) 自動縮進
        啟用:set ai
        禁用:set noai
(4) 高亮搜索
        啟用:set hlsearch
        禁用:set nohlsearch
(5) 語法高亮
        啟用:syntax on
        禁用:syntax off(6) 忽略字符的大小寫
        啟用:set ic
        禁用:set noic
(7) 文件格式
        啟用:fileformat=unix
        禁用:fileformat=dos
(8) 設置文本寬度
        :set textwidth=65 (vim only)
        :set wrapmargin=15(9) 查看設定
        :set       查看當前設定
        :set all   查看所有選項

幫助

  • vi/vim內置幫助

    :help option-list   進入help的不同主題
    :helpgrep word      按關鍵字查找
    :help               查看幫助
    :q                  退出幫助
  • Vimtutor 練習使用

原創文章,作者:taobaibai,如若轉載,請注明出處:http://www.www58058.com/37291

(0)
taobaibaitaobaibai
上一篇 2016-08-18 13:36
下一篇 2016-08-18 15:20

相關推薦

  • 馬哥教育網絡班20期+第七周博客作業

    1、創建一個10G分區,并格式為ext4文件系統     (1) 要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl fdisk /dev/sdbnp1110Gw[root@llww3317 ~]# mke2fs -t ext…

    Linux干貨 2016-08-02
  • 作業–權限管理

    1、當用戶wangcai對/testdir目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除? [root@liang testdir]# su wangcai [wangcai@liang testdir]$ ll -a 總用量 8 drwxr-xr-x. &nbsp…

    Linux干貨 2016-08-05
  • 文件查看及查找命令

    cat  查看一個文件   -E: 顯示行結束符$   -n: 對顯示出的每一行進行編號   -A:顯示所有控制符   -b:非空行編號   -s:壓縮連續的空行成一行   -T:顯示制表符 常用:cat -An /et…

    Linux干貨 2017-04-08
  • 重定向和管道

    重定向和管道 今天一起來學習一下重定向的一些相關命令及用法: 我們都知道程序=指令+數據 ,那么我們的數據的輸入(Input)和輸出(Output)是如何實現的呢?!跟小編君一起來看一下吧: 本博文小編君分成了四部分:1.重定向的講解 2.管道符的講解 3.涉及到的一些其他命令 4.練習題 一:重定向 重定向的本質是改變文件的默認位置,即換個地方存儲數據。 …

    2017-08-04
  • 高考作業

    1、簡述TCP三次握手四次揮手過程及各過程中客戶端和服務器端的狀態。 TCP三路握手,作用為完成三次握手,主機A與主機B開始傳送數據。 第一次握手:客戶端A(狀態為SYN_SEND)發送位碼為syn=1,隨機產生seq number=1234567的數據包到服務器,服務器B(狀態為LISTEN)由SYN=1知道,客戶端A要求建立聯機; 第二次握手:服務器B(…

    Linux干貨 2016-06-22
  • 用shell腳本實現每天定時收集全網日志到一臺服務器

    需求 現在公司有這樣一個需求,需要收集每天全網運行業務的設備上的某個特定目錄底下的日志到一臺服務器(這臺服務器我們簡稱logserver),這并在這臺logserver上生成以日期為名字的目錄 解決思路: 在logserver的crontab里設置兩個腳本,在當日晚上23:30執行腳本1收集當日即將被刪除的全網腳本;在并在早上8:30執行腳本2,收集昨日全網…

    Linux干貨 2015-07-27
欧美性久久久久