首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何创建目录搜索并替换为vimscript和fzf

创建目录搜索并替换为vimscript和fzf的方法如下:

  1. 首先,确保你已经安装了Vim和fzf插件。Vim是一款强大的文本编辑器,而fzf是一个快速的模糊搜索工具。
  2. 打开Vim,并进入命令模式。输入以下命令创建一个新的vimscript文件:
代码语言:txt
复制

:new ~/.vimrc

代码语言:txt
复制

这将创建一个名为.vimrc的文件,用于存储Vim的配置。

  1. 在.vimrc文件中,添加以下内容来定义一个自定义的Vim函数,用于目录搜索和替换:
代码语言:vim
复制

function! SearchAndReplace(directory, pattern, replacement)

代码语言:txt
复制
   let old_directory = getcwd()
代码语言:txt
复制
   silent execute 'cd ' . a:directory
代码语言:txt
复制
   cexpr 'grep -rI --exclude-dir={.git,.svn} --exclude=*.{png,jpg,mp4} -l "' . a:pattern . '" .'
代码语言:txt
复制
   let search_results = []
代码语言:txt
复制
   for file in split(getqflist({'bufnr': 0}), '\n')
代码语言:txt
复制
       if file != ''
代码语言:txt
复制
           call add(search_results, file)
代码语言:txt
复制
       endif
代码语言:txt
复制
   endfor
代码语言:txt
复制
   cclose
代码语言:txt
复制
   silent execute 'cd ' . old_directory
代码语言:txt
复制
   for file in search_results
代码语言:txt
复制
       execute 'bufdo %s/' . a:pattern . '/' . a:replacement . '/g | update'
代码语言:txt
复制
   endfor

endfunction

代码语言:txt
复制

这个函数将在指定的目录中递归搜索匹配的文件,并将匹配的内容替换为指定的内容。

  1. 保存并关闭.vimrc文件。
  2. 在Vim中,输入以下命令来加载.vimrc文件中定义的函数:
代码语言:txt
复制

:source ~/.vimrc

代码语言:txt
复制
  1. 现在,你可以使用以下命令来调用刚刚定义的函数,并指定目录、搜索模式和替换内容:
代码语言:txt
复制

:call SearchAndReplace('/path/to/directory', 'search_pattern', 'replacement')

代码语言:txt
复制

/path/to/directory替换为你要搜索的目录路径,search_pattern替换为你要搜索的模式,replacement替换为你要替换的内容。

例如,如果你想在/home/user/project目录中搜索所有包含"foo"的文本,并将其替换为"bar",你可以使用以下命令:

代码语言:txt
复制

:call SearchAndReplace('/home/user/project', 'foo', 'bar')

代码语言:txt
复制

这将在指定目录中搜索匹配的文件,并将所有匹配的"foo"替换为"bar"。

这是使用vimscript和fzf创建目录搜索和替换的基本方法。Vimscript是Vim的脚本语言,可以用于自定义和扩展Vim的功能。fzf是一个快速的模糊搜索工具,可以帮助你快速定位和操作文件。通过结合这两个工具,你可以方便地进行目录搜索和替换操作。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一文了解十大 Linux 命令行工具!

▌1.grep => ack, ag ackag是两个文本搜索工具,比自带的grep要好用得多。...在指定目录搜索文本时,它们不需要像grep那样指定各种命令行选项,输出结果也会包含文件名行号,并且会高亮显示搜索关键字。 两者的基本功能很相似,所以可以任选一个安装。...如果你的环境中F1~F10无法使用(比如通过终端模拟器使用mc,而功能键被绑定到了菜单上),那么可以使用Esc -> 0~9代。 ?...与系统自带的ftp相比,lftp支持mputmget命令,可以用通配符上传下载文件,还有强大的mirror命令可以下载或上传整个目录。...▌10.nnn:文件分析工具 磁盘空间紧张时我经常会用du -sh *命令找出占用空间很大的文件目录删除它们。nnn可以做得更好。只需执行nnn然后按大写的S,即可看到所有目录和文件的大小。 ?

1.4K10

vim-plug:简洁高效的Vim插件管理工具

