2024/03/24

VIM


以下是基本操作方法:
VIM 共分為三種模式,分別是指令模式編輯模式指令列命令模式
輸入:在指令模式按 a、i、o,就會進入編輯模式,這時候可以編輯文件。 如果要回到指令模式時, 則必須要按下 Esc 這個按鍵退出編輯模式。

到第一行:gg
到最後一行:G
到某一行:xxG (xx 要代入行數數字)
到行首:0
到行末:$

複製:yy
貼上:p
復原:u
把剛剛回復的動作再取消:ctrl-r

刪一個字:x
刪整行:dd

使用指令列命令模式儲存檔案或者是離開。
儲存: :w
離開: :q
儲存兼離開 ::wq 或 shift+zz
強制離開(不儲存): :q!
設定儲存的檔名: :w filename

Add space or words to mufti-line by using VIM

1) 按 CTRL + V 進入 visual mode
2) 按 j 選擇要進行操作的行數(要多選一行,就多按一個 j)
3) 接下來按 I,開始插入要插入的文字
4) 如果是要插入空白,就插入空白,如果是文字,就插入要插入的文字
5) 按 ESC 離開

如果要刪除空白字元或者是 TAB,可以使用反縮排 < 或者是退格 X 的功能;也就是第三步要做的事情。

Replace

如果要在 VIM 中全域取代字串,下面是一個例子
:%s/foo/bar/g

所以移除行尾的空白可以這樣做:

:%s/\s\+$//g
如果只是在該列取代字串,下面是一個例子:
:s/foo/bar/g

If you open a file that uses both tabs and spaces, assuming you've got

:set expandtab ts=4 sw=4 ai

You can replace all the tabs with spaces in the entire file with

:%retab

expandtab 會將 tab 填為 4 個 spaces;而 ai 為 autoindent,會複製目前的 indent到新的一行。 如果只是想更改 TAB 的顯示長度,可以使用:

:set tabstop=4 shiftwidth=4

開啟/關閉vim的vi相容模式

一般都會使用以下指令來關閉 vim 的 vi 相容模式(並且放在設定第一行):

:set nocompatible

文字編碼

將 Vim 內部對於文字編碼方式改為 UTF-8:

set encoding=utf8

VIM 會自動偵測文字檔案的編碼,當然有可能會偵測錯誤,可以使用下列的指令讓 VIM 使用某個編碼重讀檔案:

:e ++enc=encoding

其中 encoding 需要代換為 big5, utf8 等編碼方式。

開啟/關閉vim的自動縮排功能

vim的自動縮排有「autoindent」、「smartindent」和「cindent」三種。「autoindent」是最基本的縮牌方式, 會在建立出新的一行的同時,自動對齊上一行的縮排。「smartindent」則是會在「autoindent」的基礎上, 針對「{」(左大括號)後所產生的新行,再多往內縮排一次,且若新行的開頭是「}」(右大括號),則會取消往內縮多排一次的動作。 而「cindent」則是會在「smartindent」的基礎上,加入簡單的C/C++、Java等程式語法結構的判斷, 如果「{」是發生在註解之內,就不會進行縮排,並且也不是根據新行的上一行來決定新行的縮排, 而是會根據新行所在的程式區塊(block)來決定,另外也會根據其他符號進行縮排。

:set cindent

使用以下指令可以關閉vim的「cindent」自動縮排功能:

:set nocindent

設定「backspace」鍵的功能

vim可以透過「backspace」環境變數,設定其在編輯模式下,鍵盤上「backspace」鍵的功能。可以使用以下指令來開啟「backspace」鍵的所有功能:

:set backspace=indent,eol,start

或者是:

:set backspace=2

「indent」表示允許使用「backspace」鍵來刪除縮排;「eol」表示允許使用「backspace」來刪除換行字元, 使其可以退回至上一行;「start」表示允許使用「ctrl+w」和「ctrl+u」快速鍵來刪除獨立詞語和同類字元(縮排、非縮排字元)。

語法高亮

下面是設定將語法高亮開啟的方式:

:syntax on

個人設定檔案

VIM 可以在家目錄下的 .vimrc 設置自己的 VIM 設定,所以參考上面的設定,可以這樣寫:

set nocompatible
set encoding=utf8
set backspace=indent,eol,start
set tabstop=4 shiftwidth=4
syntax on

Shell command

有二個方式,一個是執行一個 command(! 然後加上要執行的 command):

:!command

一個是執行目前預設的 shell:

:shell

Hex editor

如果要使用 VIM 編輯二進位檔案,可以配合外部工具程式 xxd 將資料轉換為 16 進位的排版格式。
在 Vim 中輸入以下的指令然後按下 Enter 鍵。

:%! xxd

編輯後如果要轉回原來的格式,一樣使用外部工具程式 xxd

:%! xxd -r

如果編輯後要存檔,使用 VIM 的儲存檔案指令 :w

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。