Linux'ta ultra hafif metin tabanlı programlama ortamı için önerilen kurulum


14

Özel ihtiyaçlarım için bir kurulum önerileri arıyorum. Üniversiteden beri çok fazla linux yapmadım ve hobiye geri dönmek istiyorum. Bazı çok güçlü olmayan donanımım var (512 MB ram, tek çekirdekli). Her şeyi vim gibi metin tabanlı kabuklar ve editörler aracılığıyla yapmak istiyorum. Amacım asla fareye dokunmamak.

Bir kerede birden fazla kabuk açık yeteneğine ihtiyacım var, biri bir web sunucusu, biri çalışan vim, biri benim uygulama inşa boru hattı, başka bir wget, grepping ve untarring, vb gibi geçici kabuk komutları için çalışan gerekir. klavye ile yeni kabuklar açabilir ve kabuklar arasında hızlı bir şekilde geçiş yapabilirsiniz.

Ama birden kabukları istiyorum rağmen ben do not grafiksel masaüstü ortamı istiyoruz. Fareyi kullanmak için hiç cazip olmak istemiyorum; amacımın bir kısmı, kendimi çeşitli görevleri yerine getirmenin komut satırı yolunu öğrenmeye zorlamak.

Ayrıca büyük monitörümden yararlanabilmek, birkaç yüz sütunlu vim ile vim çalıştırmak istiyorum.

Mümkün mü?


1
DVM'ye bir göz atın ... Ayrıca tmux veya ekran ile de birleştirebilirsiniz.
jasonwryan

1
Bu soru bir topluluk wiki'si olarak daha uygun olabilir.
jw013 23:12

Yanıtlar:


5

Sizin için bir tavsiyem olduğunu fark etmeden önce birkaç kez sorularınızı okudum: tmux ile vim: http://tmux.sourceforge.net/

tmux '1' içinde birden fazla pencere ve bölmeye sahip olmanızı sağlayan bir ekran 'çoklayıcı'

Saygıdeğer 'ekran' programının halefidir, birçok klibi kodlayan bir elyaftır. Vim üzerindeki orijinal kazanan özelliklerinden biri, pencereleri dikey ve yatay olarak bölme yeteneğiydi. Ancak ekran ilerledi ve şimdi bunu da yapabilir.

Misal:

resim açıklamasını buraya girin

Kurulumun tavsiye edeceğim bir diğer kısmı da iyi bir takma ad kümesidir. Bunlar yazmayı ve etkileşimi çok daha kolay ve hızlı hale getirecek

Favorilerimden bazıları burada örnek olarak gösterilmektedir:

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 ;)

Takma adlar, .bashrc'den çağrılan bir .bash_aliases dosyasında şu şekilde ayarlanabilir: # Takma ad tanımları. eğer [-f ~ / .bash_aliases]; sonra . ~ / .bash_aliases fi

Muhtemelen bu koda zaten sahipsiniz, bu yüzden sadece kendi .bash_aliases dosyanız.

Her iki seçenek de bir Mac üzerinde çalışır ve bu benim için önemli bir husustur (çoğunlukla Ubuntu kullanıcısı).

Tmux kullanan çoğu kişi tuşları kolaylaştırmak için anahtarları yeniden eşler. Varsayılan bağlantılar o kadar da iyi değil. İşte ayarlarım:

$ 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

Son olarak (döngüyü kapatmak için), işte kabuğumun kullanımını kolaylaştırmak zorunda kaldığım benim .vimrc ayarlarım kendilerini:

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

Son olarak .bashrc dosyamda birkaç değişiklik yapıyorum Mesela shopt -s autocdkabuk cd'leri derhal bu dizine bir dizin adı (var) yazdığımda. Şık! İşte benim .bashrc değişiklikleri:

# 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

Güzel detaylı cevap. Bir yıl için tmux kullanıyorum (ve yaklaşık 25 için vi / vim) ama burada bazı şeyler aldım.
Dan

Benim gibi bir çaylak için harika, harika bir cevap. Eksik olan tek şey hakkında hangi vim eklentilerini kullandığınız ... ama bu başka bir gün için başka bir soru. :) Tekrar teşekkürler ... her ne kadar üzerinden geçip her şeyi denemek sonsuza dek sürecek olsa da, devam etmek istedim sana kabul edilen cevabı ver.
Kevin Pauli

Tabii, aslında herhangi bir eklenti kullanmadığımı düşünüyorum ama raylar üzerinde yakut alanım için de dahil olmak üzere birçok kullanılabilir olduğunu biliyorum.
Michael Durrant

2
Burada söylediklerinizin çoğu yararlı olabilir, ancak bir şey kapalı: vim bölmeleri hem yatay hem de dikey olarak kolayca bölebilir.
dubiousjim

1
Ekranın şimdi yatay ve dikey bölünmeler yapabileceğini unutmayın.
Michael Durrant

6

Benzer bir kurulum için XMonad + tmux + Emacs kullanıyorum.

Geçmişte bir yıl boyunca zıpkın kullandım ama XMonad daha sağlam hissetti. 256MB, 512MB kutularımda hiç sorun yaşamadım. Ratpoison'un bazı stabilite problemleri vardı, ancak bu anekdottur ve o zamandan beri işler değişmiş olabilir.

Ben de GNU ekran kullandım ama tmux ekranın sahip olmadığı bazı özelliklere sahip.

Vim'i zaten biliyorsanız, yeni bir araç öğrenmemelisiniz. Yapmazsanız, Emacs birden fazla kabuk C-u M-x shellkullanabilir ( ), favori kabuğunuzu ( M-x term) kullanabilir, programlarınızı yazabilir, derleyebilir ve hata ayıklayabilir, postalarınızı okuyabilir, IRC'de hangout yapabilir, web / bilgi / man sayfalarını okuyabilir, çoğu REPL çalıştırabilirsiniz kabuklar (örn. M-x run-python) içinde git / hg / svn kullanın, uzak dosyaları TRAMP ile düzenleyin, hemen hemen tüm dosya işlemlerini yapmak için dired kullanın, içinde grep / find / ack kullanın. Emacs'ı X ile veya X olmadan kullanabilirsiniz. Ekran veya tmux gibi bir terminal çoklayıcıya ihtiyacınız yoktur, ancak emacs'ı sunucu olarak çalıştırmayı ve kabuktan çalıştırılıyorsa tmux'dan emacsclient kullanmayı tercih ederim.


Terminatör kullanmanızı öneririm! Ama bu tamamen bir seçim!
Pranit Bauva

3
  • X olmadan çözüm: framebuffer + Linux konsolu + GNU ekran + vim + w3m
  • ile çözüm ancak masaüstü ortamı yok: dwm + urxvt + GNU ekran + vim + w3m + sörf

dwm sadece birkaç yüz kB bellek kullanır, klavyeyle çalışır, ancak isterseniz fareyi de kullanabilirsiniz. Daha basit ancak güçlü araçlar için http://suckless.org adresini ziyaret edin .


2

Aralarında kolay klavye gezintisi olan birden çok kabuk için GNU Ekranına veya byobu'ya (bunun bir geliştirmesi) bakmak isteyebilirsiniz .


2

Birkaç ay önce benzer bir çaba gösterdim, faremi terk ettim ve çok sayıda kurulum ve pencere yöneticisini keşfettim. Görünüşe göre zaten birçok yararlı öneri teklif edildi, ancak birkaç sent daha incitemediğini düşündüm. İşte benim iki:

İ3 pencere yöneticisine bir göz atın. Basit yapılandırmayla hafiftir ve yapılandırmayı değiştirdikten sonra yeniden derleme gerektirmez. Döşeme işlevselliği ve etiketli çalışma alanları, tercih ve ekran alanına bağlı olarak fare ve sonsuz olasılık olmadığı anlamına gelir. Programlar etiketlere atanabilir ve anahtarlar hemen hemen her şeye bağlanabilir. i3status veya conky, sistem bilgisi için kolayca i3'e bağlanır. Dmenu yükleyin ve farenizi çıkarın.

Hafif bir dağıtım deneyin. Arch, Gentoo ve Slackware, hafif bir ortam oluşturmak için farklı seçenekler sunar. Küçük başlayın ve bağımlılıklara dikkat edin. Yalnızca ihtiyacınız olanı yükleyin ve düzgün yapılandırmayı öğrenin. X'i önyükleme sırasında başlatmayın. Tüm araçları pahasına kullanmayı öğrenin. Vim bir canavar. Zaten biliyorsanız, kullanın. Değilse, öğrenin. Detaylara dikkat edin. Sisteminizde neler olduğunu ve neden orada olduğunu öğrenin.


"Hafif dağıtım" yaklaşımı. Komut ile komut vermeniz için bile ( Gentoo Kurulum El Kitabı mükemmel), ellerinizi kirletmeye gerçekten zorlar , çünkü her sistem farklıdır. İlk yükleme size X bile vermez, bu yüzden komut satırında sıkışıp kalırsınız.
ND Geek

1

Altı ay önce benzer bir arzum vardı. Çünkü öncelikle gün boyunca SSH ile çalışıyordum. Daha önce de önerildiği gibi, GNU ekranını kullanın. Kurduktan hemen sonra oldukça korkunç (IMHO). Ancak! .Screenrc dosyası aracılığıyla oldukça özelleştirilebilir. Kesip istediğiniz gibi almak için yapıştırabileceğiniz kod sağlayan birçok çevrimiçi öğretici vardır.