安装 安装vim-plug很简单,下载plugin.vim到~/.vim/autoload目录即可,可以使用下面的一行命令来下载: curl -fLo ~/.vim/autoload/plug.vim...使用 vim-plu通过在~/.vimrc中增加call plugin#begin()call plugin#end()来定义管理插件,插件以Plug 'github_url'形式来描述, 格式如下...Plug 'https://github.com/junegunn/vim-github-dashboard.git' # 简写形式,只写username/repo即可 Plug 'junegunn/fzf...就这样,大功告成了,下面要做的就是探索各种强大或神奇的Vim插件了,这个可以通过搜索引擎搜索或在GitHub搜索或者找博客和文章发现自己想要的。...call plug#begin() Plug 'W0rp/ale' call plug#end() let g:ale_linters = {'python': ['flake8']} 最后的let语句是Vimscript

1.6K20

终极 vim 配置: space-vim

, 最好的编辑器既不是 Emacs 也不是 Vim, 而是 Emacs Vim! 所以不管是从实用角度,还是从设计概念,操作哲学的角度,这两个都是非常值得学习的。...首次安装 space-vim 时,.spacevim 会在当前用户目录默认生成,其中主要有两个函数: " Put layers you want to enable as well as extra...color gruvbox endfunction 此外, private 可以看做是一个 Layer ,如果个人配置比较多,可以放在这里, private 目录可以有...Layer 的两个 "标准" 文件, space-vim 也会进行加载: packages.vim config.vim 如何贡献 完善,增加 Layer....当然啦,可能很多人觉得 vimscript 没有 lisp 那么有表现力,稍显蹩脚。Anyway, 都是工具,乐趣而已。如果能够集思广益,也是利己利人。

1.9K20

如何让 Vim 美观又实用(1)

有些内容我虽然给出了链接,但是可能并没有完整贴出代码,需要你自行查找,理解抽取整合对自己有用的地方。...有了项目根目录以后,我们就能够以项目为单位进行各种查找搜索等等。比如,由于 fzf 的一些命令,比如 Ag 默认是在当前目录下进行,实际就变成了在项目根目录搜索。...当然了,也可以显式参考 space-vim 的 fzf 配置 指定 fzf Ag 的搜索目录: call fzf#vim#ag(a:query, extend({ \ 'dir': spacevim...这里提几个建议: 指定项目目录,缩小查找范围,比如 :FZF ~/.vim/plugged。不要上来就 :FZF 默认在用户目录下查找,那自然是候选项非常多。...今天就先讲这么多了,下一篇可能更多讲讲如何配置更美观的一些小细节。因为我高中是学美术的,大学也在传播学院呆过一年多,所以对审美有一定要求,对死板的界面实在看不下去 :(。

1.3K20

GitHub日收12000星,六个命令行工具引爆程序员圈!

当你打开一个小目录想要查看land的位置,那么tree功能可以优秀地完成这点。...当进入目录时,DirEnv会加载卸载.env文件;这点smartcd类似。它允许在更改到特定路径时运行shell脚本——这让用户可以启动停止服务,更改提示符,或任何用户想要的内容。...这意味着,当我进入这个Jekyll博客(一个ruby开发的博客系统)的目录时,我已经加载了新的别名,用于创建新文章、检查标记、拉入图像等等。...FZF还可以更快地搜索历史记录。 它是一个UNIX过滤器,它读取输入,显示一个可向下过滤的交互式列表,然后将选中的项发送到另一端,但这种描述低估了它的用处。...Gitupdate可以提交文件,使用更改文件的文件名(而不是扩展名)来创建更有意义的提交消息。当提交消息不重要时,它非常有用。 ? GitUpdate生成提交消息、提交推送。

46920

linuxunix 上那些炫酷的命令行工具(一)

