Pengaturan yang disarankan untuk lingkungan pemrograman berbasis teks ultra-ringan di linux

14

Saya mencari saran untuk pengaturan untuk kebutuhan khusus saya. Saya belum melakukan banyak linux sejak kuliah dan ingin kembali ke dalamnya sebagai hobi. Saya memiliki beberapa perangkat keras yang tidak terlalu kuat (ram 512 MB, single core). Saya ingin melakukan semuanya melalui cangkang dan editor berbasis teks, seperti vim. Tujuan saya adalah tidak pernah menyentuh mouse.

Saya perlu kemampuan untuk membuka beberapa shell sekaligus, satu menjalankan server web, satu menjalankan vim, satu menjalankan aplikasi saya membangun pipeline, satu lagi untuk perintah shell ad-hoc seperti wget, grepping dan untarring, dll. Saya perlu dapat membuka shell baru dan beralih antar shell dengan cepat dengan keyboard.

Tetapi meskipun saya ingin banyak shell, saya tidak ingin lingkungan desktop grafis. Saya tidak pernah ingin tergoda untuk menggunakan mouse; bagian dari tujuan saya adalah untuk memaksa diri saya mempelajari cara baris perintah melakukan berbagai tugas.

Saya juga ingin dapat memanfaatkan monitor besar saya, menjalankan vim dengan beberapa ratus kolom dipslayed.

Apakah ini mungkin?

Kevin Pauli
sumber
1
Lihatlah dvtm ... Anda juga dapat menggabungkannya dengan tmux atau layar.
jasonwryan
1
Pertanyaan ini mungkin lebih cocok sebagai wiki komunitas.
jw013

Jawaban:

5

Saya membaca pertanyaan Anda beberapa kali sebelum saya menyadari bahwa saya pasti memiliki rekomendasi untuk Anda: vim with tmux: http://tmux.sourceforge.net/

tmux adalah layar 'multipleksor' yang memungkinkan Anda memiliki beberapa jendela dan panel 'dalam 1'

Ini adalah penerus dari program 'layar' yang terhormat, yang lama menjadi bahan pokok banyak cli coders. Salah satu fitur asli yang menang atas vim adalah kemampuan untuk melakukan split windows secara vertikal maupun horizontal. Namun layar telah bergerak maju dan sekarang dapat melakukannya juga.

Contoh:

masukkan deskripsi gambar di sini

Bagian lain dari pengaturan yang saya sarankan adalah set alias yang bagus. Ini akan membuat pengetikan dan interaksi Anda lebih mudah dan lebih cepat

Beberapa favorit saya ditampilkan di sini sebagai contoh:

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

Alias ​​dapat diatur dalam file .bash_aliases yang dipanggil dari .bashrc dengan: # Definisi alias. jika [-f ~ / .bash_aliases]; kemudian . ~ / .bash_aliases fi

Kemungkinan Anda sudah memiliki kode itu, jadi cukup file .bash_aliases Anda sendiri.

Kedua opsi ini berfungsi pada Mac dan itu merupakan pertimbangan penting bagi saya (sebagian besar pengguna Ubuntu).

Kebanyakan orang menggunakan tmux remap kunci untuk membuatnya lebih mudah. Binding default tidak begitu baik. Ini pengaturan saya:

$ 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

Akhirnya (untuk menutup loop), inilah pengaturan .vimrc saya sendiri yang saya suka harus membuat shell lebih mudah digunakan:

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

Akhirnya saya membuat beberapa perubahan pada file .bashrc saya. Misalnya dengan shopt -s autocdketika saya mengetik nama direktori (yang ada) cd shell saya ke dalam direktori itu segera. Bagus! Jadi, inilah perubahan .bashrc saya:

# 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
sumber
Jawaban terinci yang bagus. Saya telah menggunakan tmux untuk pertarungan setahun sekarang (dan vi / vim selama sekitar 25) tapi saya mengambil beberapa hal di sini.
Dan
Hebat, jawaban bagus untuk pemula seperti saya. Tentang satu-satunya hal yang hilang adalah plugin vim apa yang Anda gunakan ... tapi itu pertanyaan lain untuk hari lain. :) Terima kasih lagi ... walaupun itu akan membuat saya selamanya untuk melewatinya dan mencoba semuanya, saya ingin terus memberikan jawaban yang diterima.
Kevin Pauli
Tentu, saya benar-benar berpikir saya tidak menggunakan plugin apa pun tetapi saya tahu ada banyak tersedia termasuk beberapa untuk daerah ruby ​​saya pada rel.
Michael Durrant
2
Banyak dari apa yang Anda katakan di sini mungkin berguna, tetapi satu hal tidak aktif: vim dapat dengan mudah membagi panel secara horizontal dan vertikal.
dubiousjim
1
Diperbarui untuk dicatat bahwa layar dapat melakukan pemisahan horizontal dan vertikal sekarang.
Michael Durrant
6

