nvim-genghis/doc/genghis.txt

169 lines
7.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

*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 vims 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: