GitHub - pechorin/any-jump.vim: Jump to any definition and references 👁 IDE madn...
source link: https://github.com/pechorin/any-jump.vim
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
any-jump.vim
— IDE madness without overhead for 40+ languages
Vim code inspection plugin for finding defitinitions and references/usages.
Any-jump can be used with any language, but definitions search only available for supported languages. This is not a problem in general, so use any-jump freely on any code project.
Based on syntax rules for 40 languages and fast regexp engines like ripgrep and ag.
On screen: jumping through source code of Discourse project
Requirements
nvim 0.4+
orvim 8.2
ripgrep 11.0.0+
orag
- some languages requires rg with PCRE2 support
Installation
via vim-plug:
Plug 'pechorin/any-jump.vim'
Usage
In normal or visual mode.
Just place you cursor on any variable/class/constant/name/symbol and press <leader>j
or execute :AnyJump
in normal mode.
You can also use visual mode to select proper keyword (j also works in visual mode)
With :AnyJumpArg myKeyword
command you can manually write what you want to be searched for.
Searches
-
keyword definitions: find files where keyword defined
-
keyword references/usages: find files where keyword used and referenced
version 1.0 roadmap
- paths priorities for better search results
- [nvim] ability to jump through preview text (and another keyword)
- show latest N search keywords in popup to save jumping history
- ctags support
- basic refactoring support
Keybindings
Default global mappings for normal and visual modes:
" Normal mode: Jump to definition under cursore nnoremap <leader>j :AnyJump<CR> " Visual mode: jump to selected text in visual mode xnoremap <leader>j :AnyJumpVisual<CR> " Normal mode: open previous opened file (after jump) nnoremap <leader>ab :AnyJumpBack<CR> " Normal mode: open last closed search window again nnoremap <leader>al :AnyJumpLastResults<CR>
Disabling default any-jump keybindings:
let g:any_jump_disable_default_keybindings = 1
Mappings for popup search window
o/<CR> open
s open in split
v open in vsplit
t open in new tab
p/<tab> preview
q/x exit
r references
b back to first result
T group by file
a load next N results
A load all results
L toggle results lists ui style
Settings
" Show line numbers in search rusults let g:any_jump_list_numbers = 0 " Auto search references let g:any_jump_references_enabled = 1 " Auto group results by filename let g:any_jump_grouping_enabled = 0 " Amount of preview lines for each search result let g:any_jump_preview_lines_count = 5 " Max search results, other results can be opened via [a] let g:any_jump_max_search_results = 10 " Prefered search engine: rg or ag let g:any_jump_search_prefered_engine = 'rg' " Search results list styles: " - 'filename_first' " - 'filename_last' let g:any_jump_results_ui_style = 'filename_first' " Any-jump window size & position options let g:any_jump_window_width_ratio = 0.6 let g:any_jump_window_height_ratio = 0.6 let g:any_jump_window_top_offset = 4 " Customize any-jump colors with extending default color scheme: " let g:any_jump_colors = { "help": "Comment" } " Or override all default colors let g:any_jump_colors = { \"plain_text": "Comment", \"preview": "Comment", \"preview_keyword": "Operator", \"heading_text": "Function", \"heading_keyword": "Identifier", \"group_text": "Comment", \"group_name": "Function", \"more_button": "Operator", \"more_explain": "Comment", \"result_line_number": "Comment", \"result_text": "Statement", \"result_path": "String", \"help": "Comment" \} " Disable default any-jump keybindings (default: 0) let g:any_jump_disable_default_keybindings = 1 " Remove comments line from search results (default: 1) let g:any_jump_remove_comments_from_results = 1 " Custom ignore files " default is: ['*.tmp', '*.temp'] let g:any_jump_ignored_files = ['*.tmp', '*.temp'] " Search references only for current file type " (default: false, so will find keyword in all filetypes) let g:any_jump_references_only_for_current_filetype = 0 " Disable search engine ignore vcs untracked files " (default: false, search engine will ignore vcs untracked files) let g:any_jump_disable_vcs_ignore = 0
Theme configuration
Where are default theme configuration based on standard Vim hightlight groups, you can override any setting:
let g:any_jump_colors = {
\"plain_text": "Comment",
\"preview": "Comment",
\"preview_keyword": "Operator",
\"heading_text": "Function",
\"heading_keyword": "Identifier",
\"group_text": "Comment",
\"group_name": "Function",
\"more_button": "Operator",
\"more_explain": "Comment",
\"result_line_number": "Comment",
\"result_text": "Statement",
\"result_path": "String",
\"help": "Comment"
\}
Background settings
You can set non-theme background by set Pmenu hl group like this:
hi Pmenu guibg=#1b1b1b ctermbg=Black
Where are also PmenuSel
, PmenuSbar
, PmenuThumb
groups for configuring.
Features
open definitions and references/usages list
preview definition with p
or tab
group results by file
search results with line numbers
vim 8.2 inside terminal
Supported languages
- elixir
- crystal
- haskell
- javascript
- typescript
- scala
- kotlin
- protobuf
- fsharp
- coffeescript
- elisp
- clojure
- systemverilog
- racket
- scheme
- faust
- matlab
- python
- pascal
- swift
- shell
- csharp
- commonlisp
- ocaml
- erlang
- julia
- groovy
- fortran
Original idea
Comes from dumb-jump.el emacs package
Issues and contibutions
Please open issue on any question / problem / feedback / idea.
Garanteed contribution feedback: 3-5 days, but it's stable.
/~~||/~\\ /--- || ||/~\ /~\ |~~\
\__|| |\/ | \_/|| | ||__/
_/ \__| |
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK