oeasy教您玩轉vim - 62 - # 緩衝buffer

編輯過程

回憶上次

  • 我們這次瞭解了編輯過程
  • 默認有一個替換文件swap

    • 修改的內容會保存到一個swap文件

      • 如果swp已經存在
      • 會有個swo文件
      • 以此類推
    • 替換文件可以進行對源文件的修復
    • 沒保存到源文件的可能保存到了替換文件
    • 可以統一設置替換文件的位置
    • 可以控制保存替換文件的觸發條件

      • 字符數
      • 時間長度
      • 手動觸發
  • 還可以設置備份文件

    • 備份文件backup
    • 寫備份文件writebackup
  • 其實我們更常見的是另存爲命令進行備份
  • 目前 vim 都是打開單一文件
  • vim可以打開兩個文件嗎?🤔

查看手冊📕

  • man vim

    • 可以看到vim可以有多個參數
    • terminal裏面直接運行

      • vim oeasy.txt o2z.txt
    • 這樣就會打開兩個文件
  • 每一個打開的文件是一個buffer緩衝區

    • 可以在vim中用:buffers查看到目前打開的文件
    • 可以:h buffers查看手冊

圖片描述

上下切換緩存buffers

  • :buffers 可以查看所有緩衝

    • :ls也可以查看所有緩衝
    • 注意不是 :!ls
    • !是執行外部命令ls
  • 可以查看手冊:h :ls

    • 可以通過:bn[ext],選擇下一個buffer
    • 可以通過:bprev[ious],選擇上一個buffer
    • 也可以通過:bN[ext],選擇上一個bufer

圖片描述

打開指定緩存buffer

  • 可以用b[uffer]1b2 直接切入指定的 buffer
  • 也可以用文件名,比如b[uffer] oeasy.txt
  • 可以用bf[irst],打開第一個buffer
  • 可以用bl[ast],打開最後一個buffer
  • 你可以嘗試複製粘貼一些內容

    • 然後跨文件進行復制粘貼操作
    • 並回憶一下多寄存器的複製粘貼

buffers細節

圖片描述

  • 可以在打開幫助手冊的情況下,:ls!,看到不在緩衝列表的緩衝

    • + 有修改未保存內容
    • - 可修改標籤關閉
    • = 只讀緩衝區
    • a 活躍緩衝區,當前的緩存區
    • u 沒有在列表裏面的緩衝區
    • h 隱藏緩衝區
    • x 有讀取錯誤的緩衝區
    • % 當前緩衝區
    • #swap替換 文件的緩衝區

強制跳轉buffer

  • 當我想跳轉的時候,如果當前文件沒有保存,他會不允許跳轉

    • 只能先:w保存
    • 然後再跳轉
    • 也可以用:wn

      • write
      • next
  • 如果我想強行跳轉

    • :b!2
    • 這樣當前文件沒有直接保存到硬盤裏,但swap中有
    • 如果想:b2的時候自動保存
    • 需要:set autowrite
    • 可以:h autowrite查看手冊
  • 也可以不保存強行退出當前buffer

    • :q!
  • 甚至不保存強行退出所有buffer

    • :qall!
    • 也可以保存所有未保存的文件:wall
    • 全部保存並退出:wqall
  • 回憶一下上次提到的

    • :saveas oeasy.txt
    • :w >> o2z.txt

hidden的作用

  • terminalvim 兩個文件ab

    • vim a b
    • a裏面進行了修改
    • 如果這個時候我想:b2切到第2buffer
    • 他會提示我要保存當前這個a
  • 如果設置了:set hidden,這個可以直接切換

    • a存在於swap已經修改
    • 還沒w的狀態
    • 注意這個和autowrite不同
    • :set autowrite`

      • 切換的時候自動保存
  • :ls可以看到兩個都有+(未保存標記)

    • aactive
    • hhidden
  • 這個時候就:wall

    • 可以把這兩個一起保存

圖片描述

跨文件跳轉

  • :marks 可以看到各種 mark標記

圖片描述

  • `"是上次光標離開此緩存buffer時候的位置
  • `.是上次編輯此緩存buffer發生的位置
  • 也可以用大寫字母定義跨文件標記

    • mA 定義標記
    • "A 跳轉到標記

跳轉列表

  • 在你跳來跳去的時候
  • 形成了一個跳轉列表

    • :jump
  • 可以來回來去跳躍

    • CTRL+O 上一個
    • CTRL+I 下一個

圖片描述

  • 如果我想在不同的buffer中使用不同的參數,應該怎麼做呢?

本地開關

圖片描述

  • setlocal 本地開關
  • :set ruler

    • 全局的標尺開關打開
  • :setlocal ruler

    • 只打開當前buffer的ruler

總結

  • 我們這次瞭解了緩衝區buffer
  • ls可以查看buffer,如下是buffer緩衝的一些flag

    • + 有修改未保存內容
    • - 可修改標籤關閉
    • = 只讀緩衝區
    • a 活躍緩衝區
    • u 沒有在列表裏面的緩衝區
    • h 隱藏緩衝區
    • x 有讀取錯誤的緩衝區
    • % 當前緩衝區
    • #swap替換文件的緩衝區
  • 可以在buffer跳轉

    • 可以通過bn[ext],選擇下一個buffer
    • 可以用b[uffer1]b2進入指定的 buffer
    • 也可以用文件名,比如b[uffer] oeasy.txt
    • 可以用bf[irst],打開第一個buffer
    • 可以用bl[ast],打開最後一個buffer
  • 不保存也可以跳轉

    • 設置 hidden
  • 跳轉的時候自動保存

    • 設置 autowrite
  • 可以用大寫字母設置跨文件標記mark

    • mA 添加標記
    • 'A 跳轉到標記
  • 關於強行跳轉和保存退出

    • 強制退出當前窗口 :q!
    • 不保存強行退出所有buffer :qall!
    • 保存所有未保存的文件:wall
    • 全部保存並退出:wqall
  • vim中打開的兩個文件緩存buffer
  • 可以放到兩個窗口裏面同時查看嗎?🤔
  • 下次再說 👋

[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (overmind1980/oeasyvim)
[藍橋實驗樓 邀請碼FJWYIMGB] (oeasy 教您零基礎玩轉編輯神器 vim_Linux - 藍橋雲課)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章