Đề xuất thiết lập cho môi trường lập trình dựa trên văn bản siêu nhẹ trong linux


14

Tôi đang tìm kiếm gợi ý cho một thiết lập cho nhu cầu cụ thể của tôi. Tôi đã không làm nhiều linux từ khi học đại học và muốn quay lại với nó như một sở thích. Tôi có một số phần cứng không quá mạnh (ram 512 MB, lõi đơn). Tôi muốn làm mọi thứ thông qua shell và trình soạn thảo dựa trên văn bản, chẳng hạn như vim. Mục tiêu của tôi là không bao giờ chạm vào chuột.

Tôi cần khả năng mở nhiều shell cùng một lúc, một chạy máy chủ web, một chạy vim, một chạy đường ống xây dựng ứng dụng của tôi, một vỏ khác cho các lệnh shell ad-hoc như wget, grepping và unarring, v.v. có thể mở shell mới và chuyển đổi giữa các shell một cách nhanh chóng bằng bàn phím.

Nhưng mặc dù tôi muốn có nhiều shell, tôi không muốn có một môi trường máy tính để bàn đồ họa. Tôi không bao giờ muốn bị cám dỗ sử dụng chuột; một phần trong mục đích của tôi là buộc bản thân phải học cách thực hiện các nhiệm vụ khác nhau.

Tôi cũng muốn có thể tận dụng màn hình lớn của mình, chạy vim với vài trăm cột bị mờ.

Điều này có thể không?


1
Hãy xem dvtm ... Bạn cũng có thể kết hợp nó với tmux hoặc màn hình.
jasonwryan

1
Câu hỏi này có thể phù hợp hơn như một wiki cộng đồng.
jw013

Câu trả lời:


5

Tôi đã đọc qua các câu hỏi của bạn vài lần trước khi tôi nhận ra rằng tôi chắc chắn có một đề nghị cho bạn: vim với tmux: http://tmux.sourceforge.net/

tmux là một 'bộ ghép kênh' màn hình cho phép bạn có một số cửa sổ và cửa sổ 'trong vòng 1'

Nó là sự kế thừa cho chương trình 'màn hình' đáng kính, từ lâu đã trở thành chủ lực của nhiều lập trình viên cli. Một trong những tính năng chiến thắng ban đầu của nó so với vim là khả năng phân chia các cửa sổ theo chiều dọc cũng như theo chiều ngang. Tuy nhiên màn hình đã di chuyển về phía trước và bây giờ cũng có thể làm điều đó.

Thí dụ:

nhập mô tả hình ảnh ở đây

Một phần khác của thiết lập mà tôi muốn giới thiệu là một bộ bí danh tốt. Những điều này sẽ làm cho việc đánh máy và tương tác của bạn dễ dàng và nhanh chóng hơn rất nhiều

Một số mục yêu thích của tôi được hiển thị ở đây làm ví dụ:

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

Các bí danh có thể được thiết lập trong tệp .bash_aliases được gọi từ .bashrc với: # Alias ​​định nghĩa. if [-f ~ / .bash_aliases]; sau đó . ~ / .bash_aliases fi

Có thể bạn đã có mã đó, vì vậy chỉ cần tệp .bash_aliases của riêng bạn.

Cả hai tùy chọn này đều hoạt động trên máy Mac và đó là một sự cân nhắc quan trọng đối với bản thân tôi (một người dùng chủ yếu là Ubuntu).

Hầu hết mọi người sử dụng tmux sắp xếp lại các phím để làm cho nó dễ dàng hơn. Các ràng buộc mặc định chỉ là không tốt. Đây là cài đặt của tôi:

$ mèo ~ / 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

Cuối cùng (để đóng vòng lặp), đây là cài đặt .vimrc của tôi mà tôi muốn làm cho trình bao dễ sử dụng hơn:

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

