Solaris

Solaris 2.5.0 上的 VI v4.0 是否有命令歷史記錄

  • February 28, 2017

我通常使用 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").
  1. 按鍵映射 =======

這些可以以互動方式或在適當的*rc文件中擷取。

執行映射時,兩者都vim等待vi1 秒(預設)以接受構成映射單詞的所有擊鍵。

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>

參考

  1. vim文件,例如:here
  2. **使用 Vi 進行顯示編輯的介紹,**作者為vi,例如:this PDF

引用自:https://unix.stackexchange.com/questions/157719