Trident is a plugin for JetBrains IDEs that allows you to quickly navigate to your most used files with as few keystrokes as possible.
The plugin is inspired by the Harpoon NeoVim plugin by ThePrimeagen but aims to add additional features and proper integration with the IDE.
- Navigate to your most used files with a single keystroke.
- Easily append files to a per-project list for fast access.
- Quick Menu
- Select a file from the list and open it.
- Delete a file from the list.
- Reorder / Move files in the list.
- Add / Insert files to the list.
- Project-relative file paths using
...
syntax.
- Per-project lists.
- Configurable IdeaVim and IDE keymaps for all actions.
- Version 2023.1 or later of any IntelliJ-based IDE is required.
- Install the plugin through the IDE's plugin manager by searching for "Trident".
- Install the plugin from the JetBrains Marketplace.
- Install the plugin from the GitHub Releases.
-
The default settings are sensible, but you can customize them if you wish.
-
Actions can be mapped to IDE keymaps, search for "Trident" in the IDE's keymap settings.
-
If you are using IdeaVim, you can configure the keymaps through .ideavimrc
" Append the current file to the list
map <leader>a :action TridentAppend<cr>
" Open the Trident list
map <C-h> :action TridentList<cr>
" Select the given file (from the Trident list) and open it
map <leader>o :action TridentListSelect<cr>
" You can assign up to 10 hotkeys using TridentSelect[1-10]
" This is an example for the first 4 items in the list
map <C-h> :action TridentSelect1<CR>
map <C-t> :action TridentSelect2<CR>
map <C-n> :action TridentSelect3<CR>
map <C-s> :action TridentSelect4<CR>
" Toggle previous & next buffers stored within the list
map <C-S-P> :action TridentSelectPrev<CR>
map <C-S-N> :action TridentSelectNext<CR>
-
Search for "Trident Settings" in the IDE's settings
-
You can customize the width, height, font size of the Trident list
-
You can also customize other settings, each setting has an explanation under it
-
All actions can be mapped to IDE keymaps
-
Keymaps can also be configured through .ideavimrc (requires IdeaVim)
- The comments explain the keymaps and their functionality
" Append the current file to the list
map <leader>a :action TridentAppend<cr>
" Open the Trident list
map <C-h> :action TridentList<cr>
" Select the given file (from the Trident list) and open it
map <leader>o :action TridentListSelect<cr>
" You can assign up to 10 hotkeys using TridentSelect[1-10]
" These hotkeys are used to quickly navigate to the corresponding Trident list item
map <C-1> :action TridentSelect1<CR>
map <C-2> :action TridentSelect2<CR>
map <C-3> :action TridentSelect3<CR>
map <C-4> :action TridentSelect4<CR>
map <C-5> :action TridentSelect5<CR>
map <C-6> :action TridentSelect6<CR>
map <C-7> :action TridentSelect7<CR>
map <C-8> :action TridentSelect8<CR>
map <C-9> :action TridentSelect9<CR>
map <C-0> :action TridentSelect10<CR>
" Toggle previous & next buffers stored within the list
map <C-S-P> :action TridentSelectPrev<CR>
map <C-S-N> :action TridentSelectNext<CR>
-
Width - 800
-
Height - 400
-
Font Size - 30
-
Enter to select item - true
-
Automatic Mappings - Filename
-
Automatic Replacing - Smart
-
Recursive Mappings - true
-
Remember last line - false
-
Index Cycling - true
map <leader>a :action TridentAppend<cr>
map <C-e> :action TridentToggleQuickMenu<cr>
" I am Using "Enter to select" from settings
" so I don't need to map a TridentListSelect keymap here
map <C-1> :action TridentSelect1<cr>
map <C-2> :action TridentSelect2<cr>
map <C-3> :action TridentSelect3<cr>
map <C-4> :action TridentSelect4<cr>
This plugin is open-source and contributions are welcome.
If you are looking for what to work on, see the issues tab
It's recommended to first open an issue before starting to work on a feature.
- Fork the repository.
- Make your changes and commit them.
- Push your changes to your fork.
- Create a pull request.
- Wait for the pull request to be reviewed and merged.
This project is licensed under the AGPLv3 License, see the LICENSE file for details.
The logo was designed by Kyren223 and is copyrighted. You may not use it without Kyren223's written permission.
- GitHub
- Kyren223 on Discord