所有的命令行工具可以生成列表输出的都可以再通过管道 pipe 到 fzf 上进行搜索查找 我们简单介绍一下它的查找历史命令的功能,查看历史输入的终端命令我们一般用 ctrl+r,在这方面,fzf 可以说是秒杀...ctrl+r了,ctrl+r 只能呼出最近一条包含输入字符串的历史命令,而且只能做精确匹配,而安装了 fzf 后,当呼出 ctrl+r 会显示所有包含输入字符串的命令(默认匹配最近一条符合搜索条件的命令...),按上下箭头即可自由选择你想要的命令,而且支持模糊搜索,这个特性针对那些常常只是隐约记得历史命令的人特别有用,比如如果我隐约记得有个命令 git,finance 有关,我可以这么搜 ?...我们一般用 du 来查找某个目录占用了多少磁盘空间,但如果我们需要查看这个目录下的子目录/文件占用了多少空间对其进行排序 du 就无能为力了,而用 ncdu 的话我们只要在目录输入此命令即可显示按空间大小降序排序的所有文件...另外也可删除文件,可以在选中子目录时执行相当于 cd 到此子目录的命令(此时会退出 ncdu , cd 到此子目录)。

1.3K20

14 款命令行常用工具的替代品!

broot 的特征: 获得一个目录的概览、甚至是一个大目录 找到一个目录然后 cd 搜索时永远不会丢失文件层次的结构 操作文件、管理文件、预览文件 将标准或个人快捷方式应用于文件 替代 ls 排序看看占用空间...# br -sdph -s:显示文件大小 -d:显示文件时间 -p:显示文件权限 -h:显示隐藏文件 从上述结果可以看出,broot 默认是以树状结构展开子目录,在该界面中,可以完成搜索(输入关键词...-type f | fzf 五、ripgrep (rg) ripgrep (rg)[8]是 grep 命令的替代品,它是一种面向行的搜索工具,递归地在当前目录搜索正则表达式模式,支持在 Windows...从时间上来看 ripgrep 搜索时间相比是最快的。 除此之外,ripgrep 默认过滤、更少的错误、Unicode 支持、带有行号搜索词高亮。...httpie 的目标是使 CLI 与 Web 服务的交互尽可能的人性化,用于测试、调试以及通常与 API HTTP 服务器交互,允许 http https 命令创建和发送任意 HTTP 请求,从而使用简单的语法

1.5K10

我私藏的那些实用的终端命令行工具

我通过 fish fzf 插件插件使用它,因此我可以搜索命令历史记录或快速打开文件。这是可以每天为我节省不少时间的一个非常棒的工具。...https://github.com/jethrokuan/fzf 下载地址:https://github.com/junegunn/fzf 5fd 上面动图是 find 命令(左) fd 命令(右...默认情况下,fd 会忽略隐藏的以及在.gitignore列出的文件目录。...如果你想了解有关 Python 工具的更多信息想了解如何使用它们,我为 PyCon 2020 会议制作了一个名为“现代 Python 开发人员工具包”的视频。...它色彩艳丽,还可以显示 git 状态等其他信息,自动将文件大小转换为方便人们阅读的单位,并且所有这些都保持与ls几乎相同的执行速度。

1.4K20

22款好用的CLI工具

我通过 fish fzf 插件插件使用它,因此我可以搜索命令历史记录或快速打开文件。这是可以每天为我节省不少时间的一个非常棒的工具。...https://github.com/jethrokuan/fzf 下载地址:https://github.com/junegunn/fzf 5fd 上面动图是 find 命令(左) fd 命令(右)...默认情况下,fd 会忽略隐藏的以及在.gitignore列出的文件目录。...如果你想了解有关 Python 工具的更多信息想了解如何使用它们,我为 PyCon 2020 会议制作了一个名为“现代 Python 开发人员工具包”的视频。...它色彩艳丽,还可以显示 git 状态等其他信息,自动将文件大小转换为方便人们阅读的单位,并且所有这些都保持与ls几乎相同的执行速度。

2.1K30

从零开始配置 vim(9)——初始配置

我们先经过几篇文章了解了下面的几个内容 如何设置vim属性,从而改变vim的特征 配置快捷键,以提高我们的使用效率 使用自动命令,以便使用vim来自动化我们的相关操作 这些既有vimscript的东西...当然关于vim我们还有很多内容没有讲,例如该如何自定义命令,如何弹出一个窗口,以及到最后如何编写自己的插件。...我随教程创建了一个 github仓库用于保存记录每次的配置,各位小伙伴可以克隆下来,也可以自己按照上面的目录结构和文章所描述的自己一步步手动组织。仓库地址: nvimrc-tutorial 。...vim.o.incsearch = true -- 开启搜索匹配高亮 vim.o.hlsearch = true -- 搜索时自行判断是否需要忽略大小写 vim.o.smartcase = true...-- tab键转换为 4 个空格 vim.o.tabstop = 4 vim.o.softtabstop = 4 vim.o.shiftwidth = 4 -- 新行对齐当前行,tab转换为空格 vim.o.expandtab

