Sugerowana konfiguracja ultralekkiego tekstowego środowiska programistycznego w systemie Linux

14

Szukam sugestii dotyczących konfiguracji dla moich konkretnych potrzeb. Nie zrobiłem wiele linuksa od czasu college'u i chcę wrócić do tego jako hobby. Mam trochę niezbyt mocny sprzęt (512 MB pamięci RAM, pojedynczy rdzeń). Chcę robić wszystko za pomocą powłok tekstowych i edytorów, takich jak vim. Moim celem jest, aby nigdy nie dotykać myszy.

Potrzebuję możliwości otwarcia wielu powłok jednocześnie, jednej z uruchomionym serwerem WWW, jednej z uruchomionym vimem, jednej z uruchomionym potokiem kompilacji aplikacji, innym dla poleceń powłoki ad-hoc, takich jak wget, grepping i rozpakowywanie itd. Muszę być w stanie otwierać nowe powłoki i szybko przełączać się między nimi za pomocą klawiatury.

Ale chociaż chcę wielu powłok, nie chcę środowiska graficznego. Nie chcę nigdy ulec pokusie używania myszy; częścią mojego celu jest zmuszenie się do nauki sposobu wykonywania różnych zadań z wiersza poleceń.

Chcę też móc korzystać z mojego dużego monitora, działającego w vimie z kilkoma setkami kolumn.

czy to możliwe?

Kevin Pauli
źródło
1
Spójrz na dvtm ... Możesz również połączyć go z tmux lub screen.
jasonwryan
1
To pytanie może być bardziej odpowiednie jako wiki społeczności.
jw013

Odpowiedzi:

5

Przeczytałem twoje pytania kilka razy, zanim zdałem sobie sprawę, że zdecydowanie mam dla ciebie zalecenie: vim with tmux: http://tmux.sourceforge.net/

tmux to „multiplekser” ekranu, który pozwala mieć kilka okien i paneli „w obrębie 1”

Jest następcą czcigodnego programu „screen”, stanowiącego podstawę wielu koderów cli. Jedną z jego oryginalnych zwycięskich funkcji nad vimem była zdolność do dzielenia okien zarówno pionowo, jak i poziomo. Jednak ekran przesunął się do przodu i teraz może to zrobić.

Przykład:

wprowadź opis zdjęcia tutaj

Kolejną częścią konfiguracji, którą poleciłbym, jest dobry zestaw aliasów. Dzięki temu pisanie na klawiaturze i interakcja będą o wiele łatwiejsze i szybsze

Niektóre z moich ulubionych są pokazane tutaj jako przykłady:

alias gcv='git commit'
alias gg='git grep ' # for searching (add parameter)
alias gst='git status -sb' # I must use this 100 times a day!!!
alias h='history | tail'
alias hg='history | grep' # for searching my history (add parameter)
alias l='ls -alFtrG'
alias ls='ls --color=auto'
alias mv='mv -i'
alias p='pwd'# at least 200 times a day! so 2 chrs saved * 200 = 400 less characters to type ;)

Aliasy można ustawić w pliku .bash_aliases, który jest wywoływany z .bashrc z: # definicjami aliasów. if [-f ~ / .bash_aliases]; następnie . ~ / .bash_aliases fi

Możliwe, że masz już ten kod, więc po prostu własny plik .bash_aliases.

Obie te opcje działają na komputerze Mac i jest to dla mnie ważne (głównie użytkownik Ubuntu).

Większość osób korzystających z tmux mapuje klucze, aby było łatwiej. Domyślne wiązania po prostu nie są tak dobre. Oto moje ustawienia:

$ cat ~ / tmux.conf

# mdd tmux settings
bind r source-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

Wreszcie (aby zamknąć pętlę), oto moje ustawienia .vimrc, które lubię, aby ułatwić korzystanie z powłoki:

" 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()

Na koniec dokonuję kilku zmian w pliku .bashrc. Na przykład, shopt -s autocdgdy natychmiast wpisuję nazwę katalogu (który istnieje), moje płyty CD z powłoką. Sprytne! Oto moje zmiany .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
Michael Durrant
źródło
Ładna szczegółowa odpowiedź. Korzystam z tmux od około roku (i vi / vim od około 25), ale tutaj znalazłem kilka rzeczy.
Dan
Świetna, świetna odpowiedź dla takiego nooba jak ja. Jedyne, czego brakuje, to jakich wtyczek vim używasz ... ale to kolejne pytanie na kolejny dzień. :) Jeszcze raz dziękuję ... chociaż zajmie mi to wieczność, aby przejść przez to i wypróbować wszystko, chciałem iść dalej, dać ci zaakceptowaną odpowiedź.
Kevin Pauli
Jasne, tak naprawdę myślę, że nie używam żadnych wtyczek, ale wiem, że jest wiele dostępnych, w tym niektóre dla mojego obszaru ruby ​​na szynach.
Michael Durrant,
2
Wiele z tego, co tu powiesz, może być przydatne, ale jedno jest wyłączone: vim może łatwo podzielić panele zarówno w poziomie, jak i w pionie.
dubiousjim
1
Zaktualizowano, aby pamiętać, że ekran może teraz wykonywać podział poziomy i pionowy.
Michael Durrant,
6

