linux中超輕量級基於文本的程式環境的建議設置
我正在尋找針對我的特定需求的設置建議。自從大學以來,我沒有做過太多的 linux 並且想重新回到它作為一種愛好。我有一些不太強大的硬體(512 MB 記憶體,單核)。我想通過基於文本的 shell 和編輯器(例如 vim)來完成所有工作。我的目標是永遠不要觸摸滑鼠。
我需要能夠同時打開多個 shell,一個執行 Web 伺服器,一個執行 vim,一個執行我的應用程序建構管道,另一個用於臨時 shell 命令,例如 wget、grepping 和 untarring 等。我需要能夠使用鍵盤快速打開新外殼並在外殼之間切換。
但即使我想要多個 shell,我也不想要圖形桌面環境。我不想被誘惑使用滑鼠。我的部分目的是強迫自己學習執行各種任務的命令行方式。
我還希望能夠利用我的大型監視器,執行 vim 並顯示幾百列。
這可能嗎?
在我意識到我肯定有一個建議給你之前,我仔細閱讀了你的問題幾次: vim with tmux: http://tmux.sourceforge.net/
tmux 是一個螢幕“多路復用器”,可讓您在“1 以內”擁有多個視窗和窗格
它是古老的“screen”程序的繼任者,長期以來一直是許多 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 文件中設置:# 別名定義。如果
$$ -f ~/.bash_aliases $$; 然後 。~/.bash_aliases fi 您可能已經擁有該程式碼,因此只需您自己的 .bash_aliases 文件。
這兩個選項都適用於 Mac,這對我自己(主要是 Ubuntu 使用者)來說是一個重要的考慮因素。
大多數使用 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 設置本身,我喜歡讓 shell 更易於使用:
" 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
當我輸入一個目錄名稱(存在)時,我的 shell 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 進行類似的設置。
我在過去一年使用了鼠毒,但 XMonad 感覺更強大。在我的 256MB、512MB 盒子裡,我從來沒有遇到過任何問題。Ratpoison 有一些穩定性問題,但這是軼事,從那時起情況可能會發生變化。
我也使用了 GNU screen,但是 tmux 有一些 screen 沒有的功能。
如果你已經了解 vim,最好不要學習新工具。如果你不這樣做,Emacs 可以使用多個 shell (
C-u M-x shell
),使用你最喜歡的 shell (M-x term
),你可以編寫、編譯和調試你的程序,閱讀你的郵件,在 IRC 中閒逛,閱讀 web/info/man pages,執行大多數 REPL外殼(例如M-x run-python
),在其中使用 git/hg/svn,使用 TRAMP 編輯遠端文件,使用 dired 執行幾乎所有文件操作,在其中使用 grep/find/ack。您可以使用帶或不帶 X 的 Emacs。您不需要像 screen 或 tmux 這樣的終端多路復用器,但我更喜歡將 emacs 作為伺服器執行,如果從 shell 執行它,則使用 tmux 中的 emacsclient。