리눅스에서 초경량 텍스트 기반 프로그래밍 환경을위한 제안 된 설정


14

특정 요구에 맞는 설정 제안을 찾고 있습니다. 나는 대학 이래로 많은 리눅스를하지 않았으며 취미로 다시 들어가기를 원합니다. 너무 강력하지 않은 하드웨어 (512MB 램, 단일 코어)가 있습니다. vim과 같은 텍스트 기반 쉘 및 편집기를 통해 모든 작업을 수행하고 싶습니다. 내 목표는 마우스를 절대 만지지 않는 것입니다.

웹 서버, vim, 애플리케이션 빌드 파이프 라인, wget, grepping, untarring 등과 같은 임시 쉘 명령을위한 쉘을 여러 개 한 번에 열 수 있어야합니다. 키보드로 새로운 쉘을 열고 쉘 사이를 빠르게 전환 할 수 있습니다.

그러나 여러 개의 쉘을 원하지만 그래픽 데스크탑 환경은 원하지 않습니다 . 나는 마우스를 사용하고 싶은 유혹을 받고 싶지 않다. 저의 목적 중 일부는 다양한 작업을 수행하는 명령 줄 방식을 배우도록 강요하는 것입니다.

또한 수백 개의 열이 줄어든 vim을 실행하면서 대형 모니터를 활용할 수 있기를 원합니다.

이게 가능해?


1
dvtm 살펴보기 ... tmux 또는 화면과 결합 할 수도 있습니다.
jasonwryan

1
이 질문은 커뮤니티 위키로 더 적합 할 수 있습니다.
jw013

답변:


5

vim with tmux : http://tmux.sourceforge.net/을 추천합니다.

tmux는 여러 개의 창과 창을 '1 이내'로 만들 수있는 화면 '멀티플렉서'입니다

오랫동안 많은 클리 코더의 필수품 인 훌륭한 '스크린'프로그램의 후속 제품입니다. vim에 비해 원래의 승리 한 기능 중 하나는 창을 가로와 세로로 분할하는 기능이었습니다. 그러나 화면은 앞으로 나아 갔으며 이제는 그렇게 할 수 있습니다.

예:

여기에 이미지 설명을 입력하십시오

내가 권장하는 설정의 또 다른 부분은 좋은 별칭 세트입니다. 이렇게하면 타이핑과 상호 작용이 훨씬 쉽고 빠릅니다.

내가 좋아하는 일부는 여기에 예제로 표시됩니다.

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

별명은 다음을 사용하여 .bashrc에서 호출되는 .bash_aliases 파일에 설정할 수 있습니다. # Alias ​​definitions. 만약 [-f ~ / .bash_aliases]; 그때. ~ / .bash_aliases fi

해당 코드가 이미있을 수 있으므로 자신의 .bash_aliases 파일 만 있으면됩니다.

이 두 가지 옵션 모두 Mac에서 작동하며 이는 나 자신 (주로 우분투 사용자)에게 중요한 고려 사항입니다.

tmux를 사용하는 대부분의 사람들은 키를 쉽게 다시 매핑합니다. 기본 바인딩은 그다지 좋지 않습니다. 내 설정은 다음과 같습니다.

$ 고양이 ~ / 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

마지막으로 (루프를 닫으려면) 쉘을 더 쉽게 사용할 수 있도록 해주는 .vimrc 설정 자체가 있습니다.

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

마지막으로 내 .bashrc 파일을 약간 변경합니다. 예를 들어 shopt -s autocd디렉토리 이름 (있는 경우)을 입력하면 쉘 CD가 해당 디렉토리에 즉시 들어갑니다. 맵시 있는! 여기 내 .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

좋은 자세한 답변. 나는 1 년 동안 한 번에 한 번에 tmux를 사용하고 있었고 (약 25 년 동안 vi / vim) 여기에서 몇 가지를 선택했습니다.
Dan

나와 같은 멍청한 놈에 대한 위대한 대답. 유일하게 누락 된 것은 사용하는 vim 플러그인입니다 ...하지만 그것은 다른 날의 또 다른 질문입니다. :) 다시 한 번 감사드립니다 ...하지만 그것을 통과하고 모든 것을 시도하는 데 영원히 걸릴 것이지만, 나는 당신에게 받아 들여진 대답을 드리고 싶었습니다.
Kevin Pauli

물론, 나는 실제로 플러그인을 사용하지 않는다고 생각하지만 루비 온 레일에 대한 일부를 포함하여 많은 것을 사용할 수 있음을 알고 있습니다.
Michael Durrant

2
여기에서 말한 대부분의 내용이 유용 할 수 있지만 한 가지 기능이 꺼져 있습니다. vim은 가로 및 세로 창을 쉽게 분할 할 수 있습니다.
dubiousjim

