shell - z 跳转相当于编辑文件?
问题描述
在我的情况下,是否有等效于 z 跳转以使用 vim 之类的终端编辑器打开大多数编辑过的文件?我浏览了 GitHub,但找不到任何东西。
解决方案
Vim 记住v:oldfiles
从文件加载的最近打开的~/.viminfo
文件。
自定义完成
使用fzf和custom-fuzzy-completion,我们可以更自然地从历史中搜索文件,vim **<TAB>
如下所示
# Custom fuzzy completion for "vim" command
# e.g. vim **<TAB>
_fzf_complete_vim() {
_fzf_complete --multi --reverse --prompt="vim> " -- "$@" < <(
cat ~/.viminfo | grep '^>' | sed 's/^> //'
)
}
在zsh
你很高兴去。在bash
中,您必须手动调用该complete
命令。
[ -n "$BASH" ] && complete -F _fzf_complete_vim -o default -o bashdefault vim
正如文档所说,自定义完成 API 是实验性的,可能会发生变化。
使用新命令的上一个答案
例如,我们可以从中读取历史记录并使用fzf搜索文件,如下所示
#!/bin/bash
file=$(cat ~/.viminfo | grep '^>' | sed 's/^> //' | fzf)
file=${file/#\~/$HOME}
if [ ! -z "$file" ]; then
vim $file
fi
- 阅读 .viminfo。获取打开的文件列表。传给
fzf
- 替换
~
为$HOME
(Vim 不在~
文件参数中展开) - 如果文件不为空,则打开文件
您可以将其另存为vim-history.sh
并在终端中运行。
推荐阅读
- python - 使用 Dataflow 和 Apache Beam (Python) 将数据从 Pub/Sub 流式传输到 BigQuery
- android - 如何在底部对齐的片段上动画(从底部滑入)视图的可见性变化?
- javascript - 在 React 中显示来自 API 的图像
- command-line - devops 本地代理特定权限
- design-patterns - 将当前服务对象传递给域将是 DDD 的反模式?
- android - 将实时数据库连接到 Firebase 上的身份验证数据库
- php - 提交表单后标题未重定向
- c++ - 仅在使用模板时才定义结构
- android - 当我需要前一个服务的结果时,如何使用 RxJava 链接多个改造服务?
- google-chrome - Keycloak:使用新的 Chrome SameSite/Secure cookie 强制执行的令牌请求中缺少会话 cookie