如何進入插入模式將我寫的第一個字母大寫?

如何進入插入模式將我寫的第一個字母大寫?

我正在執行一項重複性任務,我在其中一個 F 鍵中定義了一個宏,但每次執行該宏時我仍然必須按住 Shift 鍵才能鍵入第一個字母。我想知道是否也可以將其包含在巨集中,但我對實現此目的的方法的搜尋沒有結果。

進入插入模式的方法有很多種,與遊標在文字中的位置有關。但是我可以定義一個宏,將進入插入模式後寫入的第一個字母大寫,僅此而已嗎?

答案1

嗯,這是一個有點棘手的解決方案,但它似乎有效。我不太確定你想如何映射它,所以我<leader>i在我的範例中將它映射到。請隨意將其更改為您喜歡的任何內容。

function! Icap()
  augroup icap
    au InsertLeave * exec "normal! \<C-o>gUlgi\<esc>:augroup icap | au! | augroup END\<cr>"
    au InsertEnter * exec "normal! m`"
  augroup END
endfunction

nnoremap <leader>i :call Icap()<cr>i

它的作用是定義一個函數“Icap”(“插入大寫”的縮寫),該函數設定兩個自動命令。第一個自動命令是在進入插入模式之前:

然後在呼叫 foo 後,並在離開插入模式後立即發生以下情況:

  • Vim 類型<C-o>gUl.這將跳到跳轉列表中的上一個位置,並將遊標下的字元轉換為大寫。之後,vim 鍵入gi<esc>.這是一種讓遊標回到之前位置的巧妙方法。理論上,<C-i>應該可行,但當我測試它時,我遇到了奇怪的問題。

  • Vim 刪除屬於函數的每個自動指令。這是為了防止將來的插入模式變更進行您不想要的奇怪編輯。

您也可以進行以下映射:

nnoremap <leader>i :call Icap()<cr>

然後,您可以使用其他命令進入插入模式(caIos等),並且仍然會產生大寫副作用。

相關內容