Configuração sugerida para um ambiente de programação baseado em texto ultra-leve no linux

14

Estou procurando sugestões para uma configuração para minhas necessidades específicas. Eu não faço muito linux desde a faculdade e quero voltar a isso como um hobby. Eu tenho alguns hardwares não muito poderosos (ram de 512 MB, single core). Eu quero fazer tudo através de shells baseados em texto e editores, como o vim. Meu objetivo é nunca tocar no mouse.

Eu preciso da habilidade de ter múltiplos shells abertos ao mesmo tempo, um executando um servidor web, um executando vim, um executando meu pipeline de desenvolvimento de aplicativos, outro para comandos shell ad-hoc como wget, grepping e untarring, etc. Eu preciso ser capaz de abrir novos shells e alternar entre shells rapidamente com o teclado.

Mas mesmo que eu queira vários shells, eu não quero um ambiente de desktop gráfico. Eu não quero nunca ser tentado a usar o mouse; parte do meu propósito é me forçar a aprender o modo de linha de comando de várias tarefas.

Eu também quero ser capaz de tirar proveito do meu monitor grande, executando o vim com algumas centenas de colunas dipslayed.

Isso é possível?

    
por Kevin Pauli 22.11.2012 / 18:46

8 respostas

5

Eu li suas perguntas várias vezes antes de perceber que definitivamente tenho uma recomendação para você: vim com o tmux: link

tmux é um 'multiplexador' de tela que permite que você tenha várias janelas e painéis 'dentro de 1'

É um sucessor do venerável programa 'screen', há muito tempo um grampo de muitos cli coders. Uma de suas características vencedoras originais sobre o vim foi a capacidade de fazer janelas divididas verticalmente e horizontalmente. No entanto, a tela avançou e agora pode fazer isso também.

Exemplo:

Outrapartedaconfiguraçãoqueeurecomendariaéumbomconjuntodealiases.Issotornarásuadigitaçãoeinteraçãomuitomaisfácilerápida

Algunsdosmeusfavoritossãomostradosaquicomoexemplos:

aliasgcv='gitcommit'aliasgg='gitgrep'#forsearching(addparameter)aliasgst='gitstatus-sb'#Imustusethis100timesaday!!!aliash='history|tail'aliashg='history|grep'#forsearchingmyhistory(addparameter)aliasl='ls-alFtrG'aliasls='ls--color=auto'aliasmv='mv-i'aliasp='pwd'#atleast200timesaday!so2chrssaved*200=400lesscharacterstotype;)

Osaliasespodemserconfiguradosemumarquivo.bash_aliaseschamadode.bashrccom: #Definiçõesdealias. if[-f~/.bash_aliases];então     .~/.bash_aliases fi

Éprovávelquevocêjátenhaessecódigo,portanto,apenasoseupróprioarquivo.bash_aliases.

AmbasasopçõesfuncionamemumMaceissoéumaconsideraçãoimportanteparamim(umusuárioprincipalmentedoUbuntu).

Amaioriadaspessoasqueusamotmuxremapearaschavesparatorná-lomaisfácil.Asligaçõespadrãonãosãotãoboasassim.Aquiestãominhasconfigurações:

$cat~/tmux.conf

