🚀 Um comando com autocomplete feito com C++.
Eu o dia foi bastante tranquilo e aproveitei pra ficar inventando algumas coisas. Dentre algumas delas, eu encotrei um link de vários emojis no meus favoritos e pensei:
- — Por que não obter esses emojis via linha de comando pra ficar mais fácil?!
E comecei a escrever um código básico e surgiu esse comando simples pra ajudar por mais básica que seja a ajuda.
Veja como compilar e instalar no seu sistema Unix-like.
💼 Instalação
Lógico que você precisa ou do GCC ou do Clang instalado.
Depois é só seguir esses passos:
⤵️ 01. Baixe a lista de emoji:
Ou com wget
:
wget -q bit.ly/emoji-txt -O ~/.emojis.txt
Ou com cURL:
curl -sL bit.ly/emoji-txt -o ~/.emojis.txt
📄 02. Crie um arquivo C++:
Exemplo:
vim emoji.cpp
E cole esse código dentro:
#include
#include
constexpr auto show_emoji = [](const std::string& query){
const std::string user = std::getenv("USER");
std::ifstream file("https://dev.to/home/" + user + "https://dev.to/.emojis.txt");
std::string line;
bool found = false;
while(std::getline(file, line)){
const size_t space_pos = line.find(' ');
if (space_pos == std::string::npos) continue;
const std::string name = line.substr(0, space_pos);
const std::string emoji = line.substr(space_pos + 1);
if(name.find(query) != std::string::npos){
std::cout << emoji << " " << name << 'n';
found = true;
}
}
if(!found){
std::cerr << "Emoji not found.n";
}
};
int main(int argc, char** argv){
if (argc < 2) return 1;
show_emoji(argv[1]);
}
🚧 03. Compile e instale:
g++ -O3 -ffast-math emoji.cpp -o emoji
sudo mv emoji /usr/local/bin
📺 04. Adicione autocomplete para seu terminal:
Para adicionar o autocomplete para Bash:
Adicione ao final do seu
~/.bashrc
_emoji_complete() {
local cur=${COMP_WORDS[COMP_CWORD]}
COMPREPLY=( $(compgen -W "$(grep "^$cur" ${HOME}/.emojis.txt)" -- "$cur") )
}
complete -F _emoji_complete emoji
Depois rode: source ~/.bashrc
Para adicionar o autocomplete para ZSH:
Adicione ao final do seu
~/.zshrc
_emoji_complete() {
local -a matches
local cur="$words[2]"
matches=($(grep "^$cur" "${HOME}/.emojis.txt"))
compadd -- $matches
}
compdef _emoji_complete emoji
Depois rode: source ~/.zshrc
Teste:
$ emoji game
game game_die
$ emoji game
🎮 game
🎲 game_die
Eu preenchi os emojis dessa postagem usando ele: usei palavras como: emoji tv
, emoji const
(para construção), emoji doc
(documento), … Logo menos, você se acostuma com as palavras e encontra todos facilmente! 😺
Legalzinho, né? 😃