[華為云在線課程][Linux文本處理工具和正則表達式][第一章文本編輯之神VIM][學習筆記]

      網友投稿 621 2025-04-01

      [華為云在線課程][Linux文本處理工具和正則表達式][第一章文本編輯之神VIM][學習筆記]

      vi和vim簡介

      在Linux中我們經常編輯修改文本文件,即由ASCII,Unicode或其它編碼的純文字的文件。之前介紹過nano,實際工作中我們會使用更為專業,功能強大的工具。

      文本編輯種類:

      全屏編輯器:nano(字符工具),gedit(圖形化工具),vi,vim

      行編輯器:sed

      vi

      Visual editor,文本編輯器,是Linux必備工具之一,功能強大,學習曲線陡峭,學習難度大(從入門到放棄代表)

      vim

      Visual editor improved,和vi使用方法一致,但功能更為強大,不是必備條件。

      官網:www.vim.org

      其他相關編輯器:gvim,一個vim編輯器的圖形版本

      參考鏈接:https://www.w3cschool.cn/vim/

      使用vim初步

      vim命令格式

      vim [OPTION]... FILE...

      常用選項:

      +# 打開文件后,讓光標處于第#行的行首,+默認行尾 +/PATTERN 讓光標處于第一個被PATTERN匹配到的行的行首 -b file 以二進制方式打開文件 -d file1 file2 比較多個文件,相當于vimdiff -m file 以只讀方式打開文件 -e file 直接進入ex模式,相當于執行ex file -y file Easy mode(like 'evim', modeless),直接可以操作文件,ctrl+o:wq|q! 保存和不保存退出

      說明:

      如果該文件存在,文件被打開并顯示內容

      如果該文件不存在,當編輯后第一次存盤時創建它

      三種主要模式和轉換

      vim是一種模式編輯器,擊鍵行為是依賴于vim的"模式"

      三種常見模式:

      命令或普通(Normal)模式:默認模式,可以實現移動光標,剪切/粘貼文本

      插入(Insert)或編輯模式:用于修改文本

      拓展命令(Extended command)或命令(末)行模式:保存,退出等操作

      模式轉換:

      命令模式 -> 插入模式

      i insert,在光標所在處輸入 I 在當前光標所在行的行首輸入 a append,在光標所在處后面輸入 A 在當前光標所在行的行尾輸入 o 在當前光標所在行的下方行打開一個新行 O 在當前光標所在行的上方打開一個新行

      插入模式 -> ESC -> 命令模式

      命令模式 -> : -> 拓展命令模式

      拓展命令模式 -> ESC,Enter -> 命令模式

      例子:插入顏色字符

      1,切換至插入模式 2,按ctrl+v+[三個鍵,顯示^[ 3,后續輸入顏色信息,如:^[[32mhello^[[0m 4,切換至拓展命令模式,保存退出 5,cat 文件可以看到顏色更改

      拓展命令模式

      按":"進入Ex模式,創建一個命令提示符:處于底部的屏幕左側

      拓展命令模式基本命令

      w 寫(存)磁盤文件 wq 寫入并退出 x 寫入并退出 X 加密 q 退出 q! 不存盤退出,即使更改都將丟失 r filename 讀文件內容到檔期那文件中 w filename 將當前文件內容寫入另一個文件 !command 執行命令 r!command 讀入命令的輸出

      地址定界

      [華為云在線課程][Linux文本處理工具和正則表達式][第一章文本編輯之神VIM][學習筆記]

      格式:

      :start_pos,end_pos CMD

      地址定界格式

      # 具體第#行,例如2表示第2行 #,# 從左側#表示起始行,到右側#表示結尾行 #,+# 從左側#表示的起始行,加上右側#表示的行數,例如2,+3 表示2到5行 . 當前行 $ 最后一行 .,$-1 當前行到倒數第二行 % 全文,相當于1,$ /pattern/ 從當前行向下查找,直到匹配pattern的第一行,即:正則表達式 /pat1/,/pat2/ 從第一次被pat1模式匹配到的行開始,一直到第一次被pat2匹配到的行結束 #,/pat/ 從指定行開始,一直找到第一個匹配pattern的行結束 /pat/,$ 向下找到第一個匹配pattern的行到整個文件的結尾的所有行

      地址定界后跟一個編輯命令

      d 刪除 y 復制 w file 將范圍內的行另存至指定文件中 r file 在指定位置插入指定文件中的所有內容

      查找并替換

      格式

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

      說明:

      要查找的內容:可使用正則表達式模式 替換為的內容:不能使用模式,但可以使用\1,\2,...等后向引用符號;還可以使用"&"引用前面查找時查找到的整個內容

      修飾符:

      i 忽略大小寫(ignore) g 全局替換,默認情況下,每一行只替換第一次出現(global) gc 全局替換,每次替換前詢問(global confirm)

      查找替換中的分隔符/可替換為其他字符,如:#,@

      例子:

      s@/etc@/var@g s#/boot#/#i

      定制VIM的工作特性

      拓展命令模式的配置只是對當前vim進程有效,可將配置存放在文件中持久保存

      配置文件:

      /etc/vimrc 全局配置 ~/.vimrc 個人配置

      行號

      顯示:set number,簡寫set nu 取消顯示:set nonumber,簡寫set nonu

      忽略字符的大小寫

      啟用:set ignorecase,簡寫set ic 不忽略:set noic

      自動縮進

      啟用:set autoindent,簡寫:set ai 不啟用:set noai

      復制保留格式

      啟用:set paste 不啟用:set nopaste

      顯示Tab ^|和換行符$顯示

      啟用:set list 不啟用:set nolist

      高亮搜索

      啟用:set hlsearch 不啟用:set nohlsearch 簡寫:nohl

      語法高亮

      啟用:syntax on 不啟用:syntax off

      文件格式

      啟用Windows格式:set fileformat=dos 啟用Unix格式:set fileformat=unix 簡寫 set ff=dos|unix

      Tab用空格代替

      啟用:set expandtab 默認為8個空格代替Tab 不啟用:set noexpandtab 簡寫:set et

      Tab用指定格式的個數代替

      啟用:set tabstop=# 指定#個空格代替Tab 簡寫:set ts=4

      設置文本寬度

      set textwidth=65(vim only) set wrapmargin=15

      設置光標所在行的標識線

      啟用:set cursorline,簡寫:set cul 不啟用:set nocursorline

      加密

      啟用:set key=password 不啟用:set key=

      了解更多

      set幫助 :help option-list :set or :set all

      命令模式

      命令模式,又稱為Normal模式,功能強大,只是此模式輸入指令并在屏幕上顯示,所以需要記憶大量的快捷鍵才能更好使用

      退出VIM

      ZZ 保存退出 ZQ 不保存退出

      光標跳轉

      字符間跳轉

      h:左 l:右 j:下 k:上 #COMMAND:跳轉由#指定的個數的字符

      單詞間跳轉

      w:下一個單詞的詞首 e:當前或下一單詞的詞尾 b:當前或前一單詞的詞首 #COMMAND:由#指定一次跳轉的單詞數

      當前頁跳轉:

      H:頁首 M:頁中間行 L:頁底 zt:將光標所在當前行移到屏幕頂端 zz:將光標所在當前行移到屏幕中間 zb:將光標所在當前行移到屏幕底端

      行首行尾跳轉:

      ^:跳轉至行首的第一個非空白字符 0:跳轉至行首 $:跳轉至行尾

      行間移動:

      #G 或者拓展命令模式下 :# 跳轉至第#行 G 最后一行 1G,gg 第一行

      句間移動:

      )下一句 (上一句

      段落間移動:

      }下一段 {上一段

      命令模式翻屏操作

      Ctrl+f 向文件尾部翻一屏 Ctrl+b 向文件首部翻一屏 Ctrl+d 向文件尾部翻半屏 Ctrl+u 向文件首部翻半屏

      字符編輯

      x 刪除光標處的字符 #x 刪除光標處起始的#個字符 xp 交換光標所在處的字符及其后面字符的位置 ~ 切換大小寫 J 刪除當前行后的換行符

      替換命令(replace)

      r 只替換光標所在處的一個字符 R 切換成REPLACE模式(在末行出現--REPLACE--提示),按ESC回到命令模式

      刪除命令(delete)

      d 刪除命令,可結合光標跳轉字符,實現范圍刪除 d$ 刪除到行尾 d^ 刪除到非空行首 d0 刪除到行首 dw de db #COMMAND dd 剪切光標所在行 #dd 多行刪除 D 從當前光標位置一直刪除到行尾,等同于d$

      復制命令(yank)

      y 復制,行為相似于d命令 y$ y0 y^ ye yw yb #COMMAND yy 復制行 #yy 復制多行 Y 復制整行

      粘貼命令(paste)

      p 緩沖區存的如果為整行,則粘貼當前光標所在行的下方;否則,則粘貼至當前光標所在處的后面 P 緩沖區寸的如果為整行,則粘貼當前光標所在行的上方;否則,則粘貼至當前光標所在處的前面

      改變命令(change)

      c 刪除后切換成插入模式 c$ c^ c0 cb ce cw #COMMAND cc 刪除當前行并輸入新內容,相當于S #cc C 刪除當前光標到行尾,并切換成插入模式,相當于c$

      命令模式操作文本總結

      查找

      /PATTERN 從當前光標所在處向文件尾部查找 ?PATTERN 從當前光標所在處向文件首部查找 n 與命令同方向 N 與命令反方向

      撤銷更改

      u 撤銷最近的更改,相當于Windows中ctrl+z #u 撤銷之前多次更改 U 撤銷光標落在這行后所有此行的更改 Ctrl+r 重做最后的"撤銷"更改,相當于Windows中ctrl+y . 重復前一個操作 #. 重復前一個操作#次

      高級用法

      常見Command:y復制,d刪除,gU變大寫,gu變小寫

      例子:

      0y$ 命令 0 先到行頭 y 從這里開始拷貝 $ 拷貝到本行最后一個字符

      例子:粘貼"wang"100次

      100iwang [ESC] di" 光標在""之間,則刪除""之間的內容 yi( 光標在()之間,則復制()之間的內容 vi[ 光標在[]之間,則選中[]之間的內容 dtx 刪除字符直到遇見光標之后的第一個x字符 ytx 復制字符直到遇見光標之后的第一個x字符

      可視化模式

      在末行有"–VISUAL–"標識,表示處在可視化模式

      允許選擇的文本塊

      v 面向字符,--VISUAL-- V 面向整行,--VISUAL LINE-- ctrl+v 面向塊,--VISUAL BLOCK--

      可視化鍵可用于與移動鍵結合使用

      w ) } 箭頭等

      突出顯示的文字可被刪除,復制,變更,過濾,搜索,替換等

      例子:在文件每一行的行首插入#

      1,先將光標移動到第一行的行首 2,輸入ctrl+v,進入可視化模式 3,輸入 G 跳到最后1行,選中每一行的第一個字符 4,輸入 I 切換至插入模式 5,輸入 # 6,按下 ESC 鍵

      例子:在指定的塊位置插入相同的內容

      1,光標定位到要操作的地方 2,Ctrl+v 進入"可視 塊"模式,選取這一列操作多少行 3,Shift+i(I) 4,輸入要插入的內容 5,按 ESC 鍵

      多文件模式

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

      多窗口模式

      多文件分割

      vim -o|-O FILE1 FILE2 -o:水平或上下分割 -O:垂直或左右分割(vim only) 在窗口間切換:Ctrl+w,Arrow

      單文件窗口分割

      Ctrl+w,s: split,水平分割,上下分屏 Ctrl+w,v: vertical,垂直分割,左右分屏 Ctrl+w,q: 取消相鄰窗口 Ctrl+w,o: 取消全部窗口 :wqall 退出

      vim的寄存器

      有26個命名寄存器和1個無命名寄存器,常存放不同的剪貼板內容,可以在同一個主機的不同會話(終端窗口)間共享寄存器名稱a,b,…z。格式:"寄存器 放在數字和命令之間

      例子

      3"tyy 表示復制3行到t寄存器中,末行顯示3 lines yanked into "t "tp 表示將t寄存器內容粘貼 未指定,將使用無命名寄存器 有10個數字寄存器,用0,1,...,9表示,0存放最近復制內容,1存放最近刪除內容。當新的文本變更和刪除時,1轉存到2,2轉存到3,以此類推。數字寄存器不能在不同會話間共享。

      標記和宏(Macro)

      ma 將當前位置標記為a,26個字母均可做標記,mb、mc等等 'a 跳轉到a標記的位置,實用的文檔內標記方法,文檔中跳躍編輯時很有用 qa 錄制宏a,a為宏的名稱,末行提示:recording @a q 停止錄制宏 @a 執行宏a @@ 重新執行上次執行的宏

      編輯二進制文件

      # 以二進制方式打開文件 vim -b binaryfile # 拓展命令模式下,利用xxd命令轉換為可讀的十六進制 :%!xxd # 切換至插入模式下,編輯二進制文件 # 切換至拓展命令模式下,利用xxd命令轉換回二進制 :%!xxd -r # 保存退出

      幫助

      :help :help topic use :q to exit help 輸入vimtutor打開自帶練習教程

      vim總結圖

      Linux 正則表達式

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:excel裁剪圖片快捷鍵無效怎么辦?(excel裁剪圖片快捷鍵不可用怎么辦)
      下一篇:200_mysql_innodb_1_ Row_Format _page_聚簇_二級索引
      相關文章
      亚洲综合精品网站| 国产成人精品日本亚洲语音| 亚洲国产午夜福利在线播放| 亚洲av日韩av永久在线观看| 精品日韩99亚洲的在线发布| 亚洲蜜芽在线精品一区| 亚洲天天做日日做天天欢毛片| 亚洲精品V天堂中文字幕| 亚洲日韩精品无码专区加勒比☆ | 亚洲阿v天堂在线2017免费| 亚洲AV无码AV男人的天堂不卡| 亚洲欧美国产日韩av野草社区| 亚洲色偷偷色噜噜狠狠99网| 亚洲午夜精品久久久久久app| 亚洲色欲色欱wwW在线| 国产精品亚洲专区无码唯爱网 | 亚洲av无码国产精品夜色午夜 | 亚洲无人区码一二三码区别图片| 亚洲日本VA午夜在线影院| 亚洲第一第二第三第四第五第六| 久久久久久亚洲精品无码| 亚洲AV无码一区二区三区国产| 亚洲精品国产综合久久一线| 久久亚洲中文字幕精品一区| 亚洲热线99精品视频| 亚洲AV无码成人网站久久精品大| 亚洲欧洲一区二区| 亚洲婷婷天堂在线综合| 亚洲一区欧洲一区| 亚洲成a∨人片在无码2023| 亚洲成年看片在线观看| 国产亚洲精品资在线| 亚洲AV无码一区二区三区DV| 久久精品蜜芽亚洲国产AV| 亚洲人成黄网在线观看| 亚洲精品无码中文久久字幕| 亚洲成a人片在线播放| 亚洲午夜久久久久妓女影院| 亚洲国产一区国产亚洲| 亚洲国产夜色在线观看| 亚洲国产成人久久精品软件 |