2013-09-24 56 views
0

我已經安裝了vim EasyMotion插件。從當前行Easy Motion vim插件映射問題

壓制,

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

有沒有辦法只用'f'搜索緩衝區的整個可見部分?理想情況下,我不希望使用兩種不同的綁定來向前搜索和向後搜索。一個單一的綁定來搜索緩衝區的整個可見部分將是最理想的。

+2

的EasyMotion的問題跟蹤器是[在那裏](https://github.com/Lokaltog/VIM-的EasyMotion /問題)。 –

+0

感謝您的寶貴意見。這很有幫助。真的是。 – Jay

回答

0

你可以嘗試這樣的映射:

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

這是一個令人困惑的語法,所以我就解開它。

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

/搜索命令允許指定的範圍內,但與奇數語法。格式爲/\%>Xl\%<Yl,其中X爲起始行,Y爲結束行。

這是不可能從line()結果只是下降到正常/調用,但我們可以建立一個字符串,使用.加入段一起,一旦命令被建成,在將它傳遞給:exec做到這一點。

最後,還有的<left>。這是光標定位。當你執行<leader><leader>f時,整個映射就像你在鍵入它一樣觸發,所以你最終得到了完整的:exec命令,並以「」結尾,但你想在那些引號內鍵入內容。 "<left>從映射的末尾開始,但是您必須記得在輸入搜索詞後關閉報價。

我對EasyMotion並不熟悉,所以這可能並不能完全滿足您的要求(我意識到這一點後,我打完了答案),但是它會讓你運行在只有一個緩衝的當前可見部分的搜索,你或許可以使其適應在EasyMotion的目的,不會有太大困難。