#mddtmuxsettingsbindrsource-file~/.tmux.conf\;display"Reloaded!"  # Reload with ctrl-r
set -g prefix C-a         # prefix from ctrl-b to ctrl-a
unbind C-b                # allow ctrl-b for other things
set -sg escape-time 1     # quicker responses
bind C-a send-prefix      # Pass on ctrl-a for other apps
set -g base-index 1        # Numbering of windows
setw -g pane-base-index 1  # Numbering of Panes
# bind | split-window -h    # Split panes horizontal
bind \ split-window -h    # Split panes horizontal
bind - split-window -v    # Split panes vertically
bind h select-pane -L     # Switch to Pane Left
bind j select-pane -D     # Switch to Pane Down
bind k select-pane -U     # Switch to Pane Up
bind l select-pane -R     # Switch to Pane Right
bind -r C-h select-window -t :-  # Quick Pane Selection
bind -r C-l select-window -t :+  # Quick Pane Selection
bind -r H resize-pane -L 5       # Switch to Pane Left
bind -r J resize-pane -D 5       # Switch to Pane Down
bind -r K resize-pane -U 5       # Switch to Pane Up
bind -r L resize-pane -R 5       # Switch to Pane Right
setw -g mode-mouse off           # Mouse Off
set -g mouse-select-pane off     # Mouse Off  
set -g mouse-resize-pane off     # Mouse Off
set -g mouse-select-window off   # Mouse Off
#set -g  default-terminal "screen-256color"
setw -g monitor-activity on      # Activity Alerts
set -g visual-activity on
set -g status-fg white           # Status line Colors
set -g status-bg black
setw -g window-status-fg cyan    # Window list color
setw -g window-status-bg default
setw -g window-status-attr dim
setw -g window-status-current-fg white     # Active Window Color
setw -g window-status-current-bg red
setw -g window-status-current-attr bright
set -g pane-border-fg green      # Pane colors
set -g pane-border-bg black 
set -g pane-active-border-fg white 
set -g pane-active-border-bg yellow
set -g message-fg white          # Command/Message Line.
set -g message-bg black
set -g message-attr bright
set -g status-left-length 40     # Status Line, left side
set -g status-left "#[fg=white]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
set -g status-utf8 on            # Status Line, right side
set -g status-right "-------"
set -g status-interval 60        # frequency of status line updates
set -g status-justify centre     # center window list
setw -g mode-keys vi             # vi keys to move 
unbind v                         # Open panes in same directory as tmux-panes script
unbind n
bind v send-keys " ~/tmux-panes -h" C-m
bind n send-keys " ~/tmux-panes -v" C-m
unbind Up                        # Maximizing and Minimizing...
bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
# Make keys for copy mode be like vi
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection

Finalmente (para fechar o loop), aqui estão as minhas próprias configurações de .vimrc que eu gosto de ter que tornar o shell mais fácil de usar:

" mdd specific stuff --- start
set hlsearch
set incsearch
set number
" more3 mdd stuff - set tabs to be spaces and length of 2 characters.
set smartindent
set tabstop=2
set shiftwidth=2
set expandtab
" mdd specific stuff --- end
"
" Forget being compatible with good ol' vi
set nocompatible

" Get that filetype stuff happening
filetype on
filetype plugin on
filetype indent on

" Turn on that syntax highlighting
syntax on

" Why is this not a default
set hidden

" Don't update the display while executing macros
set lazyredraw

" At least let yourself know what mode you're in
set showmode

" Enable enhanced command-line completion. Presumes you have compiled
" with +wildmenu.  See :help 'wildmenu'
set wildmenu

" Let's make it easy to edit this file (mnemonic for the key sequence is
" 'e'dit 'v'imrc)
nmap <silent> ,ev :e $MYVIMRC<cr>

" And to source this file as well (mnemonic for the key sequence is
" 's'ource 'v'imrc)
nmap <silent> ,sv :so $MYVIMRC<cr>

highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
autocmd InsertLeave * match ExtraWhitespace /\s\+$/
autocmd BufWinLeave * call clearmatches()

Por último, faço algumas alterações no meu arquivo .bashrc Por exemplo, com shopt -s autocd quando eu digito um nome de diretório (que existe), meu CD do shell está nesse diretório imediatamente. Bacana! Então aqui estão minhas alterações .bashrc:

# Automatic cd'ing
shopt -s autocd

# Have cd show directory info ('cos my shell doesn't show full directory path in $PS1 prompt (intended).
cd() {
      builtin cd "$@" && pwd 
  }

# enable programmable completion features
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # Load RVM into a shell session *as a function*

# mdd Terminal Multiplexor 6/15/2012
if [[ ! $TERM =~ screen ]]; then
    exec tmux
fi