Böyle bir ortam oluşturmak için birkaç senaryoyu bir araya getirecek kadar ileri gittim - MALiCE - 'My Awesome Linux Coding Environment'. Github'da mevcut:

kötü niyet

Bu, gmail gibi şeylerle çalışmak üzere ayarlanmış çok sayıda klavye kısayolunun yanı sıra örnek bir .muttrc ve .screenrc dosyalarını da belgeler.

Mükemmel olmadığını unutmayın, ancak bazı yapılandırma dosyalarına ve komut dosyalarına göz atmanız biraz zaman ve çabadan tasarruf edebilir. Güçlü bir vim önyargısı var.

Ayrıca cmus (metin tabanlı medya oynatıcı - oldukça iyi) ve mutt (e-posta istemcisi - yine metin dosyası .muttrc aracılığıyla yapılandırılmış) gibi programları da öneririm. Ayrıca metin tabanlı IRC istemcileri vardır ve ister inanın ister inanmayın, videoyu ASCII'ye dönüştürecek metin tabanlı video kod çözücüler - biraz aşırı ama her biri kendi başına.

Bir masaüstü istemiyorsanız, o zaman birçok seçenek vardır. Örneğin, bir komut satırı arabirimine doğru bir şekilde önyükleme yaparsam slackware yükleyebilirsiniz. GUI'yi başlatmak için kendi yolunuzdan çıkmak zorundasınız.


elinksWeb tarayıcıyı bu iyi metin tabanlı yardımcı programlar listesine ekleyebiliriz .
Stéphane Chazelas

Diğer metin tabanlı web tarayıcılarıyla nasıl karşılaştırılır? Komut satırından web'de sörf yapmaya hiç


0

Bunun anahtarı dağıtım değil, araçlar. GUI araçlarını kullanmayı bırakın ve CLI araçlarını tam istediğiniz gibi görünüp davranın. Tek yönlü düzenleme etmektir ~/.Xresourcesve ardından ile yükleyebilirsiniz xrdbiçinde ~/.xinitrc. Orada, her zaman kullandığınız bir grup uygulamayı da başlatabilirsiniz.

Açıkçası iyi bir mermiye ihtiyacınız var: Ben zsh derdim. Üzerinde yoğun olarak çalışmanız gerekecek ~/.zshrc. (Ama bash da elbette işe yarardı. O zaman ~/.bashrcyer olurdu.)

İkincisi, bir editör. Şu anda hangisini kullandığınıza bağlı olarak emacs veya vim. Daha az gelişmiş bir düzenleyici (ör. Nano) bunu yapmaz. Kabukta olduğu gibi, üzerinde ~/.emacsveya ilgili init dosyalarında çok fazla iş yaparsınız .

Metin düzenleyicinize mümkün olduğunca dahil etmeniz gerekir. Emacs dünyasından bazı örnekler vereceğim, çünkü bir Emacs kullanıcısıyım. Posta için rmail. Dosya yönetimi için dired. Web'de gezinmek için W3M. Haberler için gnus (kullanmama rağmen). Adam sayfaları için M-x man,. Ve bunun gibi.

Bunu yapmanın ve diğer CLI uygulamalarını kullanmamanızın nedeni (ör. Yalnızca manman sayfaları, tarama için vaşak vb.):

1) entegrasyon seviyesi (öldür, çek, kısayollar yap; her şey yanıp sönüyor ...)

2) imleçte gezinme, arama vb. İçin klavye kısayolları (örn. Kas belleğiniz)

X'e gelince, onu terk etmenize gerek yok. CLI'deki her şeyin olmasını istemeniz, GFX'i hiç istemediğiniz anlamına gelmez (veya en azından sadece CLI ve GFX'i istiyorum). Örneğin, görüntüleri (CLI) mogrify veya dönüştürmeyle değiştirseniz de, sonucu kontrol etmek için yine de görüntülemek istersiniz (örneğin, gliv'de; fareyi kullanmak için ayarlanmaması için menü çubuğunu devre dışı bırakmanız yeterlidir). Diğer bir örnek ise LaTeX ve PDF belgeleridir.

Terminal gelince, çoğu kişi ekran veya tmux derdi, ancak Linux sanal terminallerini de (konsol veya ttys) kullanabilirsiniz. X'te urxvt, sekmeleri etkinleştiren bir Perl uzantısına sahiptir. Bunlar için (ttys ve urxvt), sekmeler arasında geçiş yapmak için Alt-J / K gibi tek bir arabirim kurabilirsiniz, böylece ok tuşlarına (veya varsayılan olan her şeye) erişmeniz gerekmez.

İyi şanslar :) İşiniz bittiğinde (veya neredeyse orada ... hiç bitirmediniz) bana kendi işaretçilerinizi postalamaktan çekinmeyin, çünkü sizinle aynı yoldayım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.