web-dev-qa-db-ja.com

Linuxでの超軽量のテキストベースのプログラミング環境の推奨セットアップ

特定のニーズに合わせたセットアップの提案を探しています。私は大学時代からLinuxをあまりやっていないので、趣味でLinuxに戻りたいと思っています。あまり強力ではないハードウェア(512 MB RAM、シングルコア)があります。テキストベースのシェルやvimなどのエディターを介してすべてを実行したいと思います。私の目標は、マウスに決して触れないことです。

複数のシェルを一度に開く機能が必要です。1つはWebサーバーを実行し、1つはvimを実行し、もう1つはアプリケーションビルドパイプラインを実行し、もう1つはwget、grepping、untararなどのアドホックシェルコマンド用です。キーボードを使用して、新しいシェルを開き、シェルをすばやく切り替えることができます。

ただし、複数のシェルが必要な場合でも、グラフィカルデスクトップ環境が必要ですnot。私はマウスを使いたくありません。私の目的の一部は、さまざまなタスクを実行するコマンドラインの方法を学ぶように自分自身を強制することです。

また、数百の列をディップレイした状態でvimを実行している、大きなモニターを利用できるようにしたいと考えています。

これは可能ですか?

14
Kevin Pauli

私は間違いなくあなたに推薦があることに気付く前にあなたの質問を数回読みました:vim with tmux:http:// tmux .sourceforge.net /

tmuxは、「1」以内に複数のウィンドウとペインを持つことができる「マルチプレクサ」画面です。

これは、多くのCLIコーダーの定番である、由緒ある「画面」プログラムの後継です。 vimに対する元々の優れた機能の1つは、ウィンドウを垂直方向と水平方向に分割できることでした。ただし、画面が前に移動し、それも実行できるようになりました。

例:

enter image description here

私がお勧めするセットアップのもう1つの部分は、適切なエイリアスのセットです。これらにより、タイピングとインタラクションがはるかに簡単かつ迅速になります

私のお気に入りのいくつかを例としてここに示します。

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を使用しているほとんどの人は、キーを簡単に再マップします。デフォルトのバインディングはそれほど良くありません。これが私の設定です:

$ cat〜/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
5
Michael Durrant

同様のセットアップにXMonad + tmux + Emacsを使用しています。

私は過去1年間ラトポイズンを使用しましたが、XMonadはより堅牢に感じました。 256MB、512MBのボックスで問題が発生したことはありません。 Ratpoisonにはいくつかの安定性の問題がありましたが、これは逸話であり、それ以来状況が変わった可能性があります。

GNU screenも使用しましたが、tmuxにはscreenにはない機能がいくつかあります。

すでにvimを知っているなら、新しいツールを学ばないほうがいいでしょう。そうしないと、Emacsは複数のシェルを使用できます(C-u M-x Shell)、お気に入りのシェルを使用します(M-x term)、プログラムの作成、コンパイル、デバッグ、メールの読み取り、IRCでのハングアウト、web/info/manページの読み取り、ほとんどのREPLシェル(例:M-x run-python)、その中でgit/hg/svnを使用し、TRAMPでリモートファイルを編集し、diredを使用してほとんどすべてのファイル操作を実行し、その中でgrep/find/ackを使用します。 Xの有無にかかわらずEmacsを使用できます。screenやtmuxのようなターミナルマルチプレクサは必要ありませんが、サーバーとしてemacsを実行し、シェルから実行する場合はtmuxのemacsclientを使用することをお勧めします。

6
Emre Sahin
  • xがまったくないソリューション:フレームバッファー+ Linuxコンソール+ GNU画面+ vim + w3m
  • xを使用し、デスクトップ環境を使用しないソリューション:dwm + urxvt + GNU screen + vim + w3m + surf

dwmは、キーボード駆動の数百kBのメモリしか使用しませんが、必要に応じてマウスも使用できます。よりシンプルで強力なツールについては、 http://suckless.org を確認してください。

3
Jing

キーボードナビゲーションが簡単な複数のシェルの場合は、 GNU Screen 、または byob (これは拡張機能です)を調べることをお勧めします。

2
user27282

私は数か月前に同様の取り組みを行い、マウスを放棄して、多数のセットアップとウィンドウマネージャーを調査しました。あなたはすでにたくさんの役立つ提案を提供されているように見えますが、私は数セント余分に害を及ぼすことはできないと考えました。これが私の2つです:

I3ウィンドウマネージャーを見てください。軽量で、構成が簡単で、構成を変更した後に再コンパイルする必要がありません。タイリング機能とタグ付きワークスペースは、マウスがなく、好みや画面スペースに基づいて無限の可能性があることを意味します。プログラムはタグに割り当てることができ、キーはほぼすべてのものにバインドできます。 i3statusまたはconkyは、システム情報のためにi3に簡単にパイプされます。 dmenuをインストールし、マウスのプラグを抜きます。