1.1K10

25 个 Linux 下最炫酷又强大的命令行神器,你用过其中哪几个呢?

FZF ? FZF 是使用 GO 语言开发的一款命令行下支持模糊搜索的交互式工具。FZF 可以用来查找任何列表内容,包括文件、Git 分支、进程等。...所有的命令行工具都可以生成列表后再通过管道将结果输入到 FZF 上进行模糊搜索FZF 还可以结合其它工具(比如:rg、bat Fasd )来完成更多的工作。...ShellCheck 是一款实用的 Shell 脚本静态检查工具,可以帮助你提前发现修复语法错误以及不规范的写法。...其提供了一个简单的 HTTP 环境来让我们通过简单而自然的语法发送任意 HTTP 请求,显示彩色输出。HTTPie 可用于测试,调试与 HTTP 服务器进行普通的交互。...项目地址: http://httpie.org/ 更多详细介绍可参考:「如何用 HTTPie 更高效的调试接口」 一文。 21. HTTP Prompt ?

2.6K30

25 个 Linux 下最炫酷又强大的命令行神器,你用过其中哪几个呢?

FZF FZF 是使用 GO 语言开发的一款命令行下支持模糊搜索的交互式工具。FZF 可以用来查找任何列表内容,包括文件、Git 分支、进程等。...所有的命令行工具都可以生成列表后再通过管道将结果输入到 FZF 上进行模糊搜索FZF 还可以结合其它工具(比如:rg、bat Fasd )来完成更多的工作。...项目地址: https://github.com/marionebl/svg-term-cli 来看一个实例:将通过 Asciinema 在终端录制的视频转换为 SVG 文件。...其提供了一个简单的 HTTP 环境来让我们通过简单而自然的语法发送任意 HTTP 请求,显示彩色输出。HTTPie 可用于测试,调试与 HTTP 服务器进行普通的交互。...项目地址: http://httpie.org/ 更多详细介绍可参考:「如何用 HTTPie 更高效的调试接口」 一文。 21.

1.6K10

初探在WSL中设置vim前端开发环境

安装 neovim 插件管理器 # coc等插件只支持0.3及以上的版本,因此需要安装unstable版 sudo add-apt-repository ppa:neovim-ppa/unstable...', { 'dir': '~/.fzf', 'do': '....: Ctrl + N: 打开终端,多页签切换到终端时需要用iESC切换其输入状态 Alt + h\j\k\l: 在文件树分割页间切换焦点 :res+行数: 改变分割页的尺寸 :quitall: 多个...tab时一次性退出vim 文件搜索: Ctrl + P: 打开搜索页签,搜索选中目录 回车:在当前激活的窗口打开选中目录 Ctrl + T: 在新页签中打开 Ctrl + S: 在上下新分割页中打开...Ctrl + V: 在左右新分割页中打开 内容搜索 :Ag 文本内容: 搜索项目内包含文本内容的文件,快捷键同文件搜索 本文中的配置大抵只是个初始化的程度,要达到好用的效果,还希望大家动手探索、积极回复

2.1K10

vim 个性化设置

于是趁着这个机会学习应用一下vim的自定义函数以及一些常规操作。由于工作使用vim比较偏向于工厂环境,所以本文只针对vim本身做简单配置,未深入研究各插件。 vimscript 简介 ?...在Vimscript中,使用write实现文件保存功能。...vimscript 教程参考链接:http://learnvimscriptthehardway.onefloweroneworld.com/ 版本管控实现 注意看注释,vimscript 注释内容以"..." 文件浏览 " :Ex : 开启目录浏览器,注意首字母E是大写的 " :Sex : 在一个分割的窗口中开启目录浏览器 " :ls : 显示当前buffer的情况 " :cd .....: 进入父目录 " :pwd " :args : 显示目前打开的文件 " :lcd %:p:h : 更改到当前文件所在的目录 " 译释:lcd是紧紧改变当前窗口的工作路径,% 是代表当前文件的文件名

