Home

Awesome

<!-- LTeX: enabled=false -->

nvim-genghis ⚔️

<!-- LTeX: enabled=true --> <a href="https://dotfyle.com/plugins/chrisgrieser/nvim-genghis"> <img alt="badge" src="https://dotfyle.com/plugins/chrisgrieser/nvim-genghis/shield"/></a>

Lightweight and quick file operations without being a full-blown file manager.

<!-- toc --> <!-- tocstop -->

Features

Installation

-- lazy.nvim
{ 
	"chrisgrieser/nvim-genghis",
	dependencies = "stevearc/dressing.nvim",
	cmd = "Genghis",
	opts = {}, -- empty table needed even for default config, see #51
},

-- packer
use { 
	"chrisgrieser/nvim-genghis", 
	requires = "stevearc/dressing.nvim"
}

Configuration

The setup call is required for lazy.nvim, but otherwise optional.

-- default config
require("genghis").setup {
	backdrop = {
		enabled = true,
		blend = 50,
	},
	-- default is `"trash"` on Mac/Windows, and `{ "gio", "trash" }` on Linux
	trashCmd = "trash",

	-- set to empty string to disable
	-- (some icons are only used for notification plugins like `snacks.nvim`)
	icons = {
		copyPath = "󰅍",
		rename = "󰑕",
		new = "",
		duplicate = "",
		move = "󰪹",
		trash = "󰩹",
		chmodx = "󰒃",
	}
}

Usage

You can access a command via the lua API:

require("genghis").createNewFile()

Or you can use the ex command :Genghis with the respective sub-command:

:Genghis createNewFile

[!TIP] Previously, the plugins used ex commands such as :New or :Move. To avoid conflicts, the ex commands are now only available as sub-commands of :Genghis. If you prefer the old, shorter ex commands, you can use abbreviations to re-create them, for example: vim.cmd.cabbrev("New Genghis createNewFile").

Available commands

File operations

The following applies to all commands above:

  1. If no extension has been provided, uses the extension of the original file.
  2. If the new file name includes a /, the new file is placed in the respective subdirectory, creating any non-existing folders.
  3. All movement and renaming commands update import statements to the renamed file (if the LSP supports workspace/willRenameFiles).

Path copying

All commands use the system clipboard.

Other operations

[!NOTE] The trash CLIs are usually not available by default, and must be installed.

Why that name?

A nod to vim.eunuch, an older vimscript plugin with a similar goal. As opposed to childless eunuchs, it is said that Genghis Khan has fathered thousands of children.

<!-- vale Google.FirstPerson = NO -->

About the author

In my day job, I am a sociologist studying the social mechanisms underlying the digital economy. For my PhD project, I investigate the governance of the app economy and how software ecosystems manage the tension between innovation and compatibility. If you are interested in this subject, feel free to get in touch.

I also occasionally blog about vim: Nano Tips for Vim

<a href='https://ko-fi.com/Y8Y86SQ91' target='_blank'> <img height='36' style='border:0px;height:36px;' src='https://cdn.ko-fi.com/cdn/kofi1.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>