使用vim内建函数findfile()笔记

findfile()类似find命令, 可以快速查找文件. 它接受三个参数: (被搜索的)文件名, 搜索路径(与搜索方式)与匹配次数(-1为不限次数). 返回值是一个包含给定匹配次数的文件列表.
例如平时工作时需要在头文件与源文件之间快速切换, 而两者又不在统一目录, 那么可以使用以下代码:

 1 nnoremap <leader>% :call FindHeader()<CR>
 2 function! FindHeader()
 3  let targetfile = ""
 4  if expand("%:e") == "h"
 5   let targetfile = expand("%:t:r").".cpp"
 6  else
 7   let targetfile = expand("%:t:r").".h"
 8  endif
 9  for onefile in findfile(targetfile, "**", -1)
10   silent exe ":e ".onefile
11  endfor
12 endfunction

 

使用findfile()时需要注意它的搜索方式: downward / upward / combile. 关于搜索方式建议使用:h file-searching查看详细说明. 我的理解如下:
downward search时通配符*与**起效(分别匹配文件basename与dirname). 类似shell中通配符无需加.(*即.*), 此外可以使用**n指定搜索目录层数(最大n层目录).
upward search时使用;指定向上搜索的截止目录, 如果有多个截止目录则用多个;隔开, 没有截止目录则使用;(没有;则不使用upward search).
当搜索路径中既包含通配符又包含;时使用combine search模式, 会同时向上向下搜索(此时搜索目录最为复杂).
举例当前vim工作目录为~且包含123与456两个子目录:
findfile(file, "*", -1)仅在~下搜索文件file.
findfile(file, "**", -1)在~及其子目录下搜索文件file.
findfile(file, ";", -1)从~开始向上搜索至根目录, 查找文件file.
findfile(file, "/home;", -1)从~开始向上搜索至/home目录, 查找文件file.

转载于:https://www.cnblogs.com/Five100Miles/p/9834004.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到,可以使用管道符将参数传递给函数,这样可以方便地使用多个函数对数据进行链式处理。引用中介绍了两个内置函数upper和lower,分别可以将字符串转换为大写和小写字母的样式。引用中还提到了两个内置函数quote和squote,可以将参数(调用的变量值)分别添加双引号和单引号。 在vim中,内置函数可以嵌套使用,可以将一个函数的输出作为另一个函数的参数。例如,可以将upper函数嵌套在quote函数中来同时将字符串转换为大写并添加双引号。 以下是一个使用内置函数嵌套的示例: ``` # vim /root/mychart/values.yaml # 定义变量和赋值 name: example # vim /root/mychart/templates/configmap.yaml # 编写一个自己需要的模板文件,调用values.yaml的变量,并使用内置函数嵌套 apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap namespace: {{ .Release.Namespace }} data: value1: {{ .Values.name | upper | quote }} # 调用的变量值转成大写并添加双引号 value2: {{ .Values.name | lower | squote }} # 调用的变量值转成小写并添加单引号 # helm install myconfigmap1 ./mychart/ --debug --dry-run # 不真正执行,只是试运行看是否能运行 NAME: myconfigmap1 LAST DEPLOYED: Mon May 15 15:28:42 2023 NAMESPACE: default STATUS: pending-install REVISION: 1 ... # Source: mychart/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: myconfigmap1-configmap namespace: default data: value1: "EXAMPLE" # 调用的变量值转成大写并添加双引号 value2: 'example' # 调用的变量值转成小写并添加单引号 ``` 这样,使用了内置函数嵌套后,变量值被转换为大写并添加了双引号,或者被转换为小写并添加了单引号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值