vim 操作

VIM是什么,為什么要用

vim是什么

vim是一個文本編輯器,跟windows上notepad是一類編輯文本的工具

為什么要用

在Linux命令行界面下有很多文本編輯器,如Emacs、nano、vi等,vim就是一個加強了的vi編輯器,提供了語法作色、可視化操作、兼容vi等特性。有些類UNIX上不一定就裝有vim ,有時vim命令打開的也有可能是vi編輯器,只是設置了別名

  • 在很多類unix 的操作系統中系統編輯配置文件或文本會自動調用vi編輯器
  • vim 提供了語法高亮,語法作色能方便文本編輯、腳本編輯
  • 可以做到不用鼠標進行文本編輯,如多行復制,多行刪除(b格較高)
  • ……

vim的三種模式

  • 編輯模式
  • 輸入模式
  • 末行模式
編輯模式

通常鍵入鍵盤值被理解成一個操作; 如: dd(刪除行)、y(復制整行)

輸入模式

通常鍵盤的鍵入直接理解成文本

末行模式

通常打頭開始等待用戶鍵入操作

模式之間相互切換

輸入模式下不能直接進入末行模式

  • 編輯 --> 輸入

i:在當前光標所在字符前面,轉為輸入模式
a:在當前光標所在字符后面,轉為輸入模式
o:在當前光標所在行下新建一行,轉為輸入模式
I:在當前光標所行的行首,轉為輸入模式
A:在當前光標所行的行尾,轉為輸入模式
O:在當前光標所在行上新建一行,轉為輸入模式

  • 輸入 --> 編輯

ESC

  • 編輯 --> 末行

  • 末行 --> 編輯

ESC鍵(一次不管用多按一次)

打開文件

vim /PATH/TO/FILE
vim +# /PATH/TO/FILE
  打開文件處在第#行(#表示數字)
vim + /PATH/TO/FILE
  打開文件滯留在最后一行
vim +/PATTERN /PATH/TO/FILE
  打開文件,停留在第一次被PATTERN匹配之后

打開文件后默認處于編輯模式

關閉文件

  1. 末行模式下關閉文件
  • w:保存文件
  • q:退出
  • q!:強行退出
  • wq:保存并退出
  • w!:強行保存
  • x:保存退出
  1. 編輯模式下關閉文件
  • ZZ:保存退出

移動光標

編輯模式下

  1. 逐字符移動
  • h:左
  • l:右
  • j:下
  • k:上

#h:表示向左移動多個字符(#為數字)

  1. 按單詞為單位移動
  • w:移至下一個單詞的詞首
  • e:跳至當前或下一個單詞的詞尾
  • b:跳至當前或前一個單詞的詞首

#w:移動#個單詞(#為數字)

  1. 行內跳轉
  • 0:絕對行首
  • ^:行首第一個非空白字符
  • $:絕對行尾
  1. 行間跳轉
  • #G:跳至第#行(#表示數字)
  • G:最后一行

在末行模式下,可直接給出行號

翻屏

[ CTRL ] + [ f ]:向下翻一屏
[ CTRL ] + [ b ]:向上翻一屏
[ CTRL ] + [ d ]:向下翻半屏
[ CTRL ] + [ u ]:向上翻半屏  

刪除字符或行

  • x:刪除光標所在處的單個字符
  • #x: 刪除光標所在處向后#單個字符(#為數字)
  • d:刪除命令(通常跟跳轉命令組合使用)
    • 如: #dw、#de、#db。表示光標所在位置往后或往前刪除幾個單詞
    • dd:刪除當前光標所在行
    • #dd:刪除包括當前光標所在行內的#行(#表示數字)
    • 末行模式下:startLine(開始行號),endLine(結束行號)d
      • .:表示當前行
      • $:末行
      • +#:向下#
        如:0,$d 表示刪除全篇內容,0表示首行,$表示末行,d表示刪除

復制 & 黏貼 & 修改 & 替換 & 撤銷

粘貼命令

  • p:如果刪除或復制的為整行內容,則粘貼至光標所在行的上方;如果刪除或復制的為非整行內容,則粘貼至光標所在字符的前面
  • P:如果刪除或復制的為整行內容,則粘貼至光標所在行的下方;如果刪除或復制的為非整行內容,則粘貼至光標所在字符的后面

復制命令

  • 用法跟d刪除命令一樣

修改命令

  • 用法跟d刪除命令一樣

替換命令

  • r:單個字符替換
  • R:進入替換模式

撤銷編輯操作

  • u:撤銷前一次的編輯操作
    連續u命令可撤銷此前n次操作
  • #u:撤銷#次操作(#表示數字)

重復前一次編輯操作 . 符號
可視化模式
v:按字符選取
V:按矩形行選取

查找并替換

查找

  • /PATTERN?PATTERN
    PATTERN表示模式或者是正則
    n:(/PATTERN 下一個匹配結果; ?PATTERN 上一個匹配結果)
    N:(/PATTERN上一個匹配結果; ?PATTERN 下一個匹配結果)

查找并替換
在末行模式下使用s命令

  StartLine,EndLines@PATTERN@STRING@修飾符
如:0,$s@^root$@ROOT@g
從第0行到最后一行將小寫的root替換成大寫的ROOT
修飾符: g 全局; i 忽略大小寫
%: 表示全文
&:引用模式匹配到的串

窗口文件操作

打開多個文件
vim FILE1 FIEL2 ...
如果需要進行文件切換在末行模式下執行

next :下一個文件
prev :上一個文件
last :最后一個文件
first:第一個文件

末行模式執行qa退出此次打開所有文件

分屏顯示內容

[ CTRL ] + w,s:水平拆分
[ CTRL ] + w,v:垂直拆分

在窗口間切換光標
    [ CTRL ] + w,方向光標
    
qa:關閉所有

分窗口編輯多個文件

vim -o : 水平分割顯示
vim -O : 垂直分割顯示

將當前文件中的部分內容另存為另外一個文件

末行模式下使用命令
:w
:StartLine,EndLinew /PATH/TO/FILE

將另一個文件的的內容填充在當前文件中

末行模式下使用命令
:r /PATH/TO/FIEL

跟shell交互
:! COMMAND,COMMAND為要執行的命令

高級話題

  1. 顯示或取消顯示行號
:set number 顯示
:set nu  簡寫
:set nonu   取消
  1. 顯示忽略或區分字母大小寫
:set ignorecass 忽略
:set ic  簡寫忽略大小寫開啟
:set noic 關閉忽略
  1. 設定自動縮進
:set autoindent 開啟
:set ai  簡寫;同上
:set noai 關閉
  1. 查找到的文本高亮顯示或取消
:set hlsearch   開啟
:set nohlsearch 關閉
  1. 語法作色
:syntax on  開啟
:syntax off 關閉

vim配置文件

  • /etc/vimrc 全局vim配置文件
  • ~/.vimrc 自定義vim配置文件
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。