Executando verificação de segurança...
7

Aprenda a usar o NeoVim com terminal integrado

Hoje eu quero compartilhar com você uma dica de um plugin que eu acho super bacana. Ele permite que você tenha, no NeoVim, um terminal integrado semelhante ao VSCode. É um plugim escrito em lua, muito bonito e com várias configurações.

Instalação 🚀

Com Packer

use {'akinsho/toggleterm.nvim', tag = 'v2.*'}

Com Plug

Plug 'akinsho/toggleterm.nvim', {'tag' : 'v2.*'}

Configuração 🤖

O plugin permite diversas configurações de aparência e permite até mesmo transferir o texto do editor direto para o terminal em execução.

Orientações de terminal

  • Float

floating window

  • Vertical

vertical orientation

  • Tab

tab orientation

Vale a pena conferir o README do projeto para deixar conforme o seu gosto. Aqui a baixo segue a configuração que eu uso em linguagem lua.

require("toggleterm").setup{
  -- size can be a number or function which is passed the current terminal
  size = 22,
  open_mapping = [[<c-s>]],
  hide_numbers = true, -- hide the number column in toggleterm buffers
  shade_filetypes = {},
  shade_terminals = true, -- NOTE: this option takes priority over highlights specified so if you specify Normal highlights you should set this to false
  -- shading_factor = '<number>', -- the degree by which to darken to terminal colour, default: 1 for dark backgrounds, 3 for light
  start_in_insert = true,
  insert_mappings = true, -- whether or not the open mapping applies in insert mode
  terminal_mappings = true, -- whether or not the open mapping applies in the opened terminals
  persist_size = true,
  direction = 'float', -- 'vertical' | 'horizontal' | 'tab' | 'float'
  close_on_exit = true, -- close the terminal window when the process exits
  -- shell = vim.o.shell, -- change the default shell
  -- This field is only relevant if direction is set to 'float'
  float_opts = {
    -- The border key is *almost* the same as 'nvim_open_win'
    -- see :h nvim_open_win for details on borders however
    -- the 'curved' border is a custom border type
    -- not natively supported but implemented in this plugin.
    border = 'curved', -- 'single' | 'double' | 'shadow' | 'curved'
    -- width = <value>,
    -- height = <value>,
    winblend = 3,
  }
}

function _G.set_terminal_keymaps()
  local opts = {noremap = true}
  vim.api.nvim_buf_set_keymap(0, 't', '<esc>', [[<C-\><C-n>]], opts)
  -- vim.api.nvim_buf_set_keymap(0, 't', 'jk', [[<C-\><C-n>]], opts)
  -- vim.api.nvim_buf_set_keymap(0, 't', '<C-h>', [[<C-\><C-n><C-W>h]], opts)
  -- vim.api.nvim_buf_set_keymap(0, 't', '<C-j>', [[<C-\><C-n><C-W>j]], opts)
  -- vim.api.nvim_buf_set_keymap(0, 't', '<C-k>', [[<C-\><C-n><C-W>k]], opts)
  -- vim.api.nvim_buf_set_keymap(0, 't', '<C-l>', [[<C-\><C-n><C-W>l]], opts)
end

-- if you only want these mappings for toggle term use term://*toggleterm#* instead
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')

O resultado fica assim:

imagem do toggleterm.nvim

Lembrando é claro que o visual também é influenciado pelo seu shell. Eu uso um tema personalizado do zsh, que é o powerlevel10k.

2

Uma possibilidade também é usar o que já vem por padrão, para aqueles que não quiserem usar um plugin.

Para abrir na horizontal basta digitar 10sp term://bash na barra de comandos, onde o número é o tamanho desejado. Por padrão ele vai abrir na parte de cima, mas se quiser que ele abra em baixo basta digitar set splitbelow na barra de comandos.

Após isso ele vai abrir o terminal em normal mode. Basta apertar i e começar a digitar seus comandos.

Para sair do insert mode basta apertar CTRL+\+n

Algumas outras possibilidades:

Vertical esquerda: 40vs term://bash
Vertical Direita: set splitright e 40vs term://bash


Uma coisa legal, é que ao invés de colocar o nome do seu shell após as duas barras, você pode colocar qualquer comando que o shell irá interpretar e retornar o resultado.

1

Ver a galera programando em vi e seus derivados me faz lembrar uma cena do filme The Internship :-P (pena que não achei ho YT pra colocar aqui, mas quem assistiu deve lembrar).

Eu sair do mastodôntico Visual Studio para o vscode foi um avanço e tanto!

1

Estou começando a aprender Neovim, e esse plugin era exatamente o que eu estava procurando.
Após pesquisar em diversos posts do Stack Overflow, eu não imaginava que eu iria acabar encontrando a minha resposta em um post do TabNews!
Ahh, que orgulho dessa galera cara!
Valeu!🎉

1

Que bom que o post te ajudou! Você pode ver um compilado que eu fiz com todos os posts sobre NeoVim publicados aqui no TabNews!

Além disso você pode usar um terminal integrado como o @ludwiklejzer
mencionou abaixo:

Uma possibilidade também é usar o que já vem por padrão, para aqueles que não quiserem usar um plugin.
Para abrir na horizontal basta digitar 10sp term://bash na barra de comandos, onde o número é o tamanho desejado. Por padrão ele vai abrir na parte de cima, mas se quiser que ele abra em baixo basta digitar set splitbelow na barra de comandos.
Após isso ele vai abrir o terminal em normal mode. Basta apertar i e começar a digitar seus comandos.
Para sair do insert mode basta apertar CTRL++n
Algumas outras possibilidades:
Vertical esquerda: 40vs term://bash
Vertical Direita: set splitright e 40vs term://bash
Uma coisa legal, é que ao invés de colocar o nome do seu shell após as duas barras, você pode colocar qualquer comando que o shell irá interpretar e retornar o resultado.

Isso é algo que eu passei a fazer e hoje até prefiro. Eu uso isso no post [DICA] Como integrar o Jest ao neovim (sem plugins) 🃏🃏🃏. Por exemplo, se você digitar :e term://sh o nvim vai abrir um terminal com shel dentro dele. Você pode passar outra coisa ao invés do bash padrão sh, como zsh ou até mesmo um comando personalizado.