軽いディストリビューションを試してください。 Arch、Gentoo、Slackwareはすべて、明るい環境をセットアップするためのさまざまなオプションを提供します。小さく始めて、依存関係に注意を払ってください。必要なものだけをインストールし、適切に構成する方法を学びます。起動時にXを起動しないでください。あなたの費用ですべてのツールを使用することを学びます。 Vimは獣です。すでにご存知の方はご利用ください。そうでない場合は、それを学びます。詳細に注意してください。システムに何があるのか​​、なぜそこにあるのかを学びましょう。

2
marquezc329

私は約6ヶ月前に同様の欲求を持っていました。主な理由は、私が1日中SSH経由で作業していたためです。すでに提案されているように、GNU screen。インストール直後はかなりひどい(IMHO)です。ただし、.screenrcファイルを使用して高度にカスタマイズできます。提供するオンラインチュートリアルはたくさんあります。カットアンドペーストして好きなように取得できるコード。

私は、そのような環境をセットアップするためのいくつかのスクリプトをまとめるところまで行きました-MALiCE-「私の素晴らしいLinuxコーディング環境」。こちらのGithubで入手できます:

MALiCE

これには、多くのキーボードショートカットと、サンプルの.muttrcファイルおよび.screenrcファイルも記載されています。これらはGmailなどで動作するように設定されています。

完璧ではないことに注意してください。ただし、構成ファイルとスクリプトのいくつかを確認することで、時間と労力を節約できる可能性があります。強いvimバイアスがあります。

また、cmus(テキストベースのメディアプレーヤー-かなり良い)やmutt(電子メールクライアント-テキストファイル.muttrcを介して構成されている)などのプログラムもお勧めします。テキストベースのIRCクライアントがあり、信じられないかもしれませんが、ビデオをASCIIに変換するテキストベースのビデオデコーダーもありますが、それぞれが彼ら自身。

デスクトップがまったく必要ない場合は、いくつかのオプションがあります。たとえば、slackwareをインストールできます。これは、覚えていればコマンドラインインターフェイスで正しく起動します。 GUIを開始するには、邪魔にならないようにする必要があります。

1
user19082

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

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

ただし、すべてのグラフィックカードですべてがサポートされているわけではないため、テストする必要があります。

複数のシェルを切り替えるには、Alt-Fで十分速いと思います。

0

これの鍵は配布ではなく、ツールです。 GUIツールの使用をやめ、CLIツールを微調整して、希望どおりの外観と動作を実現します。 1つの方法は、~/.Xresourcesを編集してから、~/.xinitrcxrdbをロードすることです。そこで、いつも使用している一連のアプリケーションを開始することもできます。

明らかに、優れたシェルが必要です。zshと言います。 ~/.zshrcで広範囲に取り組む必要があります。 (もちろん、bashも機能します。その場合、~/.bashrcがその場所になります。)

第二に、エディター。現在使用しているものに応じて、Emacsまたはvim。あまり高度でないエディター(nanoなど)は機能しません。シェルと同様に、~/.emacsまたは対応するinitファイルで多くの作業を行います。

テキストエディタにできるだけ多く組み込む必要があります。私がEmacsユーザーであるという理由だけで、Emacsの世界からいくつかの例を挙げましょう。メールの場合、rmail。ファイル管理のために、dired。 Webブラウジングの場合、W3M。ニュースについては、gnus(私は使用していませんが)。マニュアルページの場合は、M-x man。等々。

これを行い、他のCLIアプリケーション(たとえば、manページの場合はman、ブラウジングの場合はlynxなど)を使用しない理由は次のとおりです。

1)統合のレベル(キル、ヤンク、ショートカットの作成、すべてが一瞬で...)

2)カーソルをナビゲートしたり、検索したりするためのキーボードショートカット(つまり、筋肉の記憶)

Xに関しては、あなたはそれを放棄する必要はありません。 CLIですべてが必要だからといって、GFXがまったく必要ないというわけではありません(または、少なくとも、CLIのみが必要ですおよび GFX)。たとえば、(CLI)mogrifyまたはconvertを使用して画像を変更しても、結果を確認するために画像を表示する必要があります(たとえば、glivでは、メニューバーを無効にして、マウスを使用したくないようにします)。別の例はLaTeXとPDFドキュメントです。

ターミナルに関しては、ほとんどの人がscreenまたはtmuxと言いますが、Linux仮想ターミナル(コンソール、またはtty)を使用することもできます。 Xでは、urxvtにはタブを有効にするPerl拡張機能があります。それら(ttysとurxvt)の場合、タブを切り替えるためにAlt-J/Kなどの統一されたインターフェイスを設定できるため、矢印キー(またはデフォルトのもの)に手を伸ばす必要はありません。

頑張ってください:)私はあなたと同じ道を進んでいるので、あなたが終わったとき(またはほとんどそこに...あなたは決して終わっていない)、あなた自身のいくつかのポインタを私にメールしてください。

0
Emanuel Berg