1
화면이 가로 및 세로 분할을 할 수 있도록 업데이트되었습니다.
Michael Durrant

6

비슷한 설정을 위해 XMonad + tmux + Emacs를 사용하고 있습니다.

나는 과거에 1 년 동안 ratpoison을 사용했지만 XMonad는 더 강력하다고 느꼈습니다. 256MB, 512MB 상자에는 아무런 문제가 없었습니다. Ratpoison에는 안정성 문제가 있었지만 이것은 일화적인 것이며 그 이후로 상황이 바뀔 수 있습니다.

또한 GNU 화면을 사용했지만 tmux에는 화면에없는 일부 기능이 있습니다.

이미 vim을 알고 있다면 새로운 도구를 배우지 않는 것이 좋습니다. 그렇지 않은 경우, Emacs는 여러 개의 쉘 ( C-u M-x shell)을 사용할 수 있고, 선호하는 쉘 ( M-x term)을 사용할 수 있으며, 프로그램을 작성, 컴파일 및 디버그하고, 메일을 읽고, IRC에서 행 아웃을하고, 웹 / 정보 / 맨 페이지를 읽고, 대부분의 REPL을 실행할 수 있습니다 쉘 (예 M-x run-python:), 그 안에 git / hg / svn 사용, TRAMP로 원격 파일 편집, 거의 모든 파일 작업을 수행하기 위해 dired 사용, 그 안에 grep / find / ack 사용 X를 사용하거나 사용하지 않고 Emacs를 사용할 수 있습니다. screen 또는 tmux와 같은 터미널 멀티플렉서는 필요하지 않지만 emacs를 서버로 실행하고 쉘에서 emacsclient를 tmux에서 실행하는 것을 선호합니다.


터미네이터를 사용하는 것이 좋습니다! 그러나 그것은 순전히 하나의 선택입니다!
Pranit Bauva

3
  • X가 전혀없는 솔루션 : framebuffer + Linux console + GNU screen + vim + w3m
  • X는 있지만 데스크탑 환경은없는 솔루션 : dwm + urxvt + GNU screen + vim + w3m + surf

dwm은 키보드로 구동되는 수백 kB의 메모리 만 사용하지만 원하는 경우 마우스를 사용할 수도 있습니다. 보다 간단하지만 강력한 도구는 http://suckless.org 를 확인 하십시오 .


2

키보드를 쉽게 탐색 할 수있는 여러 쉘의 경우 GNU Screen 또는 byobu (이 기능을 향상시킨) 를 살펴볼 수 있습니다 .


2

나는 몇 달 전에 비슷한 노력을 기울 였고, 마우스를 버리고 수많은 셋업과 창 관리자를 탐구했다. 당신이 이미 많은 도움이되는 제안을 받았던 것 같지만 몇 센트가 더 해치지 않을 것이라고 생각했습니다. 내 두 사람은 다음과 같습니다.

i3 창 관리자를 살펴보십시오. 간단한 구성으로 가볍고 구성을 변경 한 후 다시 컴파일 할 필요가 없습니다. 타일링 기능 및 태그가 지정된 작업 공간은 기본 설정 및 화면 공간을 기반으로하는 마우스 및 무한한 가능성을 의미합니다. 프로그램은 태그에 할당 될 수 있으며 키는 거의 모든 것에 바인딩 될 수 있습니다. i3status 또는 conky는 시스템 정보를 위해 i3으로 쉽게 파이프됩니다. dmenu를 설치하고 마우스를 분리하십시오.

가벼운 배포판을 사용해보십시오. 아치, 젠투 및 슬랙웨어는 모두 조명 환경을 설정하기위한 다양한 옵션을 제공합니다. 소규모로 시작하여 종속성에주의하십시오. 필요한 것만 설치하고 올바르게 구성하는 방법을 배우십시오. 부팅시 X를 시작하지 마십시오. 귀하의 비용으로 모든 도구를 사용하는 방법을 배우십시오. Vim은 짐승입니다. 이미 알고 있다면 사용하십시오. 그렇지 않다면 배우십시오. 세부 사항에주의하십시오. 시스템에 무엇이 있고 왜 존재하는지 알아보십시오.


"라이트 디트로이트"접근 방식의 두번째. 정말 (당신이 명령에 의해 명령에 대한 그들은 그것을 배치 할 경우에도 손을 더럽를 얻기 위해 당신을 강제로 젠투 핸드북 설치 우수) 모든 시스템이 다르기 때문에. 초기 설치는 X도 제공하지 않으므로 명령 행에 갇혀 있습니다.
ND Geek

1

나는 약 6 개월 전에 비슷한 소망을 가지고있었습니다. 하루 종일 SSH를 통해 일했기 때문에 주로. 이미 제안했듯이 GNU 화면을 사용하십시오. 설치 후 바로 끔찍한 (IMHO). 하나! .screenrc 파일을 통해 고도로 사용자 정의 할 수 있습니다. 잘라 내고 붙여 넣어 원하는대로 코드를 제공하는 온라인 자습서가 많이 있습니다.

