Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: Vim

Vim 視窗管理工具

Posted on 2022 年 6 月 21 日2022 年 7 月 8 日 By 日落 在〈Vim 視窗管理工具〉中尚無留言

Vim 內建 window (視窗) 管理工具,如果另外有安裝 nerdtree 其實不太需要 Ctrl+Z 切回 shell,但這是使用習慣,挑自己順手的方法即可。

Vim 將 4 個檔案分別放在 4 windows

這邊介紹一下如何使用 Vim 同時開啟多個檔案做對照。


Vim Window 操作基礎

先進入 vim 的指令模式,然後輸入 :split,vim 就會自動建立垂直的 window:

Vim 垂直分割

既然有垂直分割當然也就有水平分割,在 split 前加入 vertical 即可水平分割 (vertical 也可使用縮寫 vert):

Vim 水平分割

有注意到的話,會發現 vim 游標仍然停留在第一個 windows,所以接下來就是 vim 可以在多個 windows 中切換 focus。

在命令模式中鍵入 Ctrl+W 就會進入 windows 管理模式,再按第二次 Ctrl+W 即可將 focus 移動到下一個 windows (注意綠色游標),有多個視窗就多切換幾次,以此類推

Ctrl+W 讓 vim focus 到另一個 windows

另外要注意:你如果是在瀏覽器的 web console 中,請不要使用視窗模式,因為 ctrl+W 會被瀏覽器先 catch 到,瀏覽器就把你目前正在用的視窗關閉 …. _Drz。

快速切換 windows

還記得如何快速複製多行的指令嗎?3yy 往下複製 3 行的內容;2dd 往下剪下二行的內容。

這些快速切換指令,也適用在 windows 操作上。下面直接用圖片介紹操作方法:

有沒有發現 Vim 的操作其實基礎都差不多?同樣一個邏輯適用於類似了情況,依照自己的需求,適當得使用 J、K、H、L 即可。

另外也有朋友覺得 tmux 的視窗操作較為順手,所以先用 tmux 開多個視窗,然後每個視窗個別開一個 Vim。到底哪個方式比較順手,就讓讀者自行決定。

其他 windows 相關操作

  • 二個視窗對調:Ctrl+W → X
  • 分割 windows,新的在右邊:vert bo split
  • 調整 windows 大小::resize 10、:resize +5、:vertical resize +3,其他請參考 vim resize 說明。

其他與 windows 相關的操作,可以透過在 vim 中使用指令 :h windows 來了解。

若有相關指令在本文中未提及,歡迎在文章下方留言,與其他人分享!


感謝網友 arizvisa 補充說明,想了解 vim cursor 相關的操作邏輯,可以參考以下幾份文件:

  • :help CTRL-O
  • :help CTRL-I
  • :help g;
  • :help g,
Tags:Vim

Vim 儲存檔案 & 關閉

Posted on 2022 年 6 月 20 日2022 年 6 月 20 日 By 日落 在〈Vim 儲存檔案 & 關閉〉中尚無留言

聽了某分享,聽到 :wq 和 ZZ 一樣都是儲存並關閉,和印象中的有些出入,所以直接 :h 查 vim 的說明。

:h wq

Write the current file and close the window. If this was the last edit-window Vim quits.
Writing fails when the file is read-only or the buffer does not have a name. Quitting fails when the last file in the argument list has not been edited.

:h ZZ

Write current file, if modified, and close the current window (same as “:x”). If there are several windows for the current file, only the current window is closed.

所以主要差異有:

  • :wq 不管檔案是否有變更、異動,都會在 vim 關閉之前寫入檔案;如果使用 ZZ 則僅在檔案內容有變更時才會寫檔,否則直接退出 vim。
  • :wq 後面可以加上參數。例如寫入後關閉,但是希望另存新檔時,可以使用 :wq new-file 來要求 vim 將內容寫入其他檔案。
Tags:Vim

vim 快速使用 sudo 存檔的語法

Posted on 2017 年 7 月 19 日2021 年 3 月 12 日 By 日落 在〈vim 快速使用 sudo 存檔的語法〉中尚無留言

平常改設定檔通常都是「sudo vim xxx.conf」,不過直接切換成 root 修改檔案其實風險還蠻大的,特別是邊喝酒邊改系統的時候 (?)。

倘若不想使用 sudo vim 來修改系統設定檔時,就 vim xxx.conf 即可。雖然沒有寫入權限,但至少讀取檔案內容是沒問題的。

以一般使用者開啟系統擋時,每次做變更都會收到警告訊息「Warning: Changing a readonly file」,表示 vim 偵測到沒有權限變更檔案內容,避開非預期的異動正是避開誤寫的好方法。那當修改完成後需要寫入時,則可以使用以下指令臨時切換成 root 並寫入檔案:

:w !sudo tee %


說明一下上面那一段到底是什麼意思。

「:w」和大家所知道的寫入檔案是一模一樣的,但若後面加上其他指令,例如「:w ! tee」其實就是把預備寫入的檔案內容 pipe 給後面的指令處理,前面這個寫法就是把檔案內容丟給 console 的 tee 處理,所以可以看到 tee 檔案內容輸出到螢幕上 (stdout)。

vim 中的「%」符號代表的是正在編輯的檔案名稱,可以使用「:!echo %」指令看看會輸出什麼資料。若是「vim xxx.conf」則會印出「xxx.conf」;「vim path/to/xxx.conf」則會印出「path/to/xxx.conf」,應該不難理解。

綜合以上幾個撇步,「:w !sudo tee %」的意思,其實就是讓 vim 不要自己更新檔案,而是將檔案內容拋給以 root 身份執行的 tee,並讓 tee 寫入 vim 目前正在編輯的檔案。tee 寫完檔案以後,vim 會偵測到檔案異動並詢問是否要重新載入 (load) 更新過的檔案內容,重新載入以後就可以繼續下一個批次的修改。

Tags:Linux, Vim, 分享, 資訊學習

Vim Arrow Key Alias

Posted on 2014 年 9 月 28 日2021 年 3 月 12 日 By 日落 在〈Vim Arrow Key Alias〉中尚無留言
Vim Arrow Key Alias

每次用 autocomplepop 都會覺得右有要移動到方向鍵才能選字實在麻煩。

於是開使加了一些 short keys 讓操作簡單一底,二隻手也可以盡量不宜開主鍵盤區域。

在 .vimrc 中加入 maping,來取帶 arrow 按鍵:

imap <C-J> <Down>
imap <C-K> <Up>

這樣編輯時跳出選字方塊時,變可以使用 Ctrl + J or K 來上下選字。

Tags:Vim

Setting Vim from Command Line Argument

Posted on 2013 年 9 月 3 日2021 年 3 月 12 日 By 日落 在〈Setting Vim from Command Line Argument〉中尚無留言

因不同環境編碼不同,而需要從外部程式呼叫 vim 時直接設定編碼。苦想不到解法時,看到 NeoBundle 第一次執行 vim 要安裝 bundle 時,執行「vim +NeoBundleInstall」,翻了很久才找到「+」的說明文件 (天曉得為什麼要用 :h -c 才能找到文件啊 ….)

假設要在 vim 中執行「:set fileencoding=utf-8」,可以改做由 command line 執行:

vim +fileencodeing=utf-8

所以稍早在 .bashrc 裡面加了:

export SVN_EDITOR="vim +"fileencoding=utf-8 encoding=utf-8""
Tags:Linux, Vim

文章分頁

1 2 下一頁

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.