如何在vim脚本中获得两个字符之间的单词?

wfypjpf4  于 2023-03-18  发布在  其他
关注(0)|答案(1)|浏览(161)

我的光标在单词<header>上。
如果我运行函数expand("<cword>"),它会返回我想要的单词<header>,只得到<>header之间的内容。
我想写一个有三个参数的函数

foo(string, startChar, endChar)

并返回startCharendChar之间的字符。
你能帮忙吗?

lrl1mhuk

lrl1mhuk1#

在研究了一个答案之后,我找到了一个答案,答案是默认情况下expand('<cword>')返回特殊字符之间的单词,如“〈”或“”......但如果我想获得两个索引之间的字符组,我们可以编写一个函数来完成这项工作

function Get_string_between(string, start, end)
  let str=""
  "get length of string
  let len =strlen(a:string)

  "set the default values o start and end indexes to 0
  let startIndex=0
  let endIndex=0

"Get the index of start and end characters
  let i =0
  while i < len
    if a:string[i]  == a:start && startIndex == 0
      let startIndex =i
    elseif a:string[i] == a:end && endIndex == 0
      let endIndex =i
    endif
    let i += 1
  endwhile
  echo "StartIndex: ". startIndex
  echo "endIndex: ". endIndex

  let i =startIndex+1

  while i < endIndex
    let str .= a:string[i]
    let i +=1
  endwhile
  return str
endfunction

相关问题