0
有誰知道如何使用match()
創建向後搜索字符串?向後搜索字符串
word1 word2 word3 word4
^
(^
=光標位置)
我想找到光標(字詞)前的單詞的開始和結束列。
我想這正則表達式沒有成功:
match(getline('.'), '?\w\ze\s', col('.')-1)
是否?
不是一個字符串工作向後搜索
有誰知道如何使用match()
創建向後搜索字符串?向後搜索字符串
word1 word2 word3 word4
^
(^
=光標位置)
我想找到光標(字詞)前的單詞的開始和結束列。
我想這正則表達式沒有成功:
match(getline('.'), '?\w\ze\s', col('.')-1)
是否?
不是一個字符串工作向後搜索
你混淆了正常的命令?
與功能match()
這對字符串工作。你實際上正在尋找的是searchpos()
函數,它在緩衝區中搜索一些模式,並讓你返回位置。
let [start_line, start_col] = searchpos('\<\w\+\>', 'bn')
let [end_line, end_col] = searchpos('\<\w\+\>', 'bne')
這些標誌的含義如下:
b
向後n
不移動光標e
使用比賽結束作爲返回的位置請參閱以下內容瞭解更多信息:
:h search(
:h searchpos(
非常感謝。我試過了searchpos()。我注意到,如果這個字符位於一個單詞的末尾(與search()相同的問題),它不會識別字符爲[èéìòù]。這就是爲什麼我切換到match()/ matchend()。 – Reman 2014-11-06 20:06:14
你可以使用字符類。例如'[[:alnum:] _] \ +'。有關更多信息,請參閱':h/[]'。 – 2014-11-06 20:18:09