簡體   English   中英

Easy Motion Vim插件映射問題

[英]Easy motion vim plugin mapping issue

我已經安裝了vim EasyMotion插件。

緊迫,

<Leader><Leader>f從當前行向前搜索。
<Leader><Leader>F從當前行向后搜索。

有沒有一種方法可以僅使用“ f”來搜索緩沖區的整個可見部分? 理想情況下,我不想使用兩個不同的綁定來向前和向后搜索。 一個單一的綁定來搜索緩沖區的整個可見部分將是最理想的。

您可以嘗試這樣的映射:

nnoremap <leader><leader>f :execute "/\\\\%>" . line('w0') . "1\\\\%<" . line('w$') . "l"<left>

那是一個令人困惑的語法,所以我將其解壓縮。

line('w0')line('w$')返回緩沖區中第一行和最后一行可見行的行號,因此您可以使用它們來查找可見部分的范圍。

/ search命令允許指定范圍,但語法為奇數。 格式為/\\%>Xl\\%<Yl ,其中X是開始的行,Y是結束的行。

不可能僅將結果從line()放到常規/調用中,但是我們可以使用來構建一個字符串. 將段連接在一起,並在構建命令后將其傳遞給:exec以使其實現。

最后是<left> 那是為了光標定位。 當您執行<leader><leader>f ,整個映射將像您在鍵入時一樣觸發,因此您在該行中以完整的:exec命令結尾,並以“結尾”,但您想在那些內部鍵入另外,您可以從映射的末尾刪除"<left> ,但是隨后您必須記住在鍵入搜索詞后要關閉引號。

我不熟悉EasyMotion,因此這可能無法完全滿足您的要求(輸入答案后我就意識到了這一點),但是它只能讓您在緩沖區的當前可見部分運行搜索,並且您可以輕松地將其適應EasyMotion的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM