2013-09-23 42 views

回答

1

我不確定這是否可以接受。 你可以離開光標放在您要搜索的是線,然後按:

/<c-r>=getline('.')<cr> 

Y/<c-r>"<BS><cr> 

:let @/=getline('.')<cr> 

的想法是一樣的,行復制到/搜索。但是,這將不會對而是適用於所有情況,例如,你的行包含一個「正則表達式」:

aaa.*foo (cursor here) 
aaabbfoo 
aaa.*foo 

vim將匹配所有三行。

注意,你可能想包裝行文本^$以獲得更好的結果。

+0

很酷。我猜,我可以很容易地將它分配給一個快捷鍵。 – Thruston

+0

因此'nmap / = getline('。')'似乎工作正常。爲什麼我需要2 s雖然我想知道? – Thruston

+0

@Thruston一個結束''和一個結束'/' – FDinoff

1

有這個沒有預定義命令,但你可以做這樣的事情:

:map <F7> 0v$hy/\V<C-R>"<CR> 

命令的第一部分,整條生產線複製到默認的寄存器,而第二部分執行它的搜索。 然後,只需在正常模式下按F7,這就是所有人。

另外一個我愛:

:map µ yiw:vim /<bslash><lt><C-R>"<bslash>>/ *<CR> 

它擴展了「*」在當前目錄下的所有文件進行搜索。

0

肯特答案稍微修改後的版本應該始終有效,不會被特殊符號混淆。 (即刺痛是什麼也沒有解釋爲正則表達式匹配字面上)

/\V\^<c-r>=escape(getline('.'), '\')<cr>\$ 

\V開啓非常nomagic意味着,唯一的特殊字符是反斜槓。我們使用轉義函數來逃避所有的反斜槓(由於英戈Karkat)

或者在映射

:nnoremap <silent> ,* /\V\^<c-r>=escape(getline('.'), '\')<cr>\$<cr> 
+0

您可以使用內置的'逃生(函數getline( ''), '\')',而不是'替代()'。 –

0

有幾個插件,擴展*命令在視覺模式選擇工作;其中之一是我的SearchHighlighting plugin。 (該插件頁面有鏈接到替代插件。)

因此,搜索當前行是一個快速V*(轉到線性視覺模式,搜索選擇)。

相關問題