vim簡單總結

編輯器種類

常用的文本編輯器有:

  • 行編輯器,如sed,awk,cut等

  • 全屏編輯器,如vi,vim(vi增強版),nano等

vim的模式

  • 命令模式:使用vim filename打開文件后,進入的第一個模式。

    • 直接使用鍵盤操作文本的編輯

  • 插入模式:INSERT模式

    • 進入:i,從當前光標處開始

    • 進入:I,從當前行行首開始

  • 末行模式:vim內置命令接口。

    • 以:開頭命令

  • 替換模式:replace。會將光標所在的地方,替換為輸入的內容。

    • 進入:在命令模式下,輸入R命令,進入替換模式。

    • 輸入r命令,則只能替換一次

  • 可視化模式:代替鼠標進行選定。搭配命令模式的一個命令作為結尾

    • v 字符為單位

    • V 行為單位

    • c+v 面向塊

    • visual模式下,可配合w,),}等使用

  • 多窗口模式

  • 鎖屏

    • ctrl+s,vim鎖屏

    • 鎖屏后,屏幕中,vim顯示的內容,無論輸入什么,顯示的內容都不會變化。

    • 鎖屏后的所有輸入,都會被記錄,并且在解鎖后,執行。同未鎖屏相同的效果

    • ctrl+q,解鎖

打開文件

  • -m 只讀模式打開文件,文件被編輯后不能夠保存,只能夠強制退出 
    vim簡單總結

    • 其他的一個只讀模式——使用view替換vim打開文件,文件被編輯后,可以用:wq!來強制保存退出 
      vim簡單總結

  • -d file1 file2 對比兩個文件,不同的地方顯示高亮 
    vim簡單總結vim.1.png

  • vim +[num] 文件打開后,光標直接跳到第num行的行首,如果沒有指定num,則光標跳到文件的最后一行的行首

  • vim +/pat 打開文件后,光標跳到第一個匹配{pat}的行的行首 
    tips

  • 如果vim DIR,也同樣可以進入,同樣可以編輯,但是無法保存。 
    Linux同一個目錄下,不能有同名的文件夾或文件

  • 顯示:標準屏幕顯示20行

末端模式命令

:wx 見標題:編輯完成后 
:r /path 在光標所在行之后,新建行,并 讀入文件 
:!cmd 在vim中執行bashshell的命令(并不會插入) 
:r ! cmd 或者 :r!cmd 在當前行之后插入命令執行結果

定位,跳轉

單詞跳

  • w    下一個單詞詞首

    • #w    下面的#個單詞詞首

  • e    下一個單詞詞尾

    • #e    下#個單詞詞尾

  • b    前一個單詞的詞首

    • #b    前#個單詞詞首

字符跳

  • h 向左跳一個字符

    • [num]h 向左跳[num]個字符

  • j 向下跳一個字符

    • [num]j 向下跳[num]個字符

  • k 向上跳一個字符

    • [num]k 向上跳[num]個字符 
      tips: 
      Japan在Korea下面,J向下,K向上

  • l 向右跳一個字符

    • [num]l 向右跳[num]個字符

多行跳

  • H(HIgh) 當前頁第一行的行首

    • [num]H 當前頁第[num]行的行首

  • L(low) 當前最后一行的行首

    • [num] L 當前頁倒數第[num]行的行首

  • M(middle) 當前頁中間一行的行首

  • \^ 行首(不算空格)

  • 0 絕對行首

  • $ 絕對行尾

  • G 文章最后一行行首

    • [num]G 第[num]行行首

  • :[num] 文章的第[num]行

  • 文章第一行 1G,:1,gg

  • ( 前一句(以.為分隔)

  • ) 后一句

  • { ·前一段

    • 兩行之間只有回車,不算段落,必須之間有一個空行,才算是不同段落。

  • } 后一段

屏幕為單位

  • c+f 前進一屏

  • c+b 后退一屏

  • c+d 前進 半屏

  • c+u 后退半屏

命令模式快捷鍵

  • x

    • #x

  • d

    • #d

  • y復制字符

    • #y

  • yy 復制行

    • #yy

  • c替換

    • #c

  • C刪除到光標所在行尾,并切換到insert模式

    • #C

  • gu(變小寫),

  • gU(變大寫)的相關操作、 
    NOTES: 
    [num]gu/gU,操作num+1行,并且num默認為1,即gu/gU至少操作兩行 
    在組合模式中:0gU$將本行從行首到行尾都轉換為大寫

  • ~大小寫轉換

