我已經安裝了vim EasyMotion插件。從當前行Easy Motion vim插件映射問題
壓制,
<Leader><Leader>f
向前搜索。
<Leader><Leader>F
從當前行向後搜索。
有沒有辦法只用'f'搜索緩衝區的整個可見部分?理想情況下,我不希望使用兩種不同的綁定來向前搜索和向後搜索。一個單一的綁定來搜索緩衝區的整個可見部分將是最理想的。
我已經安裝了vim EasyMotion插件。從當前行Easy Motion vim插件映射問題
壓制,
<Leader><Leader>f
向前搜索。
<Leader><Leader>F
從當前行向後搜索。
有沒有辦法只用'f'搜索緩衝區的整個可見部分?理想情況下,我不希望使用兩種不同的綁定來向前搜索和向後搜索。一個單一的綁定來搜索緩衝區的整個可見部分將是最理想的。
你可以嘗試這樣的映射:
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的目的,不會有太大困難。
的EasyMotion的問題跟蹤器是[在那裏](https://github.com/Lokaltog/VIM-的EasyMotion /問題)。 –
感謝您的寶貴意見。這很有幫助。真的是。 – Jay