Używam XMonad + tmux + Emacs do podobnej konfiguracji.

W przeszłości stosowałem ratpoison, ale XMonad czuł się bardziej solidny. Nigdy nie miałem z tym żadnych problemów w moich 256 MB, 512 MB pudełkach. Ratpoison miał pewne problemy ze stabilnością, ale jest to anegdota i od tego czasu mogło się to zmienić.

Użyłem również ekranu GNU, ale tmux ma pewne funkcje, których ekran nie ma.

Jeśli znasz już vima, lepiej nie naucz się nowego narzędzia. Jeśli tego nie zrobisz, Emacs może używać wielu powłok ( C-u M-x shell), używać ulubionej powłoki ( M-x term), możesz pisać, kompilować i debugować swoje programy, czytać maile, spotykać się w IRC, czytać strony internetowe / informacyjne / man, uruchamiać większość REPL powłoki (np. M-x run-python), użyj w nim git / hg / svn, edytuj zdalne pliki za pomocą TRAMP, użyj dired do wykonywania prawie wszystkich operacji na plikach, użyj grep / find / ack w nim. Możesz używać Emacsa z lub bez X. Nie potrzebujesz terminalnego multipleksera, takiego jak screen lub tmux, ale wolę uruchamiać emacsa jako serwer i używać emacsclient z tmux, jeśli uruchamiasz go z powłoki.

Emre Sahin
źródło
Sugerowałbym użycie terminatora! Ale to tylko jeden wybór!
Pranit Bauva
3
  • rozwiązanie bez X: framebuffer + konsola Linux + ekran GNU + vim + w3m
  • rozwiązanie z X, ale bez środowiska graficznego: dwm + urxvt + ekran GNU + vim + w3m + surf

dwm wykorzystuje tylko kilkaset kB pamięci, sterowany klawiaturą, ale możesz także użyć myszy, jeśli chcesz. Sprawdź http://suckless.org, aby uzyskać bardziej proste, ale potężne narzędzia.

Jing
źródło
2

W przypadku wielu powłok z łatwą nawigacją między nimi za pomocą klawiatury, możesz zajrzeć do ekranu GNU lub byobu (co jest jego ulepszeniem).


źródło
2

Podobne przedsięwzięcie podjąłem kilka miesięcy temu, porzucając mysz i badając wiele ustawień i menedżerów okien. Wygląda na to, że otrzymałeś już wiele pomocnych sugestii, ale pomyślałem, że kilka dodatkowych centów nie zaszkodzi. Oto moje dwa:

Spójrz na menedżera okien i3. Jest lekki, z prostą konfiguracją i nie wymaga ponownej kompilacji po zmianie konfiguracji. Funkcja kafelkowania i oznaczone obszary robocze oznaczają brak myszy i nieograniczone możliwości w zależności od preferencji i miejsca na ekranie. Programy można przypisywać do tagów, a klucze można przypisywać do niemal wszystkiego. i3status lub conky są łatwo przesyłane do i3 w celu uzyskania informacji o systemie. Zainstaluj dmenu i odłącz mysz.

Wypróbuj lekką dystrybucję. Arch, Gentoo i Slackware oferują różne opcje konfiguracji lekkiego środowiska. Zacznij od małej i zwróć uwagę na zależności. Zainstaluj tylko to, czego potrzebujesz i naucz się go poprawnie konfigurować. Nie uruchamiaj X podczas rozruchu. Naucz się korzystać ze wszystkich narzędzi na swój koszt. Vim jest bestią. Jeśli już to wiesz, użyj go. Jeśli nie, naucz się tego. Zwróć uwagę na szczegóły. Dowiedz się, co masz w systemie i dlaczego.

marquezc329
źródło
Oparcie się na podejściu „lekkiej dystrybucji”. Naprawdę zmusza cię to do zabrudzenia rąk, nawet jeśli układają je dla ciebie na polecenie ( Podręcznik instalacji Gentoo jest doskonały), ponieważ każdy system jest inny. Pierwsza instalacja nie daje nawet X, więc utkniesz w linii poleceń.
ND Geek
1

Podobne pragnienie miałem około sześć miesięcy temu. Przede wszystkim dlatego, że pracowałem przez SSH przez cały dzień. Jak już sugerowano, użyj ekranu GNU. Jest dość okropny (IMHO) zaraz po instalacji. Jednak! Jest wysoce konfigurowalny za pomocą pliku .screenrc. Istnieje wiele samouczków online, które zawierają kod, który można wyciąć i wkleić, aby uzyskać go tak, jak chcesz.