這些命令通常都可以與地址定界符相結合使用,以d為例,如下: 
d$ 
d^ 
dH 
dL 
dM 
dw 
de 
db 
d) 
d} 
d( 
d{ 
dgg 
dG 
d1G 
還可以在命令前后都添加地址定界符,語法為: 

  • J 去掉行尾的回車符,將不同的行轉換為同一行

  • p 在光標之后粘貼

  • P在前面粘貼

  • u 撤銷

    • u 撤銷

  • U 撤銷光標落在這一行后,對此行所做的所有更改

  • c+r 取消剛才的撤銷,

  • . ()英語的句) 重做

  • [num]. 重做num次,默認為1

地址定界

  • :#

  • :#1,#2

  • :#1,+#2

  • :. 當前

  • :$ 最后一行

  • :$-1 倒數第二行

  • %或者‘:1,$’ 第一行到最后一行

  • :/pat1/,/pat2/d刪除第一個匹配pat1到第一次匹配pat2之間的行。

  • :#,/pat3/從第#行開始,到第一次匹配pat3,之間的行

vim的命名寄存器

vim一共有26個(a-z),1個無命名寄存器(默認寄存器)

  • “a表示后續的操作在a寄存器中操作

  • “ayy復制當前行,到a寄存器

  • 3“ayy表示復制3行到a寄存器中

  • 默認情況使用的是無命名寄存器

“ap粘貼a寄存器的內容到當前航

編輯完成后

  • :x= 相當于:wq,但是盡量別用x,因為x的使用,會產生不安全因素

  • ZZ 存盤退出

  • ZQ 不存盤退出

  • :w /path 存內容到path文件,vim打開的文件不會變。

多窗口模式

打開方法

- vim file1 file2 file3
- vim -o 打開橫向
- vim -O 打開多個豎向
- vim -p 打開多個tag

切換方法

  • 命令模式:c+w+向下

  • 命令模式:c+w+向上

  • :next

  • :prev

  • :last

  • :first

  • :wqall

  • c+w+v 左右

  • c+w+s 上下

關閉窗口

  • c+w+q取消相鄰窗口。

  • c+w+o取消全部其他窗口

模式轉換

  • a 追加模式,在當前光標所在字符之后插入(光標跳到當前字符之后的一個字符,并進入INSERT模式)

    • 如果當前行包含一個字符(即使是空白字符也可以),在該字符之后插入

    • 如果當前行為空白行(連空白字符都沒有,直接就是回車),直接插入

  • A 光標到當前行最后一個字符

  • i 光標位置不變,在當前光標之前插入

  • I 光標自動跳到行首

  • o 在當前行后,新建一行

  • O 在當前行前,插入一行

  • R 進入替換模式,會將光標所在位置的字符替換為輸入字符

  • r 單字符替換模式,只替換一次

other notes:

  • vim打開passwd文件或者其他文件,經常會有額外的提示

    這種現象的原因往往是上次使用該文件的時候異常退出導致的。這種異常退出,會使原本打開時生成的緩存文件.passwd.swap文件,沒有被正常刪除。 
    只要刪除了隱藏文件.filename.swqp就可以了

  • 關于vim打開文件后的各種顏色

    在/etc/文件下打開文件,一般都是有顏色的。vim會自動給那些它認為有意義的文件顏色。這些文件,要么是有結尾標識(比如.sh),要么在文件中有標識(比如#!/bin/bash),要么在特定的文件夾下面(比如/etc/下通常被識別為配置文件)。如下:


vim.2.pngvim.3.png

原創文章,作者:m20-吳清玲,如若轉載,請注明出處:http://www.www58058.com/36414

(0)
m20-吳清玲m20-吳清玲
上一篇 2016-08-18 10:10
下一篇 2016-08-18 13:36

相關推薦

  • 用戶創建及權限管理

    1.列出當前系統上所有已經登錄的用戶的用戶名,注:同一個用戶登錄多次,則只顯示一次即可。 who | cut -d ‘ ‘ -f1 | sort -u [root@localhost ~]# who danry :0 2017-07-16 23:20 (:0) danry pts/0 2017-07-16 23:23 (192.168…

    Linux干貨 2017-07-17
  • iptables入門到進階

    netfilter/iptables:        netfilter是存在于內核中的一個防火墻框架,用來管理網絡數據包,netfilter在IP數據包處理流程中的5個關鍵位置放置了5個鉤子(hook)函數,當數據包流經相應的位置時,相應的鉤子函數會被調用,每個對應的鉤子上有對應的表,表中有對應的…

    Linux干貨 2017-05-02
  • LVM應用

    1、創建一個2G的文件系統,塊大小為2048byte,預留1%可用空間,文件系統ext4,卷標為TEST,要求此分區開機后自動掛載至/test目錄,且默認有acl掛載選項 ·首先在虛擬機當中添加指定大小的硬盤,添加完成后,系統不會自動掃描添加的硬盤設備,鍵入命令重新掃描SCSI總線來添加設備   echo "- – -&quo…

    Linux干貨 2016-08-30
  • N22-℡浮生.若夢 ╮第一周作業

    1.描述計算機的組成及其功能  組成:     硬件       (1).CPU: 是計算機的主要設備之一,功能主要是解釋計算機指令以及處理計算機軟件中的數據.       (2).存儲器:內存,硬盤,存儲器的功能是存儲程序、數據和各種信號…

    Linux干貨 2016-09-19
  • SHELL編程之數組運用及YUM軟件包管理

    SHELL編程中,當要引用到多個值的時候,一個一個地進行變量賦值會讓我們的腳本變得繁瑣,不利于代碼的優化,所以,就需要通過數組進行定義,優化代碼,減少不必要的定義和命令操作。 SHELL中的數組:存儲多個元素的連續內存空間 數組名:整個屬組只有一個名字 數組索引: 編號從0開始   數組名[索引]   ${array_name[index…

    Linux干貨 2016-08-24
  • Nginx相關配置及其應用

    LB Cluster: 傳輸層:lvs、nginx、haproxy 應用層:nginx(http, https, smtp, pop, imap), haproxy(http), httpd(http/https), ats, perlbal, pound, … nginx load balancer: tcp/udp   nginx …

    Linux干貨 2016-11-11
欧美性久久久久