Saya menggunakan XMonad + tmux + Emacs untuk pengaturan serupa.

Saya menggunakan ratpoison selama setahun di masa lalu tetapi XMonad merasa lebih kuat. Saya tidak pernah mengalami masalah dengan 256MB, 512MB kotak dengannya. Ratpoison memiliki beberapa masalah stabilitas, tetapi ini anekdotal dan banyak hal mungkin telah berubah sejak saat itu.

Saya juga menggunakan layar GNU tetapi tmux memiliki beberapa fitur yang belum dimiliki layar.

Jika Anda sudah tahu vim, Anda sebaiknya tidak mempelajari alat baru. Jika tidak, Emacs dapat menggunakan beberapa shell ( C-u M-x shell), gunakan shell favorit Anda ( M-x term), Anda dapat menulis, menyusun dan men-debug program Anda, membaca email Anda, hangout di IRC, membaca halaman web / info / manual, menjalankan sebagian besar REPL shell (misal M-x run-python), gunakan git / hg / svn di dalamnya, edit file jarak jauh dengan TRAMP, gunakan dired untuk melakukan hampir semua operasi file, gunakan grep / find / ack di dalamnya. Anda dapat menggunakan Emacs dengan atau tanpa X. Anda tidak memerlukan terminal multiplexer seperti layar atau tmux, tetapi saya lebih suka menjalankan emacs sebagai server dan menggunakan emacsclient dari tmux jika menjalankannya dari shell.

Emre Sahin
sumber
Saya akan menyarankan untuk menggunakan terminator! Tapi itu murni pilihan seseorang!
Pranit Bauva
3
  • solusi tanpa X sama sekali: framebuffer + Konsol Linux + Layar GNU + vim + w3m
  • solusi dengan X tetapi tanpa lingkungan desktop: dwm + urxvt + layar GNU + vim + w3m + surf

DWM hanya menggunakan beberapa ratus kB memori, didorong keyboard, tetapi Anda dapat menggunakan mouse juga jika Anda suka. Periksa http://suckless.org untuk alat yang lebih sederhana namun kuat.

Jing
sumber
2

Untuk beberapa shell dengan navigasi keyboard yang mudah di antara mereka, Anda mungkin ingin melihat ke Layar GNU , atau byobu (yang merupakan peningkatan dari itu).


sumber
2

Saya melakukan upaya serupa beberapa bulan yang lalu, meninggalkan mouse saya dan menjelajahi banyak set up dan window manager. Sepertinya Anda sudah ditawari banyak saran yang membantu, tapi saya pikir beberapa sen tambahan tidak ada salahnya. Inilah dua saya:

Lihatlah window manager i3. Ringan, dengan konfigurasi sederhana dan tidak memerlukan kompilasi ulang setelah mengubah konfigurasi. Fungsionalitas ubin dan ruang kerja yang ditandai tidak ada mouse dan kemungkinan tanpa batas berdasarkan preferensi dan ruang layar. Program dapat ditugaskan untuk tag dan kunci dapat diikat dengan apa saja. i3status atau conky mudah disalurkan ke i3 untuk info sistem. Instal dmenu dan cabut mouse Anda.

Coba distro ringan. Arch, Gentoo, dan Slackware semuanya menawarkan opsi berbeda untuk mengatur lingkungan yang ringan. Mulai dari yang kecil, dan perhatikan ketergantungannya. Instal hanya yang Anda butuhkan dan pelajari cara mengonfigurasinya dengan benar. Jangan mulai X saat boot. Belajarlah untuk menggunakan semua alat dengan biaya Anda. Vim adalah binatang buas. Jika Anda sudah mengetahuinya, gunakan itu. Jika tidak, pelajari itu. Perhatikan detailnya. Pelajari apa yang Anda miliki di sistem Anda dan mengapa ada di sana.

marquezc329
sumber
Menekan pendekatan "distro cahaya". Ini benar-benar memaksa Anda untuk membuat tangan Anda kotor, bahkan jika mereka mengeluarkannya untuk Anda berdasarkan perintah ( Buku Panduan Instalasi Gentoo sangat bagus), karena setiap sistem berbeda. Pemasangan awal bahkan tidak memberi Anda X, jadi Anda terjebak di baris perintah.
ND Geek
1

Saya memiliki keinginan yang sama sekitar enam bulan lalu. Terutama karena saya bekerja melalui SSH sepanjang hari. Seperti yang telah disarankan, gunakan layar GNU. Cukup mengerikan (IMHO) langsung setelah menginstalnya. Namun! Ini sangat dapat dikustomisasi melalui file .screenrc. Ada banyak tutorial online yang memberikan kode yang dapat Anda potong dan tempel untuk mendapatkannya sesuka Anda.

