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


14

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

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

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

私はまた、大型モニターを活用して、数百のカラムをディスプレーしてvimを実行できるようにしたいと考えています。

これは可能ですか?


1
見ていdvtmを ...あなたはまた、tmuxのか、スクリーンとそれを組み合わせることができます。
jasonwryan

1
この質問は、コミュニティWikiとしてより適している場合があります。
jw013

回答:


5

私はあなたへの推薦が間違いなくあることに気づく前に、あなたの質問を何度も読みました: vim with tmux: http : //tmux.sourceforge.net/

tmuxは、画面「マルチプレクサ」であり、複数のウィンドウとペインを「1以内」に配置できます。

多くのcliコーダーの定番である由緒ある「スクリーン」プログラムの後継です。vimに対する最初の勝利の特徴の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

素敵な詳細な答え。私は1年にtmuxを使用しています(そして約25のvi / vim)が、ここでいくつかのことを取り上げました。
ダン

私のような初心者には素晴らしい答えです。不足している唯一のものは、使用するvimプラグインです...しかし、それは別の日の別の質問です。:)どうもありがとう...でもそれを試してすべてを試してみるには永遠に時間がかかりますが、受け入れられた答えを与えたいと思います。
ケビン・パウリ

確かに、私は実際にプラグインを使用していないと思いますが、レール上の私のルビーの領域のためのいくつかを含む多くが利用可能であることを知っています。
マイケルデュラント

2
ここであなたが言うことの多くは役に立つかもしれませんが、一つのことはオフです:vimはペインを水平と垂直の両方に容易に分割できます。
dubiousjim

1
画面が水平方向と垂直方向に分割できるようになりました。
マイケルデュラント

6

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

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

私も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を使用することを好みます。


ターミネーターを使用することをお勧めします!しかし、それは純粋に自分の選択です!
プラニットバウバ12年

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

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


2

キーボードナビゲーションが簡単な複数のシェルの場合は、GNU Screenまたはbyobu(これを拡張したもの)を調べてください。


2

私は数ヶ月前に同様の努力をし、マウスを捨てて、多数のセットアップとウィンドウマネージャーを調査しました。あなたはすでにたくさんの有用な提案を提供されているように見えますが、私は数セント余分に傷つけることはできないと考えました。これが私の2つです。

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

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


「ライトディストリビューション」アプローチの2番目。コマンドがコマンドごとにレイアウトされていても(Gentooインストールハンドブックは優れています)、すべてのシステムが異なるため、本当に手を汚さざるを得ません。最初のインストールではXも表示されないので、コマンドラインで止まってしまいます。
NDオタク

1

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

このような環境をセットアップするためのいくつかのスクリプト-MALiCE-「My Awesome Linux Coding Environment」を作成するまでに行きました。Githubで利用可能です:

悪意

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

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

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

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


elinks優れたテキストベースのユーティリティのリストにWebブラウザーを追加できます。
ステファンシャゼル

他のテキストベースのウェブブラウザと比較してどうですか?コマンドラインからWebサーフィンに慣れることはできませんでした:p


0

これの鍵は、配布ではなくツールです。GUIツールの使用を中止し、CLIツールを微調整して、見た目と動作を正確に調整してください。1つの方法は、編集~/.Xresourcesしてからxrdbinで読み込むこと~/.xinitrcです。そこで、常に使用する多数のアプリケーションを起動することもできます。

明らかに、良いシェルが必要です。zshと言います。広範囲に作業する必要があります~/.zshrc。(しかし、bashはもちろん動作します。それから~/.bashrc、場所になります。)

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

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

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

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

2)カーソルの移動、検索などのキーボードショートカット(筋肉の記憶など)

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

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

幸運を祈ります:)私があなたと同じ道を歩んでいるので、あなたが終わったら(またはほとんどそこに...あなたは決して終わっていない)あなた自身のポインタを私にメールしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.