리눅스에서 초경량 텍스트 기반 프로그래밍 환경을위한 제안 된 설정 특정 요구에 맞는 설정 제안을 찾고

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

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

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

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

이게 가능해?



답변

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


답변

비슷한 설정을 위해 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에서 실행하는 것을 선호합니다.


답변

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

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


답변

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


답변

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

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

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


답변

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

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

악의

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

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

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

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


답변

http://en.wikipedia.org/wiki/VESA_BIOS_Extensions

http://www.pendrivelinux.com/vga-boot-modes-to-set-screen-resolution/

그러나 모든 그래픽 카드에서 지원되는 것은 아니므로 테스트해야합니다.

여러 쉘 사이를 전환하려면 Alt-F가 빠르다고 생각합니다.