Dima Portenko
Posted on July 21, 2024
If you're a Neovim enthusiast looking for a way to streamline your workflow by quickly running terminal commands within your current project, then look no further. Introducing project-cli-commands.nvim, a powerful plugin that integrates with Telescope and ToggleTerm to provide a seamless experience for executing project-specific CLI commands.
What is project-cli-commands.nvim?
project-cli-commands.nvim
is a Neovim plugin that allows you to run terminal commands effortlessly from within your editor. Whether you need to list files, run tests, or execute any custom script, this plugin has got you covered. It offers features like running commands with input, copying commands to clipboard, and injecting the current buffer path into commands.
Installation
To get started, add the following configuration to your Neovim setup:
{
"dimaportenko/project-cli-commands.nvim",
dependencies = {
"akinsho/toggleterm.nvim",
"nvim-telescope/telescope.nvim",
},
config = function()
local OpenActions = require('project_cli_commands.open_actions')
local RunActions = require('project_cli_commands.actions')
local config = {
running_telescope_mapping = {
['<C-c>'] = RunActions.exit_terminal,
['<C-f>'] = RunActions.open_float,
['<C-v>'] = RunActions.open_vertical,
['<C-h>'] = RunActions.open_horizontal,
},
open_telescope_mapping = {
{ mode = 'i', key = '<CR>', action = OpenActions.execute_script_vertical },
{ mode = 'n', key = '<CR>', action = OpenActions.execute_script_vertical },
{ mode = 'i', key = '<C-h>', action = OpenActions.execute_script },
{ mode = 'n', key = '<C-h>', action = OpenActions.execute_script },
{ mode = 'i', key = '<C-i>', action = OpenActions.execute_script_with_input },
{ mode = 'n', key = '<C-i>', action = OpenActions.execute_script_with_input },
{ mode = 'i', key = '<C-c>', action = OpenActions.copy_command_clipboard },
{ mode = 'n', key = '<C-c>', action = OpenActions.copy_command_clipboard },
{ mode = 'i', key = '<C-f>', action = OpenActions.execute_script_float },
{ mode = 'n', key = '<C-f>', action = OpenActions.execute_script_float },
{ mode = 'i', key = '<C-v>', action = OpenActions.execute_script_vertical },
{ mode = 'n', key = '<C-v>', action = OpenActions.execute_script_vertical },
}
}
require('project_cli_commands').setup(config)
end
}
Usage
Commands Configuration
Configuration for project-cli-commands.nvim
is stored in a .nvim/config.json
file. If the file does not exist, the plugin will prompt you to create one when you run Telescope project_cli_commands open
.
Example config.json
:
{
"env": ".env",
"commands": {
"ls:la": "ls -tls",
"current:ls": "ls -la ${currentBuffer}",
"print:env": "echo $EXPO_TOKEN",
"print:env:local": {
"cmd": "echo $EXPO_TOKEN",
"env": ".env.local",
"after": "Telescope find_files"
}
}
}
-
env
(optional): Path to the environment file to load before running the command. -
commands
: List of terminal commands with optional configurations.
Telescope Commands
-
Telescope project_cli_commands open
: Opens Telescope with a list of commands fromconfig.json
. -
Telescope project_cli_commands running
: Opens Telescope with a list of running commands, allowing you to toggle or stop them.
Keymap
Add these key mappings to your Neovim configuration for quick access:
vim.api.nvim_set_keymap("n", "<leader>p", ":Telescope project_cli_commands open<cr>", { noremap = true, silent = true })
vim.api.nvim_set_keymap("n", "<leader>;", ":Telescope project_cli_commands running<cr>", { noremap = true, silent = true })
Features
Open Terminal with Command
You can open a terminal in float, vertical, or horizontal mode to run your commands.
Run Command with Input
This feature allows you to add extra arguments to your terminal command dynamically.
Copy Command to Clipboard
By pressing Ctrl+c
, you can copy the command to your clipboard.
Run Command After
Run a Neovim command after the terminal command finishes execution.
Environment Variables
Load environment variables from a file before running a command.
Inject Current Buffer Path to Command
For example, to run tests for the current buffer:
{
"commands": {
"test:current": "jest ${currentBuffer}"
}
}
List of Running Commands
Use Telescope project_cli_commands running
to manage your running commands, including showing/hiding terminals or stopping commands.
Conclusion
project-cli-commands.nvim
is a must-have plugin for Neovim users who want to boost their productivity by seamlessly integrating terminal commands into their workflow. Give it a try and see how it can transform your development experience!
Posted on July 21, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.