Solaris
Solaris 2.5.0 上的 VI v4.0 是否有命令歷史記錄
我通常使用 VIM,但必須擺弄 VI 中的文件。Solaris 2.5 上的 vi 是否有我可以回憶起重用命令的歷史記錄?有時重新輸入完整的行會很痛苦。在 VIM 中,我可以使用 ESC、ESC、向上箭頭。
不,遺憾的是 SVR4 版本中不支持歷史記錄
vi
。請注意,它不是
vi
版本 4,而是“版本 SVR4.0,Solaris 2.5.0”。這個版本字元串是硬編碼的,即使在最近的版本中也有報告(Solaris 2.5 大約有 18 年的歷史)。從 Solaris 11 開始,
vim
與作業系統捆綁在一起。
如果這足以滿足您的需要,則可以將擊鍵
vi
作為宏重放。這可以通過兩種方式完成。在這兩種情況下,我都會以類似的內容為開頭
vim
,然后區分vi
.1.註冊宏
這些被擷取並以互動方式重放。
1.1 維姆
回想一下,
vim
在記錄模式下(從命令模式到達),通過將一系列擊鍵記錄到寄存器來創建宏。然後通過執行寄存器的內容來執行宏。qa # 1. Enter recording mode, will save to register "a. ihello<esc> # Type key strokes to insert string "hello". q # Return to command mode. @a # 2. Execute contents of register "a (insert "hello"). @@ # 3. Repeat last macro execution (insert "hello").
當問題被問到時,這些步驟不會在 中使用
vim
,而是您將使用應用程序的命令歷史記錄。1.2 六
在
vi
中,上面的步驟 1. 以不同的方式執行:宏內容必須以插入模式輸入緩衝區,然後將其拉入/複製/等到寄存器中。i # 1a. Enter insert mode. ihello<ctrl-v><esc> # Type key strokes to insert string "hello", escaping necessary keys. <esc> # Return to command mode. "aY # 1b. Yank entire line to register "a (macro text should appear on a line by itself). @a # 2. Execute contents of register "a (insert "hello"). @@ # 3. Repeat last macro execution (insert "hello").
- 按鍵映射 =======
這些可以以互動方式或在適當的
*rc
文件中擷取。執行映射時,兩者都
vim
等待vi
1 秒(預設)以接受構成映射單詞的所有擊鍵。2.1 維姆
:cmap lhs rhs<enter> # Map rhs-words to lhs-word for command-mode mappings. :imap lhs rhs<enter> # for insert-mode mappings. :map! lhs rhs<enter> # for command- and insert-mode mappings. :map lhs rhs<enter> # for normal-mode mappings. :nmap lhs rhs<enter> # for strict normal-mode mappings. # Escape necessary keys in lhs and rhs. # lhs "#n" means function key "n" # Use vim's extensive symbolic key names. :vmap # Other variants :xmap :smap :omap :lmap :unmap lhs # Remove map :nunmap # Other variants :vunmap :xunmap :sunmap :ounmap :unmap! :iunmap :lunmap :cunmap
2.1.1 範例
利用的符號鍵名使
q
鍵寫入並退出編輯器。vim
:nmap q :wq<CR><enter> # <CR> is typed as 4 chars, <enter> as 1.
2.2 六
:map lhs rhs<enter> # Map rhs-words to lhs-word for command-mode mappings. :map! lhs rhs<enter> # for insert-mode mappings. # Escape necessary keys in lhs and rhs. # lhs "#n" means function key "n" :unmap lhs # Remove map
2.2.1 範例
使
q
密鑰寫入並退出編輯器。:map q :wq<ctrl-v><enter><enter>
參考