Saya melangkah lebih jauh dengan mengumpulkan beberapa skrip untuk mengatur lingkungan seperti itu - MALiCE - 'Lingkungan Pengkodean Linux Luar Biasa Saya'. Ini tersedia di Github di sini:

Kebencian

Ini juga mendokumentasikan banyak pintasan keyboard serta file .muttrc dan .screenrc sampel - yang disetel agar berfungsi dengan hal-hal seperti gmail.

Catatan ini tidak sempurna tetapi mungkin menghemat waktu dan usaha untuk melihat beberapa file dan skrip konfigurasi. Ada bias vim yang kuat.

Saya juga merekomendasikan program-program seperti cmus (media player berbasis teks - cukup bagus) dan mutt (klien email - lagi dikonfigurasi melalui file teks .muttrc). Ada juga klien IRC berbasis teks dan percaya atau tidak, decoder video berbasis teks yang akan mengubah video menjadi ASCII - sedikit ekstrem tetapi masing-masing menjadi milik mereka.

Jika Anda tidak ingin desktop sama sekali maka ada sejumlah opsi. Sebagai contoh, Anda dapat menginstal slackware, yang jika saya ingat dengan benar mem-boot ke antarmuka baris perintah. Anda harus keluar dari cara Anda untuk memulai GUI.

Rui F Ribeiro
sumber
Kita dapat menambahkan elinksbrowser web ke daftar utilitas berbasis teks yang bagus itu.
Stéphane Chazelas
Bagaimana cara membandingkannya dengan browser web berbasis teks lainnya? Saya tidak pernah terbiasa surfing web dari command-line: p
0

Kunci untuk ini bukan distribusi, tetapi alat. Berhentilah menggunakan alat GUI, dan atur alat CLI untuk terlihat dan berperilaku seperti yang Anda inginkan. Salah satunya adalah dengan mengedit ~/.Xresources, dan kemudian beban itu dengan xrdbdi ~/.xinitrc. Di sana, Anda juga dapat memulai banyak aplikasi yang selalu Anda gunakan.

Jelas Anda membutuhkan cangkang yang baik: Saya akan mengatakan zsh. Anda harus bekerja secara ekstensif ~/.zshrc. (Tapi bash akan bekerja juga, tentu saja. Lalu, ~/.bashrcakan menjadi tempatnya.)

Kedua, seorang editor. Emacs atau vim, tergantung yang Anda gunakan saat ini. Editor yang kurang canggih (misalnya, nano) tidak akan melakukannya. Seperti halnya shell, Anda akan melakukan banyak pekerjaan ~/.emacsatau file init yang sesuai.

Anda perlu memasukkan sebanyak mungkin di editor teks Anda. Saya akan memberikan beberapa contoh dari dunia Emacs, hanya karena saya pengguna Emacs. Untuk surat, rmail. Untuk manajemen file, dired. Untuk penelusuran web, W3M. Untuk berita, gnus (walaupun saya tidak menggunakannya). Untuk halaman manual M-x man,. Dan seterusnya.

Alasan Anda melakukan ini, dan tidak menggunakan aplikasi CLI lainnya (misalnya, hanya manuntuk halaman manual, lynx untuk menjelajah, dll.) Adalah:

1) tingkat integrasi (membunuh, mencabut, membuat pintasan; semuanya dalam sekejap ...)

2) pintasan keyboard untuk menavigasi kursor, pencarian, dll. (Yaitu, memori otot Anda)

Sedangkan untuk X, Anda tidak perlu meninggalkannya. Hanya karena Anda menginginkan semua yang ada di CLI tidak berarti Anda sama sekali tidak menginginkan GFX (atau - setidaknya, saya hanya menginginkan CLI, dan GFX). Misalnya, meskipun Anda memodifikasi gambar dengan (CLI) mogrify atau mengkonversi, Anda tetap ingin menampilkannya untuk memeriksa hasilnya (misalnya, dalam gliv; cukup nonaktifkan bilah menu agar tidak tergoda untuk menggunakan mouse). Contoh lain adalah dokumen LaTeX dan PDF.

Sedangkan untuk terminal, kebanyakan orang akan mengatakan layar atau tmux tetapi Anda juga bisa menggunakan terminal virtual Linux (konsol, atau ttys). Di X, urxvt memiliki ekstensi Perl yang memungkinkan tab. Untuk itu (ttys dan urxvt) Anda dapat mengatur antarmuka yang seragam, misalnya Alt-J / K untuk beralih di antara tab, sehingga Anda tidak perlu meraih tombol panah (atau apa pun yang default).

Semoga berhasil :) Jangan ragu untuk mengirim saya beberapa petunjuk sendiri ketika Anda selesai (atau hampir di sana ... Anda tidak pernah selesai), karena saya berada di jalur yang sama dengan Anda.

Emanuel Berg
sumber