1.5K20

从零开始匹配vim(0)——vimscript 简介

关于配置部分,我准备介绍以下几个方面的内容: vimscript 的基础内容,补充一些之前没介绍过的vim的特性 neovim lua对应的接口 推荐一些插件相关配置,做到抛砖引玉 可能有小伙伴要问了...针对 neovim 来说它支持 vimscript lua 配置(当然它也支持其他语言)。我们将目录切换到 ~/.config/nvim 。如果各位小伙伴之前有过配置,那么请先将配置做一个备份。...同时确保 init.lua (lua配置) init.vim (vimscript 配置) 只能有一个 我们先尝试着用 vimscript 的方式来完成这个功能。...我们再来看看如何使用 lua 来打印这么一句话呢?lua 中对应的函数是 print 。...vim命令与 vimscript 的关系有点像 shell 命令 shell 脚本的关系

68620

Windows 下 wsl2 的使用及问题记录

适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具应用程序 - 且不会产生传统虚拟机或双启动设置开销。...对于安装运行 wsl2 已经绰绰有余。...我使用的是 clash ,这里说一下 clash 的代理如何在子系统中使用. 首先开启 clash 的 LAN 功能 ?...模糊查找工具,可以跳转到目录,快速定位目录,提供更易用的历史命令记录,还可以搭配 vim 使用 bat 一个类 cat 的工具,可以根据文件类型进行高亮显示,配合 fzf 可以预览文件内容高亮显示...fd-find 一个代替 find 的工具,更快,搭配 fzf ag 一个模糊搜索工具,这个主要根据文件内容进行匹配,搜索一些文本信息,同样可以搭配 fzf,vim cowsay 一个牛喊出你输入的参数

7.1K20

4款非常牛的Linux终端应用,thefuck尤其突出

可以杀死或发送信号给进程,观察进程的资源占用情况,根据需要进行操作。 网络监控:btop可以显示网络接口的实时流量,包括上传下载速度。这对于监视网络活动、识别网络瓶颈或检查连接是否正常非常有用。...还可以编辑该文件来自定义界面、指标颜色等设置。 第三款:fzf fzf 是一个 交互式的 可以用于任何列表,文件,命令行历史,进程,主机名等的模糊搜索神器。...它是一个在文件夹中找到所有内容的有用工具,能够搜索指定文件夹中的每个文件目录。 安装与使用 Mac OS安装: brew install fzf 然后,进入想要的文件夹。...cd documentation 要启用模糊查找器,运行: fzf 现在,你可以输入所需文件的名称,并且能够快速找到该文件。 这里正在搜索包含app.tsx的文件路径。...安装使用 Mac OS安装: brew install tldr 假设想在终端中使用grep命令,但忘记了如何使用不同的命令。

42210

10款好用到爆的Vim插件,你知道几个?

Volt是一个插件管理器,你可以通过它来安装插件创建名为“配置文件”的插件组合,Volt仍然相对较新,所以还不够完美(例如,每个插件只能有一个配置文件),但除此之外,我发现它非常方便、非常快、非常简单...该插件显示一个目录树,可以执行文件的操作命令。在大型项目中,你很难找到你要编辑的那一行的文件确切名称位置。...通过快捷键,一个资源管理器窗口就会以目录树的方式打开,你可以轻松找到你想要的文件打开它,假如你有大量代码或者容易忘记文件名的人,NERDTree是必须要有的 5. NERD Commenter ?...fzf是目前最快的fuzzy finder(模糊搜索神器),我经常用这个,使用它的次数已经超过了NERDTree,它适用于Fedora、DebianArch,不过它有个小缺点是在fzf二进制文件中有一个外部依赖项...当我需要搜索包含某一行或者某个单词的文件时,我就很喜欢ack插件,你最好把它ag结合使用,这是一个名为“The Silver Searcher”的全局搜索工具。

1.3K51
领券