[ -z "$TMUX" ] && export TERM=xterm-256color

export EDITOR=vim

git config --global --add color.ui true
    
por 26.11.2012 / 21:34
6

Estou usando o XMonad + tmux + Emacs para uma configuração semelhante.

Eu usei ratpoison por um ano no passado, mas o XMonad se sentiu mais robusto. Eu nunca tive nenhum problema em meus 256MB, 512MB caixas com ele. Ratpoison tinha alguns problemas de estabilidade, mas isso é anedótico e as coisas podem ter mudado desde então.

Eu também usei o GNU screen, mas o tmux tem alguns recursos que a tela não possui.

Se você já conhece o vim, é melhor não aprender uma nova ferramenta. Se você não o fizer, o Emacs poderá empregar vários shells ( C-u M-x shell ), usar seu shell favorito ( M-x term ), escrever, compilar e depurar seus programas, ler seus e-mails, hangout no IRC, ler web / info / man pages, execute a maioria das shells REPL (por exemplo, M-x run-python ), use git / hg / svn dentro dele, edite arquivos remotos com o TRAMP, use dired para fazer quase todas as operações de arquivo, use grep / find / ack dentro dele. Você pode usar o Emacs com ou sem X. Você não precisa de um multiplexador terminal como o screen ou o tmux, mas eu prefiro rodar o emacs como um servidor e usar o emacsclient do tmux se estiver rodando ele do shell.

    
por 23.11.2012 / 13:41
3
  • solução sem nenhum X: framebuffer + console Linux + tela GNU + vim + w3m
  • solução com X mas sem ambiente de desktop: dwm + urxvt + tela GNU + vim + w3m + surf

O dwm usa apenas algumas centenas de kB de memória, com teclado, mas você também pode usar o mouse, se quiser. Verifique o link para ferramentas mais simples, mas poderosas.

    
por 26.11.2012 / 01:07
2

Para vários shells com fácil navegação pelo teclado entre eles, você pode querer olhar para GNU Screen , ou byobu (que é um aprimoramento disso).

    
por 22.11.2012 / 20:09
2

Eu empreendi um esforço semelhante há alguns meses, abandonando meu mouse e explorando uma infinidade de set ups e gerenciadores de janelas. Parece que você já recebeu muitas sugestões úteis, mas imaginei que alguns centavos extras não poderiam machucar. Aqui estão meus dois:

Dê uma olhada no gerenciador de janelas do i3. É leve, com configuração simples e não requer uma recompilação depois de alterar a configuração. A funcionalidade de ladrilhos e os espaços de trabalho marcados significam nenhum mouse e infinitas possibilidades baseadas na preferência e no espaço da tela. Programas podem ser atribuídos a tags e chaves podem ser vinculados a praticamente qualquer coisa. i3status ou conky são facilmente canalizados para o i3 para informações do sistema. Instale o dmenu e desconecte o mouse.

Experimente uma distro leve. O Arch, o Gentoo e o Slackware oferecem diferentes opções para configurar um ambiente leve. Comece pequeno e preste atenção às dependências. Instale apenas o que você precisa e aprenda a configurá-lo corretamente. Não inicie o X na inicialização. Aprenda a usar todas as ferramentas às suas custas. Vim é uma fera. Se você já sabe, use-o. Se não, aprenda. Preste atenção aos detalhes. Aprenda o que você tem no seu sistema e por que ele está lá.

    
por 26.11.2012 / 06:04
1

Eu tive um desejo semelhante há cerca de seis meses. Principalmente porque eu estava trabalhando via SSH durante todo o dia. Como já foi sugerido, use a tela GNU. É muito terrível (IMHO) logo após instalá-lo. Contudo! É altamente personalizável através do arquivo .screenrc. Há uma abundância de tutoriais on-line que fornecem código que você pode cortar e colar para obtê-lo como quiser.

Cheguei a montar alguns scripts para configurar esse ambiente - MALiCE - 'My Awesome Linux Coding Environment'. Está disponível no Github aqui:

