4.5 KiB
text-transform.nvim
Common text transformers for nvim - switch between camelCase, PascalCase, snake_case, and more!
⚡️ Features
Transform the current word or selection between multiple case types. Need to easily replace myVar with my_var or vice versa? This plugin is for you!
- Works on current word in Normal Mode
- Works on selection in Visual Mode
| Transformation | Example Inputs | Output |
|---|---|---|
camelCase |
my_var, my-var, MyVar |
myVar |
PascalCase |
my_var, my-var, myVar |
MyVar |
snake_case |
myVar, my-var, MyVar |
my_var |
kebab-case |
my_var, myVar, MyVar |
my-var |
dot.case |
my_var, my-var, MyVar |
my.var |
Title Case |
my_var, my-var, MyVar |
My Var |
CONST_CASE |
my_var, my-var, MyVar |
MY_VAR |
📋 Installation
| Package manager | Snippet |
|---|---|
|
|
|
|
|
☄ Getting started
To get started, install the plugin via your favorite package manager.
-
Use the following code to setup in any loaded
.luafilerequire('text-transform').setup({ -- custom settings }) -
Either make a selection using Visual mode, or just have your cursor stand on a desired word.
Then, use the mapped key (default: <Leader>~) to open the transform options in a popup.
-
Select the desired transform and you're done!
⚙ Configuration
Click to unfold the full list of options with their default values
Note
: The options are also available in Neovim by calling
:h TextTransform.options
require("text-transform").setup({
-- Prints useful logs about what event are triggered, and reasons actions are executed.
debug = false,
-- Keymap to trigger the transform.
keymap = {
-- Normal mode keymap.
["n"] = "<Leader>~",
-- Visual mode keymap.
["v"] = "<Leader>~",
},
})
🧰 Commands
Use the following as example, you can mix & match the different replacement functions with the desired transform function.
Normally you wouldn't need to call this, as you would just use the keymap you used in setup().
| Command | Description |
|---|---|
:lua TextTransform.replace_word("camel_case") |
Replaces selected word with camelCase version. |
:lua TextTransform.replace_selection("snake_case") |
Replaces visual selection with snake_case version. |
⌨ Contributing
I am developing this package on my free time, so any support, whether code, issues, or just stars is very helpful to sustaining its life. If you are feeling incredibly generous and would like to donate just a small amount to help sustain this project, I would be very very thankful!
I welcome any issues or pull requests on GitHub. If you find a bug, or would like a new feature, don't hesitate to open an appropriate issue and I will do my best to reply promptly.
If you are a developer and want to contribute code, feel free to fork this repository and make some changes to create a PR, I will do my best to merge your code if it is appropriate.