필자는 그러한 환경을 설정하기위한 몇 가지 스크립트 (MALiCE- 'My Awesome Linux Coding Environment')를 만들었습니다. Github에서 사용할 수 있습니다 :

악의

또한 많은 키보드 단축키와 샘플 .muttrc 및 .screenrc 파일이 문서화되어 있으며 gmail과 같은 작업을 수행하도록 설정되어 있습니다.

완벽하지는 않지만 일부 구성 파일 및 스크립트를 살펴 보려면 시간과 노력을 절약 할 수 있습니다. 강력한 vim 바이어스가 있습니다.

또한 cmus (텍스트 기반 미디어 플레이어-꽤 좋음) 및 mutt (이메일 클라이언트-텍스트 파일 .muttrc를 통해 다시 구성)와 같은 프로그램을 추천합니다. 텍스트 기반 IRC 클라이언트도 있으며 비디오를 ASCII로 변환하는 텍스트 기반 비디오 디코더가 있습니다.

데스크탑을 원하지 않으면 여러 가지 옵션이 있습니다. 예를 들어 슬랙웨어를 설치할 수 있습니다. GUI를 시작하려면 벗어나야합니다.


elinks훌륭한 텍스트 기반 유틸리티 목록에 웹 브라우저를 추가 할 수 있습니다 .
Stéphane Chazelas

다른 텍스트 기반 웹 브라우저와 어떻게 비교됩니까? 커맨드 라인에서 웹 서핑에 익숙해 질 수 없었습니다. : p


0

이것의 핵심은 배포가 아니라 도구입니다. GUI 도구 사용을 중단하고 CLI 도구를 조정하여 원하는대로 정확하게 동작합니다. 한 가지 방법은을 편집 ~/.Xresources한 다음에로드하는 것입니다 xrdb.~/.xinitrc . 또한 항상 사용하는 많은 응용 프로그램을 시작할 수 있습니다.

분명히 당신은 좋은 쉘이 필요합니다 : 나는 zsh라고 말할 것입니다. 에 대해 광범위하게 작업해야합니다 ~/.zshrc. (그러나 bash도 물론 작동합니다. 그런 다음~/.bashrc 장소가 될 것입니다.)

둘째, 편집자. 현재 사용중인 것에 따라 Emacs 또는 vim. 덜 고급 편집기 (예 : 나노)는 그렇지 않습니다. 쉘과 마찬가지로 많은 작업을 수행합니다.~/.emacs init 파일이나 해당 init 파일을 .

텍스트 편집기에 최대한 많이 포함시켜야합니다. Emacs 사용자이기 때문에 Emacs 세계에서 몇 가지 예를 들겠습니다. 메일의 경우 rmail. 파일 관리의 경우 중단되었습니다. 웹 브라우징을 위해 W3M. 뉴스, gnus (사용하지는 않지만). 매뉴얼 페이지의 경우M-x man . 등등.

이 작업을 수행하고 다른 CLI 응용 프로그램 (예 : man맨 페이지, 탐색 용 Lynx 등)을 사용하지 않는 이유는 다음과 같습니다.

1) 통합 수준 (kill, yank, 바로 가기 만들기; 깜박임의 모든 것 ...)

2) 커서 탐색, 검색 등을위한 키보드 단축키 (예 : 근육 기억)

X는 버릴 필요가 없습니다. CLI의 모든 것을 원한다고해서 GFX가 전혀 필요하지 않다는 의미는 아닙니다 (또는 적어도 CLI 전용 GFX가 필요합니다). 예를 들어, (CLI) mogrify 또는 convert로 이미지를 수정하더라도 결과를 확인하기 위해 이미지를 계속 표시하려고합니다 (예 : gliv에서; 마우스를 사용하려고 유혹하지 않도록 메뉴 막대를 비활성화하십시오). 다른 예로 LaTeX 및 PDF 문서가 있습니다.

터미널은 대부분 사람들이 screen 또는 tmux라고 말하지만 Linux 가상 터미널 (콘솔 또는 tty)을 사용할 수도 있습니다. X에서 urxvt는 탭을 가능하게하는 Perl 확장을가집니다. 그 (ttys와 urxvt)의 경우 탭 사이를 전환하기 위해 Alt-J / K와 같은 균일 한 인터페이스를 설정할 수 있으므로 화살표 키 (또는 기본값)에 도달 할 필요가 없습니다.

행운을 빕니다 :) 내가 당신과 같은 길을 가고 있기 때문에 당신이 끝났을 때 (또는 거의 거기에 ... 당신이 결코 끝나지 않았을 때) 나 자신의 포인터를 자유롭게 보내주십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.