Checagem Ortográfica no NeoVim

Uma correção ortográfica nunca vai mal e, no NeoVim, temos essa opção. Basta configurar, reiniciar e usar.

Configuração

-- Arquivo: ~/.config/nvim/init.lua
vim.opt.spell = true
vim.opt.spelllang = 'pt_br'         -- Apenas Português
--vim.opt.spelllang = 'en_us,pt_br' -- Inglês e Português

Adicione as linhas acima no arquivo de configuração init.lua e reinicie o NeoVim, que ele vai abaixar os dicionários (você pode ter que pressionar ENTER algumas vezes até que finalize).

Comandos

  • ]s Próxima palavra incorreta
  • [s Palavra incorreta anterior
  • z= Sugestões ortográficas
  • 1z= Usa a primeira sugestão (qualquer número)
  • zg Adiciona palavra como correta
  • zw Adiciona palavra como incorreta

Referências

Instalando NeoVim pelo Código Fonte

Hoje tentei usar NeoVim com os plugins do kickstart porém, na hora de executar o comando nvim ocorreu um erro!

A versão disponível para instalação com o apt não era recente o suficiente para usar os plugins.

Uma das opções é compilar o programa à partir do código fonte:

Os passos abaixo foram testados com Ubuntu 22.04 e Debian 12.

Passo a Passo

  1. Instalar as dependências:
sudo apt install git make cmake ninja-build gettext unzip curl

A instalação destes programas é necessária para obtermos as ferramentas necessárias para obter o código e compilá-lo com sucesso.

Outros programas relacionados aos que listamos também são instalados junto.

  1. Obter o código fonte do NeoVim clonando o repositório no GitHub:
git clone https://github.com/neovim/neovim

O repositório é clonado dentro de uma nova pasta chamada neovim. O download é de cerca de 250 MB.

  1. Entrar na pasta do repositório:
cd neovim
  1. Selecionar a versão que desejamos compilar. Aqui seleciono a versão mais recente, que é a v0.9.5:
git checkout v0.9.5

Se quiser escolher uma versão específica (ou uma mais nova) basta visualizar a lista de tags do repositório com o comando git tag -l.

  1. Agora vamos compilar:
make CMAKE_BUILD_TYPE=Release

Este comando de compilação é indicado no arquivo README.md do repositório. Apenas make já funcionaria, porém o restante do comando habilita as otimizações durante a compilação, que fazem o programa ter uma performance muito melhor.

A compilação demorou cerca de 2 minutos no meu computador.

  1. Agora que está compilado, vamos instalar o NeoVim no computador, de forma que todos os usuários possam usá-lo:
sudo make install

Pronto está instalado e podemos testá-lo!

nvim
  1. Agora vamos instalar os plugins do kickstart:
git clone https://github.com/nvim-lua/kickstart.nvim ~/.config/nvim

Clonamos o repositório kickstart.nvim direto na pasta de configuração do NeoVim (direto em ~/.config/nvim).

Basta abrir o NeoVim novamente e podemos ver ele processando a nova configuração e instalando os plugins.

nvim

Linux: Áudio do computador em videoconferência

Para apresentar a defesa da minha dissertação de mestrado, eu precisava tocar executar um vídeo com áudio no computador e a audiência precisava escutá-lo.

Uma saída era, na hora do vídeo, colocar o meu fone de ouvido bem perto do microfone, de forma que fosse transmitido pela videoconferência. Fazendo isso, no entanto, perde-se muito na qualidade do áudio.

Com um pouco de pesquisa descobri que existe uma solução melhor:

  • Criar um canal de áudio Virtual-1, que recebe o áudio das aplicações compartilhadas com a videoconferência. Este canal é ouvido por mim e pela audiência.
  • Direcionar a saída de áudio Virtual-1 para meus fones de ouvido, de forma que eu possa ouvir os programas compartilhados.
  • Criar um canal de áudio Virtual-2, que recebe o Microfone no qual eu falo e a saída de áudio Virtual-1, com os áudios compartilhados. Este canal é transmitido para a audiência.
  • Direcionar a saída de áudio Virtual-2 para um microfone virtual, chamado Virtual-3, que pode ser utilizado pela plataforma de videoconferência Google Meet.

Dessa forma, em vez de enviar apenas o meu microfone para a videoconferência, envio a saída Virtual-3 que também contempla os programas compartilhados.

O sistema em uso

No meu caso, estava utilizando o Ubuntu Linux 18.04. Para configurar o computador dessa forma, fiz uso dos dois scripts a seguir:

  • O primeiro configura o Pulse Audio para criar esses dispositivos de entrada e saída de áudio; e
  • O segundo desfaz essa configuração.

pulse_setup.sh

#!/bin/bash
# This script sets up pulseaudio virtual devices
# The following variables must be set to the names of your own microphone and speakers devices
# You can find their names with the following commands :
# pacmd list-sources
# pacmd list-sinks
# Use pavucontrol to make tests for your setup and to make the runtime configuration
# Route your audio source to virtual1
# Record your sound (videoconference) from virtual2.monitor

# Unload
./pulse_unload.sh

set -e

MICROPHONE=${MICROPHONE:-"alsa_input.pci-0000_00_1b.0.analog-stereo"}
SPEAKERS=${SPEAKERS:-"alsa_output.pci-0000_00_1b.0.analog-stereo"}
#SPEAKERS=${SPEAKERS:-"alsa_output.pci-0000_00_03.0.hdmi-stereo"}

module_file="/tmp/pulseaudio_module_list.txt"

if ! pacmd list-sources | grep -P "^\s+name: <${MICROPHONE}>" >/dev/null; then
  echo "ERROR: Microphone (source) \"${MICROPHONE}\" was not found" >&2
  exit 1
fi

if ! pacmd list-sinks | grep -P "^\s+name: <${SPEAKERS}>" >/dev/null; then
  echo "ERROR: Speaker (sink) \"${SPEAKERS}\" was not found" >&2
  exit 1
fi

# Create the null sinks
# virtual1 gets your audio sources (mplayer ...) that you want to hear and share
# virtual2 gets all the audio you want to share (virtual1 + micro)
pactl load-module module-null-sink sink_name=virtual1 sink_properties=device.description="Compartilhar-Audio" | tee -a "${module_file}"
pactl load-module module-null-sink sink_name=virtual2 sink_properties=device.description="Intermediario" | tee -a "${module_file}"

# Now create the loopback devices, all arguments are optional and can be configured with pavucontrol
pactl load-module module-loopback source=virtual1.monitor sink="${SPEAKERS}" latency_msec=1 | tee -a "${module_file}"
pactl load-module module-loopback source=virtual1.monitor sink=virtual2 latency_msec=1 | tee -a "${module_file}"
pactl load-module module-remap-source source_name=virtual3 source_properties=device.description="Vmic" master=virtual2.monitor | tee -a "${module_file}"
pactl load-module module-loopback source="${MICROPHONE}" sink=virtual2 latency_msec=1 | tee -a "${module_file}"

# Make the default sink back to speakers
pactl set-default-sink "${SPEAKERS}"
pacmd set-default-source "virtual3"

pulse_unload.sh

#!/bin/bash
set -e
module_file="/tmp/pulseaudio_module_list.txt"
if [ ! -f "${module_file}" ]; then
  echo "ERROR: file ${module_file} doesn't exist" >&2
  exit 1
fi
while read -r module; do
  if [[ "${module}" =~ ^[0-9]+$ ]]; then
    pacmd unload-module "${module}"
  else
    echo "ERROR: file ${module_file} is not correctly formated" >&2
    exit 1
  fi
done < "${module_file}"
rm "${module_file}"

initramfs e fsck: Ubuntu Linux não inicia

O Ubuntu Linux não inicia e aparece um tal de initramfs! O que fazer?

Um computador meu estava parado por uns tempos, estava com algum problema. Travava, reiniciava do nada… De repente não ligava mais.

Então resolvi reviver ele: Levei na manutenção, deram um jeito nele e fizeram ele iniciar. Bastava remover um dos pentes de memória RAM, que estava com problemas. Agora ele liga e a tela do bootloader do Ubuntu Linux aparece.

Terminal com initramfs

Mas quando tentamos iniciar o sistema, em vez da interface gráfica, aparece o terminal: uma tela preta com algumas linhas escritas, aguardando algum comando:

(initramfs) _

No meio do texto temos escrito:
“The root filesystem on /dev/sda2 requires a manual fsck

Tradução livre:
“A raiz do sistema de arquivos em /dev/sda2 requer um fsck manual”

FSCK (File System ChecK) é uma ferramenta que chega e corrige o sistema de arquivos.

Depois de tantos travamentos e reinicializações inesperadas causadas pelo pente de RAM defeituoso, o sistema de arquivos ficou corrompido. O bootloader está pedindo para manualmente executarmos a verificação do sistema de arquivos.

Como corrigir

Para fazer isso executamos o seguinte comando:

fsck -C -V /dev/sda2

Um simples “fsck /dev/sda2” já resolveria, mas queremos ver o progresso (-C) e ver as explicações do que está sendo feito (-V), então adicionamos essas duas opções. Para ver as opções digite “fsck –help”.

Durante a execução do comando, algumas vezes (ou muitas vezes se o bicho estiver feio) aparece uma mensagem, aguardando interação, perguntando se alguns arquivos podem ser apagados, pois estão com algum defeito, não possuem referência ou alguma outra coisa. Basta apertar ENTER para confirmar e ele será apagado.

Coloque um peso na tecla caso se incomode em apertar ENTER muitas vezes.

Depois de algum tempo… O programa termina e basta reiniciar o computador com o comando

reboot

E agora?

O sistema provavelmente vai iniciar normalmente. Recomendo fazer um backup dos seus dados imediatamente e caso acontecer novamente também reinstalar o sistema.

Se ainda assim não iniciar, você vai ter que usar uma “versão live” do Ubuntu Linux para fazer um backup dos seus dados e então reinstalar o sistema.

Se você tem este problema, do Ubuntu Linux não iniciar e mostrar a tela do intramfs, esse post vai ajudar a solucionar.