EpsilonKu / FTerm.nvim

:fire: No-nonsense floating terminal written in lua :fire:

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FTerm.nvim

🔥 No nonsense floating terminal written in lua 🔥

FTerm

Requirements

  • Neovim Nightly (0.5)

Install

use {
    "numtostr/FTerm.nvim",
    config = function()
        require("FTerm").setup()
    end
}
Plug 'numtostr/FTerm.nvim'

" Somewhere after plug#end()

lua require('FTerm').setup()

Functions

  • require('FTerm').setup() - To configure the terminal window.

  • require('FTerm').open() - To open the terminal

  • require('FTerm').close() - To close the terminal

    Actually this closes the floating window not the actual terminal buffer

  • require('FTerm').toggle() - To toggle the terminal

Configuration

Options can be provided when calling setup().

  • cmd: Command to run inside the terminal. (default: os.getenv('SHELL'))

NOTE: This is not intended for edit in the default terminal. See custom terminal section.

  • dimensions: Object containing the terminal window dimensions.

    Fields: (Values should be between 0 and 1)

    • height - Height of the terminal window (default: 0.8)
    • width - Width of the terminal window (default: 0.8)
    • x - X axis of the terminal window (default: 0.5)
    • y - Y axis of the terminal window (default: 0.5)
  • border: Native window border (default: single). See :h nvim_open_win for more configuration options.

Setup

require'FTerm'.setup({
    dimensions  = {
        height = 0.8,
        width = 0.8,
        x = 0.5,
        y = 0.5
    },
    border = 'single' -- or 'double'
})

-- Keybinding
local map = vim.api.nvim_set_keymap
local opts = { noremap = true, silent = true }

-- Closer to the metal
map('n', '<A-i>', '<CMD>lua require("FTerm").toggle()<CR>', opts)
map('t', '<A-i>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>', opts)

Custom Terminal

By default FTerm only creates and manage one terminal instance but you can create your terminal by using the underlying terminal function and overriding the default command.

Below are some examples:

local term = require("FTerm.terminal")

local gitui = term:new():setup({
    cmd = "gitui",
    dimensions = {
        height = 0.9,
        width = 0.9
    }
})

 -- Use this to toggle gitui in a floating terminal
function _G.__fterm_gitui()
    gitui:toggle()
end

Screenshot gitui

local term = require("FTerm.terminal")

local top = term:new():setup({
    cmd = "bpytop"
})

 -- Use this to toggle bpytop in a floating terminal
function _G.__fterm_top()
    top:toggle()
end

Screenshot bpytop

Credits

vim-floaterm for the inspiration

About

:fire: No-nonsense floating terminal written in lua :fire:

License:MIT License


Languages

Language:Lua 100.0%