Poszedłem tak daleko, że przygotowałem kilka skryptów do skonfigurowania takiego środowiska - MALiCE - „My Awesome Linux Coding Environment”. Jest dostępny na Github tutaj:

Złośliwość

Dokumentuje to również wiele skrótów klawiaturowych, a także przykładowe pliki .muttrc i .screenrc - które są skonfigurowane do pracy z takimi rzeczami, jak Gmail.

Zauważ, że nie jest idealny, ale może zaoszczędzić trochę czasu i wysiłku, aby przyjrzeć się niektórym plikom konfiguracyjnym i skryptom. Istnieje silne uprzedzenie vim.

Poleciłbym także programy takie jak cmus (tekstowy odtwarzacz multimedialny - całkiem niezły) i mutt (klient poczty e-mail - ponownie skonfigurowany za pomocą pliku tekstowego .muttrc). Istnieją również tekstowi klienci IRC i wierzcie lub nie, tekstowe dekodery wideo, które zamieniają wideo w ASCII - trochę ekstremalne, ale każde z nich własne.

Jeśli nie chcesz w ogóle pulpitu, istnieje wiele opcji. Na przykład możesz zainstalować slackware, które, jeśli dobrze pamiętam, uruchamia się do interfejsu wiersza poleceń. Musisz zrobić wszystko, aby uruchomić GUI.

Rui F. Ribeiro
źródło
Możemy dodać elinksprzeglądarkę internetową do tej listy dobrych narzędzi tekstowych.
Stéphane Chazelas
Jak wypada w porównaniu z innymi przeglądarkami tekstowymi? Nigdy nie mogłem przyzwyczaić się do surfowania po Internecie z wiersza poleceń: p
0

Kluczem do tego nie jest dystrybucja, ale narzędzia. Po prostu przestań używać narzędzi GUI i dostosuj narzędzia CLI, aby wyglądały i zachowywały się dokładnie tak, jak chcesz. Jednym ze sposobów jest do edycji ~/.Xresources, a następnie załaduj go xrdbw ~/.xinitrc. Tam możesz również uruchomić zestaw aplikacji, z których zawsze korzystasz.

Oczywiście potrzebujesz dobrej powłoki: powiedziałbym, że zsh. Będziesz musiał intensywnie pracować ~/.zshrc. (Ale bash oczywiście też by działał. Wtedy ~/.bashrcbyłoby to miejsce.)

Po drugie, redaktor. Emacs lub vim, w zależności od tego, którego obecnie używasz. Mniej zaawansowany edytor (np. Nano) nie zadziała. Podobnie jak w przypadku powłoki, dużo pracy wykonasz na ~/.emacsodpowiednich plikach inicjujących.

Musisz włączyć jak najwięcej w swoim edytorze tekstu. Podam kilka przykładów ze świata Emacsa, po prostu dlatego, że jestem użytkownikiem Emacsa. W przypadku poczty rmail. Do zarządzania plikami, dired. Do przeglądania stron internetowych, W3M. Dla wiadomości, gnus (chociaż go nie używam). Na stronach podręcznika, M-x man. I tak dalej.

Powodem, dla którego to robisz i nie używasz innych aplikacji CLI (np. Tylko mando stron man, rysi do przeglądania itp.) Jest:

1) poziom integracji (zabij, szarpnij, twórz skróty; wszystko w mgnieniu oka ...)

2) skróty klawiaturowe do nawigacji kursorem, wyszukiwania itp. (Np. Pamięć mięśni)

Co do X, nie musisz go porzucać. To, że chcesz mieć wszystko w CLI, nie oznacza, że ​​wcale nie chcesz GFX (lub - przynajmniej chcę tylko CLI i GFX). Na przykład, chociaż modyfikujesz obrazy za pomocą zamglenia lub konwersji (CLI), nadal chcesz go wyświetlić, aby sprawdzić wynik (na przykład w gliv; po prostu wyłącz pasek menu, aby nie kusiło go użycie myszy). Innym przykładem są dokumenty LaTeX i PDF.

Jeśli chodzi o terminal, większość ludzi powiedziałaby screen lub tmux, ale można również użyć wirtualnych terminali Linux (konsola lub ttys). W X urxvt ma rozszerzenie Perla, które włącza tabulatory. Dla tych (ttys i urxvt) możesz ustawić jednolity interfejs, na przykład Alt-J / K, aby przełączać się między kartami, więc nie musisz sięgać po klawisze strzałek (lub cokolwiek, co jest domyślne).

Powodzenia :) Zapraszam do przesłania mi swoich własnych wskazówek, kiedy skończysz (lub prawie tam ... nigdy nie skończyłeś), ponieważ jestem na tej samej ścieżce, co ty.

Emanuel Berg
źródło