Cuối cùng, tôi thực hiện một vài thay đổi cho tệp .bashrc của mình. Ví dụ như shopt -s autocdkhi tôi nhập tên thư mục (tồn tại) thì shell cd của tôi vào thư mục đó ngay lập tức. Tiện lợi! Vì vậy, đây là .bashrc của tôi thay đổi:

# 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

Câu trả lời chi tiết đẹp. Tôi đã sử dụng tmux được một năm rồi (và vi / vim khoảng 25) nhưng tôi đã chọn một số thứ ở đây.
Dan

Tuyệt vời, câu trả lời tuyệt vời cho một người mới như tôi. Về điều duy nhất còn thiếu là những plugin vim nào bạn sử dụng ... nhưng đó là một câu hỏi khác cho một ngày khác. :) Cảm ơn một lần nữa ... mặc dù tôi sẽ mất mãi mãi để vượt qua nó và thử mọi thứ, tôi muốn đi trước cho bạn câu trả lời được chấp nhận.
Kevin Pauli

Chắc chắn, tôi thực sự nghĩ rằng tôi không sử dụng bất kỳ plugin nào nhưng tôi biết có rất nhiều plugin có sẵn trong đó có một số cho khu vực ruby ​​của tôi trên đường ray.
Michael Durrant

2
Phần lớn những gì bạn nói ở đây có thể hữu ích, nhưng có một điều không hay: vim có thể dễ dàng phân chia các tấm cả hai chân trời và theo chiều dọc.
dubiousjim

1
Cập nhật để lưu ý rằng màn hình có thể thực hiện chia tách ngang và dọc ngay bây giờ.
Michael Durrant

6

Tôi đang sử dụng XMonad + tmux + Emacs cho một thiết lập tương tự.

Tôi đã sử dụng thuốc diệt chuột trong một năm trước nhưng XMonad cảm thấy mạnh mẽ hơn. Tôi chưa bao giờ có bất kỳ vấn đề nào trong các hộp 256 MB, 512 MB của mình với nó. Ratpoison có một số vấn đề ổn định, nhưng đây là giai thoại và mọi thứ có thể đã thay đổi kể từ đó.

Tôi cũng đã sử dụng màn hình GNU nhưng tmux có một số tính năng mà màn hình không có.

Nếu bạn đã biết vim, tốt hơn hết bạn không nên học một công cụ mới. Nếu bạn không, Emacs có thể sử dụng nhiều shell ( C-u M-x shell), sử dụng shell yêu thích của bạn ( M-x term), bạn có thể viết, biên dịch và gỡ lỗi chương trình của mình, đọc thư, hangout trong IRC, đọc trang web / thông tin / trang web, chạy hầu hết REPL shell (ví dụ M-x run-python), sử dụng git / hg / svn bên trong nó, chỉnh sửa các tệp từ xa bằng TRAMP, sử dụng dired để thực hiện hầu hết tất cả các thao tác tệp, sử dụng grep / find / ack bên trong nó. Bạn có thể sử dụng Emacs có hoặc không có X. Bạn không cần bộ ghép kênh đầu cuối như màn hình hoặc tmux, nhưng tôi thích chạy emacs như một máy chủ và sử dụng emacsclient từ tmux nếu chạy nó từ shell.


Tôi sẽ đề nghị sử dụng terminator! Nhưng đó hoàn toàn là sự lựa chọn của một người!
Pranit Bauva

3
  • giải pháp hoàn toàn không có X: framebuffer + Linux console + GNU screen + vim + w3m
  • giải pháp với X nhưng không có môi trường máy tính để bàn: dwm + urxvt + GNU screen + vim + w3m + lướt

dwm chỉ sử dụng vài trăm kB bộ nhớ, điều khiển bằng bàn phím, nhưng bạn cũng có thể sử dụng chuột nếu muốn. Kiểm tra http://suckless.org để biết các công cụ đơn giản nhưng mạnh mẽ hơn.


2

Đối với nhiều trình bao với điều hướng bàn phím dễ dàng giữa chúng, bạn có thể muốn xem xét Màn hình GNU hoặc byobu (đây là một cải tiến của nó).


2

