主頁 > 作業系統 > vi編輯器操作

vi編輯器操作

2020-09-24 05:21:24 作業系統

vi的基本操作

  • 如果只鍵入vi,沒有檔案名,也能進入vi,退出命令時輸入檔案名才能 被存入磁盤,

  • vi +行號 檔案名 進入vi后,游標處于特定某行上,如果去掉“+”號后面數字,游標處于檔案最末行

  • vi +/模式字串 檔案名 模式識別匹配,在命令中指定一個字串,進入vi后,游標處于檔案中第一個與指定模式串相匹配那行,所有匹配的字串被高亮,

  • :set nohlsearch 末行模式下,取消高亮顯示

  • vi 需要打開檔案的通配符 可以編輯多個檔案,在vi命令中寫入要操作的檔案即可,例如:vi *.c打開當前目錄下所有C檔案,

    • 檔案之間切換
      • Ctrl + 6 下一個檔案
      • :bn下一個檔案
      • :bp上一個檔案
  • vi +/main *.h *.c 打開程式的所有源檔案,并且將顯示位置定位在main函式

  • 文本插入操作:

    • 插入文本命令

      • i 將文本插入游標前
      • I 將文本插入當前行的行首
    • 追加文本命令

      • a 將新文本追加到游標當前所在位置之后
      • A 將新文本追加到所在行行尾
    • 空行插入命令

      • o 在游標所在行下一行插入一個空行,游標置于該行行首

      • O 在游標所在行上一行插入一個空行,游標置于該行行首

  • 文本洗掉操作(命令模式下):

    • x 洗掉游標處的字符,在x之前加上一個數字n,則洗掉從游標所在位置開始向右的n 個字符
    • X 洗掉游標前面的字符,在x之前加上一個數字n,則洗掉從游標前面那個字符開始向 左的n個字符
    • dd 洗掉游標所在整行,在dd前加入一個數字n,洗掉當前行及其后n-1行的內容
    • D或d$ 洗掉從游標所在處開始到行尾的內容
    • d0 洗掉從游標前一個字符開始到行首的內容
    • dw 洗掉一個單詞,若游標在某詞中間,從游標所在位置開始刪至詞尾,dw之前加上n,表示洗掉n個指定的單詞
    • d( 洗掉到上一句開始的所有字符
    • d) 洗掉到下一句開始的所有字符
    • d{ 洗掉到上一段開始的所有字符
    • d} 洗掉到下一段開始的所有字符
    • d<CR> 洗掉包括當前行在內的兩行字符
  • 文本復制操作:

    • yy 復制游標所在的整行,在yy前加一個數字n,可復制當前行及其后n-1行內容,
    • Y或y$ 復制從游標所在處到行尾的內容
    • yw 復制一個單詞,若游標在某單詞中間,則從游標所在位置開始復制到詞尾,在yw前加一個數字n,表示復制n個指定的單詞,
    • y) 復制到下一句開始的所有字符
    • y} 復制到下一段開始的所有字符
    • y<CR> 復制包括當前行在內的兩行內容
  • 文本粘貼命令:

    • p 粘貼當前緩沖區的內容
  • 文本選擇命令:

    • v 命令列下進行文本選擇,起始處按v進入塊選擇模式,然后移動到塊尾,之間部分被高亮顯示
    • V 文本第一行按V,然后移動游標到塊的最后一行,之間所有行被高亮顯示
  • 撤銷命令:

    • u 撤銷上一次所做的操作,多次使用u命令會一步一步依次撤銷先前做過的操作
    • U 一次性撤銷自上次移動到當前行所做過的所有操作,再使用一次U則撤銷先前U命令所做的操作,恢復被撤銷的內容
  • 重復命令:

    • . 文本編輯時碰到機械地重復一些操作,可以讓用戶方便地再執行一次前面剛完成的某個復雜命令
  • 推出vi操作:

    • :q
  • :q! 無論檔案是否改變都會強行推出vi編輯器

    • :w 新檔案名 vi保存當前編輯檔案,但并不退出,而是繼續等待用戶輸入命令,使用命令時,可以再給當前編輯檔案起一個新的檔案名,相當于該檔案另存為一個新的檔案
  • :w!新檔案名 命令與上面相同,不同的是,即使指定的新檔案存在,編輯器也會用當前檔案對其進行替換

    • :wq vi將先保存檔案,然后退出vi回傳shell
  • :x 若當前檔案曾被修改過,則vi會保存該檔案,否則vi直接退出,不保存該檔案


    vi增強操作

  • 替換命令:

    • r 將當前游標所指的字符替換為提供的字符,可以在該命令前加上數字n,表示從當前字符開始的n個字符替換為提供的字符
    • R 讓vim進入replace模式,此模式下,每個鍵入的字符都會替換當前游標字符,鍵入結束該模式
  • 游標移動:

    • 基本游標移動命令
      • h 向左移動一個字符
      • l 向右移動一個字符
      • j 向下移一行
      • k 向上移一行
    • 按行移動游標
      • H 將游標移至當前螢屏的第一行,而不是整個檔案的第一行,H命令之前加上數字n,則將游標移至第n行行首
      • M 該命令將游標移至螢屏顯示檔案的中間的行首,若螢屏已經充滿,則移動到螢屏的中間行
      • L 游標移至螢屏顯示檔案的最底行的行首,L命令之前加上數字n,游標移至從螢屏底部算起第n行的行首
      • G 全文范圍內移動游標,此時游標移動范圍不再受螢屏的限制
    • 按字移動游標
      • w和W w將游標右移至下一個字的字首,W指兩個空格之間的任何內容
      • e和E e如果游標起始位置處于字內,則游標移至本字字尾,如果游標在字尾,則移動到下一個字的字尾,E 所指的字是指兩個空格之間的內容
      • b和B b 如果游標處于字內,則將游標移至本字字首,如果處于字首,則將游標移至上一個字字首,
    • 按句移動游標
      • ( 將游標移至上一個句子的開頭
      • ) 將游標移至下一個句子的開頭
    • 按段移動游標(段是被定義以一個空白行開始和結束的片段)
      • { 將游標向前移至上一個段的開頭
      • } 將游標向后移至下一個段的開頭
    • 文本行的移動
      • > 將指定的正文行向右移動,通常是右移8個空格,指定的數字是需要移動的行數目,并不是要右移的空格數,通常將代碼整體右移,例>3 回車
      • < 效果與上述相同,方向相反
      • >> 將游標所在行右移8個空格,如果在>>命令之前給出數字n,則表示游標當前行及其下面的n-1行都右移8個空格
      • << 效果與上述相同,方向相反
    • 文本的異行行動(末行模式
      • m 允許用戶將某一行的文本內容移動到指定位置,使用方法imj ,把第i行移至第j行下方
    • 螢屏滾動
      • Ctrl+u 將螢屏向前(檔案頭方向)翻滾半屏
      • Ctal+d 將螢屏向后(檔案尾方向)翻滾半屏
      • Ctrl+f 將螢屏向檔案尾方向翻滾一整屏
      • Ctrl+b 將螢屏向檔案首方向翻滾一整屏
        • 可以在命令之前加上一個數字n,表示螢屏向前或者向后翻滾n行,或者螢屏向前或者向后翻滾n頁,
    • 查找命令(末行模式)
      • /string /命令從游標處開始向后尋找字串string
      • ?string ?命令從游標處開始向后尋找字串string
      • n 重復上一條命令,繼續向下檢索
      • N 重復上一條檢索命令,但檢索方向和上一次相反
      • g/string 使游標停止在第一個檢索到string串的首行
    • 替換命令
      • :[range]/s/s1/s2/[option]
        • [range]表示檢索范圍,省略時表示當前行
          • “1,10” 表示第1行到第10行
          • “%” 表示整個檔案
          • “.,$” 從當前行到檔案尾
        • s為替換命令,s1是要被替換的串,s2為替換的串
        • [option] /g表示在全域檔案中進行替換,/c表示在每次替換之前需要用戶進行確認,省略時僅對每行第一個匹配串進行替換
        • \<word 替換以word開始的單詞的word部分
          • 例如,%s/\<int/char 表示以int開始的單詞的int部分換成char
    • 視窗的切分
      • :split 檔案名 split也可以簡寫為sp,這時視窗切分為上下兩半,下部分對應原來檔案,上半部分對應新打開檔案,
      • Ctal+w,然后j 移動游標到下一個視窗
      • Ctral+w,然后k 移動游標到上一個視窗
      • Ctral+w,然后q 關閉當前視窗
      • Ctral+w,然后w 移動游標到另一個視窗
    • 設定環境
      • :set nu (nonu) 顯示行號(或者不顯示行號)
      • :set hlsearch (nohlsearch) 設定搜尋字串反白顯示(或者不反白顯示)
      • :set autoindent 顯示程式語法自動縮進
      • :set backup (nobackup) 自動存盤備份檔案(或者不自動備份檔案)
      • :set all 顯示所有的選項
      • :syntax on (off) 實作程式語法高亮顯示(或者不高亮顯示)
      • :set ignorecase (noignorecase) 忽略大小寫(或者區分大小寫)

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/116705.html

標籤:Linux

上一篇:CentOS 鏡像

下一篇:linux入門系列20--Web服務之LNMP架構實戰

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more