MALI

Isso também documenta muitos atalhos de teclado, bem como uma amostra de arquivos .muttrc e .screenrc - que são configurados para funcionar com coisas como o gmail.

Note que não é perfeito, mas pode poupar algum tempo e esforço para dar uma olhada em alguns dos arquivos de configuração e scripts. Há um strong viés de vim.

Eu também recomendaria programas como o cmus (media player baseado em texto - muito bom) e o mutt (cliente de email - novamente configurado via arquivo de texto .muttrc). Há também clientes de IRC baseados em texto e, acredite ou não, os decodificadores de vídeo baseados em texto, que transformarão o vídeo em ASCII - um pouco extremos, mas cada um deles próprios.

Se você não quiser uma área de trabalho, então há várias opções. Por exemplo, você poderia instalar o slackware, que se bem me lembro, inicializa em uma interface de linha de comando. Você tem que sair do seu caminho para iniciar a GUI.

Espero que isso ajude. Sinta-se à vontade para pedir mais sugestões.

    
por 22.11.2012 / 21:29
0

link

link

Mas nem todos são suportados por todas as placas gráficas, você deve testá-las.

Para alternar entre vários shells, acho que o Alt-F é rápido o suficiente.

    
por 22.11.2012 / 19:08
0

A chave para isso não é a distribuição, mas as ferramentas. Basta parar de usar as ferramentas da GUI e ajustar as ferramentas da CLI para que se pareçam e se comportem exatamente como você gostaria. Uma maneira é editar ~/.Xresources e, em seguida, carregá-lo com xrdb em ~/.xinitrc . Lá, você também pode iniciar um monte de aplicativos que você sempre usa.

Obviamente você precisa de uma boa concha: eu diria zsh. Você terá que trabalhar muito em ~/.zshrc . (Mas o bash também funcionaria, é claro. Então, ~/.bashrc seria o lugar.)

Em segundo lugar, um editor. Emacs ou vim, dependendo do que você usa atualmente. Um editor menos avançado (por exemplo, nano) não funciona. Assim como no shell, você faria muito trabalho com ~/.emacs ou o (s) arquivo (s) init correspondente (s).

Você precisa incorporar o máximo que puder em seu editor de texto. Vou dar alguns exemplos do mundo do Emacs, simplesmente porque sou um usuário do Emacs. Para email, rmail. Para gerenciamento de arquivos, dired. Para navegação na web, o W3M. Para notícias, gnus (embora eu não use). Para man pages, M-x man . E assim por diante.

O motivo pelo qual você faria isso e não usa outros aplicativos da CLI (por exemplo, apenas man para páginas man, lynx para navegação, etc.) é:

1) o nível de integração (matar, arrancar, fazer atalhos; tudo em um piscar de olhos ...)

2) os atalhos de teclado para navegação no cursor, pesquisa, etc. (ou seja, sua memória muscular)

Quanto ao X, você não precisa abandoná-lo. Só porque você quer tudo na CLI não significa que você não quer GFX (ou - pelo menos, eu quero apenas CLI, e GFX). Por exemplo, embora você modifique imagens com (CLI) mgrify ou convert, você ainda deseja exibi-las para verificar o resultado (por exemplo, em gliv; basta desativar a barra de menus para não ser tentado a usar o mouse). Outro exemplo é o LaTeX e documentos PDF.

Quanto ao terminal, a maioria das pessoas diria screen ou tmux, mas você também pode usar os terminais virtuais Linux (o console, ou ttys). No X, o urxvt tem uma extensão Perl que ativa as guias. Para aqueles (ttys e urxvt) você pode configurar uma interface uniforme, por exemplo, Alt-J / K para alternar entre as guias, para que você não tenha que usar as teclas de seta (ou o que for padrão).

Boa sorte :) Sinta-se à vontade para me enviar algumas dicas quando terminar (ou quase lá ... você nunca termina), pois estou na mesma trilha que você.

    
por 24.11.2012 / 08:25