2009-11-26 62 views
11

如果我做以下兩種的:如何打開vim腳本中的搜索高亮顯示?

call search("searchString") 

exec "/ searchString" 

從腳本,然後VIM進行搜索,但沒有突出的成績,即使hlsearch。從腳本外部進行相同的搜索會突出顯示結果。

+0

我剛剛找到答案自己..總是這樣。這裏是: 來電搜索(l:searchString) call matchadd('Search',l:searchString) – crelbor 2009-11-26 13:11:25

+0

請在這裏添加您的答案作爲真實答案。當你真的在尋找答案時,很難發現評論。 – innaM 2009-11-26 13:13:05

回答

9

剛剛發現出自我的答案:

call search(l:searchString) 
call matchadd('Search', l:searchString) 
+2

這是否允許在下一個/上一個匹配中正常使用n/N? – alesplin 2010-02-12 18:02:56

+0

這真的有幫助! – Life 2016-06-27 20:39:11

+0

@alesplin:[This](https://stackoverflow.com/questions/1803539/how-do-i-turn-on-search-highlighting-from-a-vim-script/47746577#14087567)回答下面說不是。我發佈了一個[解決方案](https://stackoverflow.com/questions/1803539/how-do-i-turn-on-search-highlighting-from-a-vim-script/47746577#47746577)。 – 2017-12-11 05:02:38

-3

你需要把你的.vimrc文件文件

" Switch syntax highlighting on, when the terminal has colors 
" Also switch on highlighting the last used search pattern. 
if &t_Co > 2 || has("gui_running") 
    syntax on 
    set hlsearch 
endif 

的.vimrc文件通常位於你的主目錄,或者你可以找到它使用「定位的.vimrc」

+1

這是關於vim中的腳本,而不是突出顯示搜索和語法高亮。 – crelbor 2009-11-26 13:10:44

1

我知道這是晚了。但是當我搜索這個問題的答案時,這個頁面出現了。所以我覺得不得不幫助解決它。

調用搜索(L:搜索字符串)

呼叫matchadd( '搜索',L:搜索字符串)

並沒有爲我工作。 (當從一個函數內部運行時)它對我想要搜索的詞做了很大的努力,但是n/N不會在它們之間循環。另外,當我執行新搜索時,「l:serachStirng」模式仍然保持突出顯示。此鏈接這個答案的工作好得多

Vim search and highlighting control from a script

這給了我:

讓@/= 1:搜索字符串

然後運行

法線n

的功能可按外面(這樣的突出顯示,而不需要用戶輸入n立即進行)

1

要開啓,按ESC類型:set hls

要關閉,按ESC類型:set nohls

+0

-1:從腳本中不能按需使用。 – 2018-01-23 19:43:04

1

feedkeys()

功能是關鍵(雙關語意):

call feedkeys("/pattern\<CR>") 

或清潔器:

" highlights – or doesn’t – according to 'hlsearch' option 
function SearcH(pattern) 
    let @/ = a:pattern 
    call feedkeys("/\<CR>") 
endfunction 
相關問題