Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pechorin/any-jump.vim
Jump to any definition and references π IDE madness without overhead π
https://github.com/pechorin/any-jump.vim
definitions ide nvim references ui vim viml
Last synced: 30 days ago
JSON representation
Jump to any definition and references π IDE madness without overhead π
- Host: GitHub
- URL: https://github.com/pechorin/any-jump.vim
- Owner: pechorin
- Created: 2020-01-17T23:38:02.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-05-04T21:09:31.000Z (6 months ago)
- Last Synced: 2024-09-29T06:04:27.940Z (about 1 month ago)
- Topics: definitions, ide, nvim, references, ui, vim, viml
- Language: Vim Script
- Homepage:
- Size: 15.1 MB
- Stars: 1,080
- Watchers: 18
- Forks: 41
- Open Issues: 33
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-list - any-jump.vim
README
# any-jump.vim
**β IDE madness without overhead for 40+ languages**
_Vim code inspection plugin for finding definitionsβ 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+` or `vim 8.2`
- `ripgrep 11.0.0+` or `ag`
- _some languages requires rg with PCRE2 support_## Installation
via vim-plug:
```viml
Plug 'pechorin/any-jump.vim'
```## Usage
In normal or visual mode.
Just place you cursor on any variable/class/constant/name/symbol and press `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
## Keybindings
Default global mappings for normal and visual modes:
```viml
" Normal mode: Jump to definition under cursor
nnoremap j :AnyJump" Visual mode: jump to selected text in visual mode
xnoremap j :AnyJumpVisual" Normal mode: open previous opened file (after jump)
nnoremap ab :AnyJumpBack" Normal mode: open last closed search window again
nnoremap al :AnyJumpLastResults
```Disabling default any-jump keybindings:
```viml
let g:any_jump_disable_default_keybindings = 1
```Mappings for popup search window
```
o/ open
s open in split
v open in vsplit
t open in new tab
p/ 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
```viml
" Show line numbers in search results
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" Preferred 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" Show / hide Help section
let g:any_jump_show_help_section = 1" 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" Custom ignore files
" default is: ['*.tmp', '*.temp']
let g:any_jump_ignored_files' = ['*.tmp', '*.temp']" Vertically center the screen after jumping
" (default: false)
let g:any_jump_center_screen_after_jump = v:false
```## Theme configuration
There are default theme configuration based on standard Vim highlight 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
![screenshot](/usages.png)
### preview definition with `p` or `tab`
![screenshot](/preview.png)
### group results by file
![screenshot](/group_by_file.png)
### search results with line numbers
![screenshot](/with_ln.png)
### vim 8.2 inside terminal
![vim-support](https://user-images.githubusercontent.com/226270/75636019-104cb380-5c2c-11ea-9730-70db71bac35f.png)
## Supported languages
- apex
- c++
- clojure
- coffeescript
- commonlisp
- coq
- crystal
- csharp
- dart
- elisp
- elixir
- erlang
- faust
- fennel
- fortran
- fsharp
- go
- groovy
- haskell
- hcl
- java
- javascript
- julia
- kotlin
- lua
- matlab
- nim
- nix
- objc
- ocaml
- pascal
- perl
- php
- protobuf
- python
- r
- racket
- ruby
- rust
- scad
- scala
- scheme
- scss
- shell
- sml
- solidity
- sql
- swift
- systemverilog
- tcl
- tex
- typescript
- vala
- vhdl
- zig## Original idea
Comes from dumb-jump.el emacs package
## Development
### Lang generator
You need ruby to run generator script which actually download language map, parse, extract data and then generate vim representation:
```bash
cd generator
bundle exec rake update
```## Issues and contributions
Please open issue on any question / problem / feedback / idea.
Guaranteed contribution feedback: 3-5 days, but it's stable.
```
/~~||/~\\ /--- || ||/~\ /~\ |~~\
\__|| |\/ | \_/|| | ||__/
_/ \__| |
```