Tôi đã thực hiện một nỗ lực tương tự một vài tháng trước, từ bỏ con chuột của tôi và khám phá vô số các thiết lập và quản lý cửa sổ. Có vẻ như bạn đã được cung cấp rất nhiều đề xuất hữu ích, nhưng tôi đoán rằng một vài xu thêm không thể làm tổn thương. Đây là hai của tôi:

Hãy xem trình quản lý cửa sổ i3. Đó là ánh sáng, với cấu hình đơn giản và không yêu cầu biên dịch lại sau khi thay đổi cấu hình. Chức năng ốp lát và không gian làm việc được gắn thẻ có nghĩa là không có chuột và khả năng vô tận dựa trên sở thích và không gian màn hình. Các chương trình có thể được gán cho các thẻ và khóa có thể bị ràng buộc với bất cứ thứ gì. i3status hoặc conky dễ dàng được dẫn đến i3 để biết thông tin hệ thống. Cài đặt dmenu và rút phích cắm chuột của bạn.

Hãy thử một bản phân phối ánh sáng. Arch, Gentoo và Slackware đều cung cấp các tùy chọn khác nhau để thiết lập môi trường ánh sáng. Bắt đầu nhỏ, và chú ý đến sự phụ thuộc. Chỉ cài đặt những gì bạn cần và tìm hiểu để cấu hình nó đúng cách. Đừng khởi động X khi khởi động. Tìm hiểu để sử dụng tất cả các công cụ với chi phí của bạn. Vim là một con thú. Nếu bạn đã biết nó, sử dụng nó. Nếu không, hãy học nó. Hãy chú ý đến các chi tiết. Tìm hiểu những gì bạn có trên hệ thống của bạn và tại sao nó có.


Phân biệt phương pháp "phân phối ánh sáng". Nó thực sự buộc bạn phải làm bẩn tay, ngay cả khi chúng đưa ra lệnh cho bạn bằng lệnh ( Sổ tay cài đặt Gentoo là tuyệt vời), bởi vì mọi hệ thống đều khác nhau. Cài đặt ban đầu thậm chí không cung cấp cho bạn X, vì vậy bạn bị kẹt trên dòng lệnh.
ND Geek

1

Tôi đã có một mong muốn tương tự khoảng sáu tháng trước. Chủ yếu là vì tôi đã làm việc qua SSH cả ngày. Như đã được đề xuất, sử dụng màn hình GNU. Nó khá khủng khiếp (IMHO) ngay sau khi cài đặt nó. Tuy nhiên! Nó có khả năng tùy biến cao thông qua tệp .screenrc. Có rất nhiều hướng dẫn trực tuyến cung cấp mã bạn có thể cắt và dán để có được nó theo ý muốn.

Tôi đã đi xa đến mức tập hợp một vài tập lệnh để thiết lập một môi trường như vậy - MALiCE - 'Môi trường mã hóa Linux tuyệt vời của tôi'. Nó có sẵn trên Github ở đây:

MALICE

Điều này cũng ghi lại rất nhiều phím tắt cũng như các tệp .muttrc và .screenrc mẫu - được thiết lập để hoạt động với những thứ như gmail.

Lưu ý rằng nó không hoàn hảo nhưng nó có thể giúp bạn tiết kiệm thời gian và công sức để xem xét một số tệp cấu hình và tập lệnh. Có một thiên vị vim mạnh mẽ.

Tôi cũng đề xuất các chương trình như cmus (trình phát đa phương tiện dựa trên văn bản - khá tốt) và mutt (ứng dụng email - được định cấu hình lại qua tệp văn bản .muttrc). Ngoài ra còn có các máy khách IRC dựa trên văn bản và tin hay không, các bộ giải mã video dựa trên văn bản sẽ biến video thành ASCII - một chút cực đoan nhưng mỗi cái lại là của riêng chúng.

Nếu bạn không muốn có một máy tính để bàn thì có rất nhiều tùy chọn. Ví dụ, bạn có thể cài đặt slackware, nếu tôi nhớ khởi động chính xác vào giao diện dòng lệnh. Bạn phải đi ra ngoài để bắt đầu GUI.


