{"id":22069995,"url":"https://github.com/thjbdvlt/fzf-vi-mode","last_synced_at":"2025-10-26T23:04:29.966Z","repository":{"id":225179548,"uuid":"758638850","full_name":"thjbdvlt/fzf-vi-mode","owner":"thjbdvlt","description":"vi-mode fzf key bindings","archived":false,"fork":false,"pushed_at":"2024-08-04T22:01:39.000Z","size":19,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"sea","last_synced_at":"2025-04-09T16:53:24.031Z","etag":null,"topics":["fzf","modal-editing","vim-like"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thjbdvlt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-16T18:43:35.000Z","updated_at":"2025-04-06T22:35:42.000Z","dependencies_parsed_at":"2024-03-04T14:39:49.506Z","dependency_job_id":"5cac958f-efaf-4bf1-b7f7-461ae28a4918","html_url":"https://github.com/thjbdvlt/fzf-vi-mode","commit_stats":null,"previous_names":["thjbdvlt/fzf-vi-mode"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thjbdvlt/fzf-vi-mode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thjbdvlt%2Ffzf-vi-mode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thjbdvlt%2Ffzf-vi-mode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thjbdvlt%2Ffzf-vi-mode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thjbdvlt%2Ffzf-vi-mode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thjbdvlt","download_url":"https://codeload.github.com/thjbdvlt/fzf-vi-mode/tar.gz/refs/heads/sea","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thjbdvlt%2Ffzf-vi-mode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281185454,"owners_count":26457747,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-26T02:00:06.575Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fzf","modal-editing","vim-like"],"created_at":"2024-11-30T20:14:22.719Z","updated_at":"2025-10-26T23:04:29.927Z","avatar_url":"https://github.com/thjbdvlt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# easy fzf vi-mode\n\nautomates configuration for a pseudo-modal __vim__-like [fzf](https://github.com/junegunn/fzf) (insert and normal modes).\n\n__wonderful software fzf__ can be configured (with `--bind` option) to have something like a vim-like 'normal mode':\n\n```bash\nfzf --bind=j:down,k:up \\\n    --bind=start:unbind(i,j,k) \\\n    --bind=esc:disable-search+rebind(i,j,k) \\\n    --bind=i:enable-search+unbind(i,j,k)\n```\n\n with the options above, pressing `esc` will rebind `j` to `up` and `k` to `down`, just like in vim: it's a pseudo-normal-mode. then, pressing `i` will unbind them so they will just be put in query, as they should (pseudo-insert-mode).\n\nbut it can quickly become messy, and very unfun to write. as here:\n\n```bash\n    --bind=j:down,k:up,s:jump,p:toggle-preview \\\n    --bind=h:backward-char,l:forward-char,e:forward-word,b:backward-word \\\n    --bind=d:clear-query \\\n    --bind='y:execute(echo {} | xsel -b)' \\\n    --bind=E:preview-half-page-down,U:preview-half-page-up \\\n    --bind=c:cancel,x:forward-char+backward-delete-char \\\n    --bind=X:backward-delete-char \\\n    --bind=start:enable-search+unbind(e,j,s,p,h,l,é,b,d,y,E,U,c,x,X,i,a,A,I)  \\\n    --bind=i:enable-search+unbind(j,k,s,p,h,l,e,b,d,y,E,U,c,x,X,i,a,A,I) \\\n    --bind=a:enable-search+unbind(j,k,s,p,h,l,e,b,d,y,E,U,c,x,X,i,a,A,I)+forward-char \\\n    --bind=A:enable-search+unbind(j,k,s,p,h,l,e,b,d,y,E,U,c,x,X,i,a,A,I)+end-of-line \\\n    --bind=I:enable-search+unbind(j,k,s,p,h,l,e,b,d,y,E,U,c,x,X,i,a,A,I)+beginning-of-line \\\n    --bind=esc:disable-search+rebind(j,k,s,p,h,l,e,b,d,y,E,U,c,x,X,i,a,A,I) \\\n    --bind=®:backward-kill-word,change:top,backward-eof:abort\n```\n\nsame patterns again and again, plus it is required to be consistent: worth to script it. the simple python script provided here is based on a simple configuration file, which will export a single line option for fzf (that i personally just copy-paste and append it to `FZF_DEFAULT_OPTS` in my `.bashrc`). here is the configuration which will generate options above:\n\n```conf\n[mode]\nescape = esc\ninsert_before = i\ninsert_after = a \ninsert_end_line = A\ninsert_beginning_line = I\n\n[normal]\nj = down\nk = up\ns = jump\np = toggle-preview\nh = backward-char\nl = forward-char\ne = forward-word\nb = backward-word\nd = clear-query\ny = execute(echo {} | xsel -b)\nE = preview-half-page-down\nU = preview-half-page-up\nc = cancel\nx = forward-char+backward-delete-char\nX = backward-delete-char\n\n[insert]\n® = backward-kill-word\nchange = top\nbackward-eof = abort\n```\n\ndependancies\n------------\n\nno dependancies, it uses the [configparser](https://docs.python.org/3/library/configparser.html) standard library.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthjbdvlt%2Ffzf-vi-mode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthjbdvlt%2Ffzf-vi-mode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthjbdvlt%2Ffzf-vi-mode/lists"}