Vim

如何將搜尋限制在目前行

  • August 21, 2018

我正在嘗試編寫一個映射,讓我在插入模式下移動一行中的“常見”插入點。例如,我有 delimitMate 外掛 - 因此鍵入一個開始分隔符會自動關閉分隔符並將我置於兩者之間。一旦我輸入了裡面的文本,我通常想跳到分隔符的末尾並保持插入模式。向前推進,對於如下所示的功能

$("#someid").live("someevent", function (param1, param2) {

我想要的是一個插入模式映射,它可以讓我跳到以下任何分隔符字元(引號、雙引號、括號和/或 EOL)中的第一個之後,並在這些點上循環。

檢查 VIM 文件以進行搜尋 - %l 運算符允許限制特定的行號。我試過 %.l (。是目前行) - 但這不起作用。有任何想法嗎?

:exe  "/\\%" . line(".") . "l[{}()\"':=\\[\\],]"

似乎有效 - 但不會將游標移動到匹配項。

得到這個與以下工作。

inoremap <C-e> <C-o>:call search("\\%" . line(".") . "l[{}():=\\[\\]\.,]","We")<cr>

這會將游標移動到目前行上的匹配項,但有兩件事不能很好地工作:

  1. 每次按鍵都會停頓很久
  2. 它讓我在匹配字元之前進入 Ins 模式,而不是在我想要的之後。

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