169 lines
7.3 KiB
Plaintext
169 lines
7.3 KiB
Plaintext
*genghis.txt* For NVIM v0.8.0 Last change: 2023 July 04
|
||
|
||
==============================================================================
|
||
Table of Contents *genghis-table-of-contents*
|
||
|
||
1. nvim-genghis |genghis-nvim-genghis-|
|
||
- How is this different from vim.eunuch?|genghis-nvim-genghis--how-is-this-different-from-vim.eunuch?|
|
||
- Installation and Setup |genghis-nvim-genghis--installation-and-setup|
|
||
- Available Commands |genghis-nvim-genghis--available-commands|
|
||
- Autocompletion of directories|genghis-nvim-genghis--autocompletion-of-directories|
|
||
- Why that name |genghis-nvim-genghis--why-that-name|
|
||
- About me |genghis-nvim-genghis--about-me|
|
||
|
||
==============================================================================
|
||
1. nvim-genghis *genghis-nvim-genghis-*
|
||
|
||
Conveniencefile operations for neovim, written in lua.
|
||
|
||
- |genghis-how-is-this-different-from-`vim.eunuch`?|
|
||
- |genghis-installation-and-setup|
|
||
- |genghis-available-commands|
|
||
- |genghis-file-operation-command|
|
||
- |genghis-file-utility-commands|
|
||
- |genghis-disable-ex-commands|
|
||
- |genghis-autocompletion-of-directories|
|
||
- |genghis-why-that-name|
|
||
- |genghis-about-me|
|
||
|
||
|
||
HOW IS THIS DIFFERENT FROM VIM.EUNUCH?*genghis-nvim-genghis--how-is-this-different-from-vim.eunuch?*
|
||
|
||
- Various improvements like automatically keeping the extensions when no extension is given, or moving files to the trash instead of removing them.
|
||
- Uses only vim-commands or lua os-modules, so it has no dependencies and works cross-platform.
|
||
- Makes use of up-to-date nvim features like `vim.ui.input` or `vim.notify`. This means you can get nicer input fields with normal mode support via plugins like dressing.nvim <https://github.com/stevearc/dressing.nvim>, and confirmation notices with plugins like nvim-notify <https://github.com/rcarriga/nvim-notify>, if they are installed and setup.
|
||
- If used with dressing and cmp, |genghis-you-can-also-get-autocompletion-of-directories|.
|
||
- Written 100% in lua.
|
||
|
||
|
||
INSTALLATION AND SETUP *genghis-nvim-genghis--installation-and-setup*
|
||
|
||
>lua
|
||
-- Packer
|
||
use {"chrisgrieser/nvim-genghis", requires = "stevearc/dressing.nvim"}
|
||
|
||
-- Lazy
|
||
{"chrisgrieser/nvim-genghis", dependencies = "stevearc/dressing.nvim"},
|
||
<
|
||
|
||
`nvim-genghis` (and `dressing.nvim`) require no `.setup()` function. Just
|
||
create keybindings for the commands you want to use:
|
||
|
||
>lua
|
||
local keymap = vim.keymap.set
|
||
local genghis = require("genghis")
|
||
keymap("n", "<leader>yp", genghis.copyFilepath)
|
||
keymap("n", "<leader>yn", genghis.copyFilename)
|
||
keymap("n", "<leader>cx", genghis.chmodx)
|
||
keymap("n", "<leader>rf", genghis.renameFile)
|
||
keymap("n", "<leader>mf", genghis.moveAndRenameFile)
|
||
keymap("n", "<leader>nf", genghis.createNewFile)
|
||
keymap("n", "<leader>yf", genghis.duplicateFile)
|
||
keymap("n", "<leader>df", function () genghis.trashFile{trashLocation = "your/path"} end) -- default: "$HOME/.Trash".
|
||
keymap("x", "<leader>x", genghis.moveSelectionToNewFile)
|
||
<
|
||
|
||
|
||
AVAILABLE COMMANDS *genghis-nvim-genghis--available-commands*
|
||
|
||
|
||
FILE OPERATION COMMAND ~
|
||
|
||
- `.createNewFile` or `:New`Create a new file.
|
||
- `.duplicateFile` or `:Duplicate`Duplicate the current file.
|
||
- `.moveSelectionToNewFile` or `:NewFromSelection`Prompts for a new file name and moves the current selection to that new file. (Note that this is a Visual Line Mode command; the selection is moved linewise.)
|
||
- `.renameFile` or `:Rename`Rename the current file.
|
||
- `.moveAndRenameFile` or `:Move`Move and Rename the current file. Works like the UNIX `mv` command. Best used with |genghis-autocompletion-of-directories|.
|
||
|
||
The following applies to all commands above: - If no extension has been
|
||
provided, uses the extension of the original file. - If the new file name
|
||
includes a `/`, the new file is placed in the respective subdirectory, creating
|
||
any non-existing folders. Except for `.moveAndRenameFile`, all operations take
|
||
only place in the current working directory, so `.moveAndRenameFile` is the
|
||
only command that can move to a parent directory. - All commands support
|
||
|genghis-autocompletion-of-existing-directories|.
|
||
|
||
|
||
FILE UTILITY COMMANDS ~
|
||
|
||
- `.trashFile{trashLocation = "/your/path/"}` or `:Trash`Move the current file to the trash location. Defaults to the operating-system-specific trash directory. <https://github.com/chrisgrieser/nvim-genghis/blob/main/lua/genghis.lua#L164> Any existing file in the trash location with the same name is overwritten, making that file irretrievable. If bufdelete.nvim <https://github.com/famiu/bufdelete.nvim> is available, `require'bufdelete.nvim'.bufwipeout` would be used to keep window layout intact instead of `vim.cmd.bwipeout`.
|
||
- `.copyFilename` or `:CopyFilename`Copy the file name. When `clipboard="unnamed[plus]"` has been set, copies to the `+` register, otherwise to `"`.
|
||
- `.copyFilepath` or `:CopyFilepath`Copy the absolute file path. When `clipboard="unnamed[plus]"` has been set, copies to the `+` register, otherwise to `"`.
|
||
- `.chmodx` or `:Chmodx`Makes current file executable. Equivalent to `chmod +x`.
|
||
|
||
|
||
DISABLE EX-COMMANDS ~
|
||
|
||
Put this in your configuration file:
|
||
|
||
>lua
|
||
-- lua
|
||
vim.g.genghis_disable_commands = true
|
||
<
|
||
|
||
>vim
|
||
-- viml
|
||
let g:genghis_disable_commands = v:true
|
||
<
|
||
|
||
|
||
AUTOCOMPLETION OF DIRECTORIES*genghis-nvim-genghis--autocompletion-of-directories*
|
||
|
||
You can get autocompletion for directories by using `dressing.nvim`,
|
||
`nvim-cmp`, and vim’s omnifunc:
|
||
|
||
>lua
|
||
-- packer
|
||
use { "chrisgrieser/nvim-genghis", requires = {
|
||
"stevearc/dressing.nvim",
|
||
"hrsh7th/nvim-cmp",
|
||
"hrsh7th/cmp-omni",
|
||
},
|
||
}
|
||
-- lazy
|
||
{ "chrisgrieser/nvim-genghis", dependencies = {
|
||
"stevearc/dressing.nvim",
|
||
"hrsh7th/nvim-cmp",
|
||
"hrsh7th/cmp-omni",
|
||
},
|
||
},
|
||
<
|
||
|
||
>lua
|
||
-- required setup for cmp, somewhere after your main cmp-config
|
||
require("cmp").setup.filetype("DressingInput", {
|
||
sources = cmp.config.sources { {name = "omni"} },
|
||
})
|
||
<
|
||
|
||
|
||
WHY THAT NAME *genghis-nvim-genghis--why-that-name*
|
||
|
||
A nod to vim.eunuch <https://github.com/tpope/vim-eunuch> - as opposed to
|
||
childless eunuchs, it is said that Genghis Khan has fathered thousands of
|
||
children <https://allthatsinteresting.com/genghis-khan-children>.
|
||
|
||
|
||
ABOUT ME *genghis-nvim-genghis--about-me*
|
||
|
||
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.
|
||
|
||
**Blog** I also occassionally blog about vim: Nano Tips for Vim
|
||
<https://nanotipsforvim.prose.sh>
|
||
|
||
**Profiles** - Discord <https://discordapp.com/users/462774483044794368/> -
|
||
Academic Website <https://chris-grieser.de/> - GitHub
|
||
<https://github.com/chrisgrieser/> - Twitter <https://twitter.com/pseudo_meta>
|
||
- ResearchGate <https://www.researchgate.net/profile/Christopher-Grieser> -
|
||
LinkedIn <https://www.linkedin.com/in/christopher-grieser-ba693b17a/>
|
||
|
||
**Buy Me a Coffee**
|
||
|
||
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
|
||
|
||
vim:tw=78:ts=8:noet:ft=help:norl:
|