編輯過程
回憶上次
- 我們這次瞭解了編輯過程
-
默認有一個替換文件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]1
、b2
直接切入指定的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的作用
-
在
terminal
中vim
兩個文件a
、b
vim a b
- 在
a
裏面進行了修改 - 如果這個時候我想
:b2
切到第2
個buffer
- 他會提示我要保存當前這個
a
-
如果設置了
:set hidden
,這個可以直接切換a
存在於swap
已經修改- 還沒
w
的狀態 - 注意這個和
autowrite
不同 -
:set autowrite`
- 切換的時候自動保存
-
:ls
可以看到兩個都有+
(未保存標記)a
是active
h
是hidden
-
這個時候就
: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 - 藍橋雲課)