Chúng tôi có thể thêm elinkstrình duyệt web vào danh sách các tiện ích dựa trên văn bản tốt đó.
Stéphane Chazelas

Làm thế nào để nó so sánh với các trình duyệt web dựa trên văn bản khác? Tôi không bao giờ có thể quen với việc lướt web từ dòng lệnh: p


0

Chìa khóa cho vấn đề này không phải là phân phối, mà là các công cụ. Chỉ cần ngừng sử dụng các công cụ GUI và điều chỉnh các công cụ CLI để xem và hành xử chính xác như bạn muốn. Một cách là chỉnh sửa ~/.Xresources, sau đó tải nó xrdbvào~/.xinitrc . Ở đó, bạn cũng có thể bắt đầu một loạt các ứng dụng mà bạn luôn sử dụng.

Rõ ràng bạn cần một cái vỏ tốt: Tôi muốn nói zsh. Bạn sẽ phải làm việc nhiều ~/.zshrc. (Nhưng bash cũng sẽ hoạt động, tất nhiên. Sau đó, ~/.bashrcsẽ là nơi.)

Thứ hai, một biên tập viên. Emacs hoặc vim, tùy thuộc vào loại mà bạn hiện đang sử dụng. Một trình soạn thảo kém tiên tiến hơn (ví dụ: nano) sẽ không làm được. Như với trình bao, bạn sẽ thực hiện rất nhiều công việc ~/.emacshoặc (các) tệp init tương ứng.

Bạn cần kết hợp càng nhiều càng tốt trong trình soạn thảo văn bản của bạn. Tôi sẽ đưa ra một số ví dụ từ thế giới Emacs, đơn giản vì tôi là người dùng Emacs. Đối với thư, rmail. Để quản lý tập tin, chuyển hướng. Để duyệt web, W3M. Đối với tin tức, gnus (mặc dù tôi không sử dụng nó). Đối với trang người đàn ông , M-x man. Và như thế.

Lý do bạn làm điều này và không sử dụng các ứng dụng CLI khác (ví dụ: chỉ mandành cho trang man, lynx để duyệt, v.v.) là:

1) mức độ tích hợp (giết, đánh, tạo phím tắt; mọi thứ trong nháy mắt ...)

2) các phím tắt để điều hướng con trỏ, tìm kiếm, v.v. (nghĩa là bộ nhớ cơ của bạn)

Đối với X, bạn không cần phải từ bỏ nó. Chỉ vì bạn muốn mọi thứ trong CLI không có nghĩa là bạn hoàn toàn không muốn GFX (hoặc - ít nhất, tôi muốn chỉ có CLI GFX). Ví dụ: mặc dù bạn sửa đổi hình ảnh với (CLI) không chính xác hoặc chuyển đổi, bạn vẫn muốn hiển thị nó để kiểm tra kết quả (ví dụ: trong gliv; chỉ cần vô hiệu hóa thanh menu không bị cám dỗ để sử dụng chuột). Một ví dụ khác là tài liệu LaTeX và PDF.

Đối với thiết bị đầu cuối, hầu hết mọi người sẽ nói màn hình hoặc tmux nhưng bạn cũng có thể sử dụng thiết bị đầu cuối ảo Linux (bảng điều khiển hoặc ttys). Trong X, urxvt có tiện ích mở rộng Perl cho phép các tab. Đối với những người (ttys và urxvt), bạn có thể thiết lập giao diện thống nhất, ví dụ Alt-J / K để chuyển giữa các tab, do đó bạn không phải chạm tới các phím mũi tên (hoặc bất cứ điều gì là mặc định).

Chúc may mắn :) Hãy gửi thư cho tôi một số gợi ý của riêng bạn khi bạn hoàn thành (hoặc gần như ở đó ... bạn chưa bao giờ hoàn thành), vì tôi đang theo dõi giống như bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.