내 특정 요구 사항에 맞는 설정에 대한 제안을 찾고 있습니다. 나는 대학을 졸업한 이후로 Linux 작업을 많이 하지 않았으며 취미로 다시 Linux 작업을 하고 싶었습니다. 성능이 떨어지는 하드웨어(512MB RAM, 단일 코어)를 사용하고 있습니다. 텍스트 기반 셸과 편집기(예: vim)를 통해 모든 작업을 수행하고 싶습니다. 내 목표는 마우스를 절대 만지지 않는 것입니다.
동시에 여러 개의 셸을 열 수 있어야 합니다. 하나는 웹 서버를 실행하고, 하나는 vim을 실행하고, 하나는 애플리케이션 빌드 파이프라인을 실행하고, 하나는 wget, grepping, untarring 등과 같은 임시 셸 명령을 위한 것입니다. 키보드를 사용하여 새 쉘을 열고 쉘 사이를 빠르게 전환할 수 있어야 합니다.
하지만 여러 개의 껍질을 원하더라도 여전히 그렇습니다.아니요그래픽 데스크탑 환경을 원합니다. 나는 마우스를 사용하고 싶은 유혹을 느끼고 싶지 않습니다. 내 목적 중 하나는 다양한 작업을 수행하는 명령줄 방식을 배우도록 강요하는 것이었습니다.
또한 대형 모니터를 활용하여 vim을 실행하고 수백 개의 열을 표시할 수 있기를 원합니다.
가능합니까?
답변1
귀하의 질문을 여러 번 읽은 후에 나는 귀하에게 확실히 제안할 것이 있다는 것을 깨달았습니다. vim과 tmux: http://tmux.sourceforge.net/
tmux는 "1개 이내"에 여러 개의 창과 창을 가질 수 있는 화면 "멀티플렉서"입니다.
이는 오랫동안 많은 CLI 코더의 주요 도구였던 고대 "스크린" 프로그램의 후속 프로그램입니다. 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 파일에서 설정할 수 있습니다. # 별칭 정의. if [ -f ~/.bash_aliases ]; ~/.bash_aliases fi
이 코드는 이미 있을 수 있으므로 자신만의 .bash_aliases 파일만 있으면 됩니다.
두 옵션 모두 Mac에서 작동하며 이는 나 자신(주로 Ubuntu 사용자)에게 중요한 고려 사항입니다.
tmux remap 키를 사용하여 더 쉽게 만드는 대부분의 사람들. 기본 바인딩은 그다지 좋지 않습니다. 이것은 내 설정입니다.
$ 고양이~/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
(존재하는) 디렉터리 이름을 입력하면 쉘이 즉시 해당 디렉터리로 이동하도록 했습니다. 예쁜! 내 .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
답변2
비슷한 설정을 위해 XMonad + tmux + Emacs를 사용합니다.
예전에 쥐약을 1년 정도 써봤는데 엑스모나드가 더 강력한 것 같아요. 256MB, 512MB 상자에 문제가 발생한 적이 없습니다. Ratpoison에는 안정성 문제가 있었지만 이는 일화적인 것이며 그 이후로 상황이 변경되었을 수 있습니다.
저도 GNU screen을 사용해 본 적이 있는데 tmux에는 screen에 없는 기능이 몇 가지 있습니다.
이미 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와 같은 터미널 멀티플렉서는 필요하지 않지만 쉘에서 실행하는 경우 tmux의 emacsclient를 사용하여 emacs를 서버로 실행하는 것을 선호합니다.
답변3
- X에 대한 해결책은 전혀 없습니다: 프레임 버퍼 + Linux 콘솔 + GNU 화면 + vim + w3m
- X는 있지만 데스크탑 환경은 없는 솔루션: dwm + urxvt + GNU screen + vim + w3m + Surf
dwm은 수백 kB의 메모리만 사용하고 키보드로 구동되지만 원하는 경우 마우스를 사용할 수도 있습니다. 확인하다http://suckless.org더 간단하면서도 더 강력한 도구입니다.
답변4
나는 몇 달 전에 마우스를 버리고 다양한 설정과 창 관리자를 탐색하면서 비슷한 시도를 했습니다. 유용한 조언을 많이 주신 것 같지만, 몇 푼이라도 더 써도 나쁠 것은 없다고 생각합니다. 내 두 가지는 다음과 같습니다.
i3 창 관리자를 살펴보십시오. 가볍고 구성이 간단하며 구성을 변경한 후 다시 컴파일할 필요가 없습니다. 타일링 기능과 표시된 작업 공간은 마우스가 필요 없으며 기본 설정과 화면 공간에 따라 무한한 가능성을 의미합니다. 프로그램은 태그에 할당될 수 있고 키는 거의 모든 것에 바인딩될 수 있습니다. i3status 또는 conky를 i3에 쉽게 연결하여 시스템 정보를 얻을 수 있습니다. dmenu를 설치하고 마우스를 분리하세요.
가벼운 배포판을 사용해 보세요. Arch, Gentoo 및 Slackware는 모두 조명 환경 설정을 위한 다양한 옵션을 제공합니다. 작게 시작하고 종속성에 주의를 기울이세요. 필요한 것만 설치하고 올바르게 구성하는 방법을 알아보세요. 부팅 시 X를 시작하지 마세요. 모든 도구를 자비로 사용하는 방법을 배우십시오. Vim은 짐승입니다. 이미 알고 계시다면 활용해보세요. 그렇지 않다면 배우십시오. 세부 사항에 주의를 기울이십시오. 시스템에 무엇이 있고 왜 존재하는지 이해하십시오.