Freqüentemente, alterarei um pequeno script no gedit e depois o executarei em um terminal. Não existe um editor de texto simples com um botão “Executar” ou algo assim para agilizar isso? Mesmo no Eclipse não é trivial. Estou procurando sugestões específicas sobre quais editores de texto oferecem suporte a isso ou como eles podem ser estendidos para oferecer suporte a isso.
Responder1
Opção 1: use vim, emacs, geany e muito mais!
In vim
e use :!bash file.sh
ou apenas crie um atalho para ele em.vimrc
No Emacs, você usa M-!
. Então você mantém pressionado Alte depois pressiona !. Você pode até passar texto em seu buffer atual para um comando selecionando o que deseja passar para um comando e pressionando M-|
. Assim você pode destacar seu código e passá-lo para o comando bash
.
Cada ferramenta tem seu próprio jeito!
Opção 2: usar find
eentr
Execute este comando para que sempre que QUALQUER .sh
arquivo no diretório for alterado, ele será executado novamente automaticamente:
find . -name '*.sh' | entr -cs file.sh
Opção 3: use a combinação de tmux
, vim
e entr
para codificação ao vivo
Eu escrevi isso há muito tempo c++
e depois usei-o mais em outras linguagens e agora você também pode usá-lo para programação shell.
Veja como será:
para que o programa rode, basta salvá-lo no vim ( :w
) e ele será executado.
Salve isso em ~/bin/ide
:
#!/usr/bin/bash
tmpdir=""
template="simple"
for i in "$@"
do
case $i in
-t=*|--template=*)
template="${i#*=}"
shift # past argument=value
;;
-n=*|--name=*)
dir="${i#*=}"
mkdir -p ~/cppshells/$dir
tmpdir=~/cppshells/$dir
shift
;;
-h|--help)
echo "-n=*|--name=* \t\t the name of the project"
echo "-t=*|--template \t\t the template to use"
exit;
;;
*)
# nothing to do
;;
esac
done
if [ -z "$tmpdir" ]; then
tmpdir=$(mktemp -d)
fi;
tmpdir=$(realpath ${tmpdir});
window="cpp-$1-$((1 + RANDOM % 10000000))"
if [ -z "$EDITOR" ]; then
EDITOR="nvim";
fi;
template_dir="$(dirname $0)/templates/${template}"
if [ ! -d $template_dir ]; then
echo "The specified template ($template) does not exists."
exit;
fi;
tmux new -s ${window} -d -c "${tmpdir}"
tmux split-window -t ${window} -h
tmux select-pane -t ${window}.right
tmux resize-pane -t ${window}.right -R 18
tmux send-keys -t ${window}.left "cd ${tmpdir}" C-m
tmux send-keys -t ${window}.right "cd ${tmpdir}" C-m
# copy files if the directory does not exists
if [ `ls -A ${tmpdir} | wc -m` == "0" ]; then
cp -nr $template_dir/* ${tmpdir}/.
fi;
# run build commands
if [ -f ${template_dir}/Makefile ]; then # make
tmux send-keys -t ${window}.right "find . -name '*.cpp' | entr -cs 'make -j8 && ./a.out'" C-m
tmux send-keys -t ${window}.left "${EDITOR} ${tmpdir}/main.cpp" C-m
elif [ -f ${template_dir}/CMakeLists.txt ]; then # CMake
mkdir -p ${tmpdir}/build
cmake -G "Unix Makefiles" -B${tmpdir}/build -S${tmpdir}
tmux send-keys -t ${window}.right "find . -name '*.cpp' | entr -cs 'make -j8 -Cbuild/ && ./build/a.out'" C-m
tmux send-keys -t ${window}.left "${EDITOR} ${tmpdir}/main.cpp" C-m
elif [ -f ${template_dir}/main.py ]; then # Python
chmod +x ${tmpdir}/main.py
tmux send-keys -t ${window}.right "find . -name 'main.py' | entr -cs '${tmpdir}/main.py'" C-m
tmux send-keys -t ${window}.left "${EDITOR} ${tmpdir}/main.py" C-m
elif [ -f ${template_dir}/main.sh ]; then # Bash
chmod +x ${tmpdir}/main.sh
tmux send-keys -t ${window}.right "find . -name 'main.sh' | entr -cs '${tmpdir}/main.sh'" C-m
tmux send-keys -t ${window}.left "${EDITOR} ${tmpdir}/main.sh" C-m
fi;
tmux select-pane -t ${window}.left
tmux attach -t ${window}
Em seguida, crie ~/bin/templates/simple
diretórios e coloque main.sh
neles um arquivo simples que será seu ponto de partida ao executar ide
o comando. Você também pode criar mais e mais modelos (cada um em um diretório diferente no ~/bin/templates/
diretório).
Adicione /home/$USER/bin
ao seu caminho para que você possa executar o ide
.
Para executar o script você pode usar estas 3 maneiras:
- Para testes simples:
ide
(criará um diretório temporário commktemp -d
o comando - Para salvar o arquivo no
~/cppshell/[something]/
diretório:ide -n=something
- Para usar um modelo diferente (ponto de partida):
ide -t=not-simple -n=some_name
Como eu disse, você pode usar este script para criar uma ferramenta semelhante a um shell para executar python, C++, bash ou até mesmo adicionar a sua própria.
Atualizar: desde que escrevi esta resposta, atualizei minha própria versão várias vezes com novos recursos e suporte mais amplo. Aqui está umlink para a página do GitHub para este script de shell. Você também pode ver mais detalhes noPágina Leiame.
Responder2
De:
Plug-ins do Gedit
Use gedit
plug-in de terminal externo
Você pode usar gedit
com plugin de terminal. As etapas são bastante simples:
- Habilitar repositório "Universo"
- Instalar
gedit-plugins
- Ative o "Terminal Incorporado"
- Use Ctrl+ F9para abrir o terminal
- Outros
gedit
plug-ins
Passo 1. Habilite o repositório "Universo"
O primeiro passo é garantir que Universe
o repositório esteja ativado em Settings
-> Software & Updates
-> Ubuntu Software
e garantir que a terceira opção esteja marcada:
Etapa 2. Instalargedit-plugins
Instale gedit-plugs
com o comando:
sudo apt install gedit-plugins
Etapa 3. Ative o "Terminal incorporado"
Abra gedit
(não use sudo
) e selecione Edit
-> Preferences
-> Plugins
e marque Embedded Terminal
:
Passo 4. Use Ctrl+ F9para abrir o terminal
No GIF abaixo usamos Ctrl+ F9para obter uma pequena janela com o prompt de comando. Use o mouse para arrastar a linha divisória para cima.
Etapa 5. Outros gedit
plug-ins
Conforme mencionado na Etapa 4, você pode pegar a barra separadora para aumentar a janela do terminal. Esta é a aparência de uma imagem normal ((não um GIF).
Existem três outros plug-ins que uso atualmente na gedit
janela de codificação:
- plug-in para exibir recorte de 80 caracteres com cor de fundo diferente
- plug-in para exibir o documento inteiro em miniatura que você pode arrastar para ir rapidamente para a seção de código
- Destacar colchetes correspondentes
Para leitura adicional, consulte:
Responder3
Se você se sentir confortável com o vim, você pode executar
:w !bash
(sub seu shell de escolha) e isso executará o script no buffer atual.
Em um ambiente gráfico, utilizo VS Code. É um IDE leve, extensível, com suporte GIT integrado e um terminal integrado.
Responder4
No Emacs você pode usar Ctrl-C
Ctrl-X
para isso.