Пропонована установка для надлегкої текстової програми програмування в Linux


14

Я шукаю пропозиції щодо налаштування для моїх конкретних потреб. Я не робив багато Linux з коледжу і хочу повернутися до нього як до хобі. У мене є не надто потужне обладнання (512 Мбайт, одноядерний). Я хочу все робити за допомогою текстових оболонок та редакторів, таких як vim. Моя мета - ніколи не торкатися миші.

Мені потрібна можливість відкрити декілька оболонок одночасно, одна працює за допомогою веб-сервера, одна запущена vim, одна працює конвеєром побудови моєї програми, інша для спеціальних команд оболонки, таких як wget, grepping та untarring тощо. Мені потрібно мати можливість відкривати нові оболонки та швидко перемикатися між оболонками за допомогою клавіатури.

Але хоча я хочу декілька оболонок, я не хочу графічного середовища для робочого столу. Мені ніколи не хочеться спокушатися користуватися мишею; частина мого призначення - змусити себе вивчити командний рядок способів виконання різних завдань.

Я також хочу, щоб я міг скористатися своїм великим монітором, під керуванням vim з пару сотень стовпців.

Чи можливо це?


1
Погляньте на dvtm ... Ви також можете комбінувати його з tmux або екраном.
Jasonwryan

1
Це питання може бути більш підходящим як вікі спільноти.
jw013

Відповіді:


5

Я кілька разів читав ваші запитання, перш ніж зрозумів, що напевно є рекомендація для вас: 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 ;)

Псевдоніми можна встановити у файлі .bash_aliases, який викликається з .bashrc за допомогою: # Визначення псевдонімів. якщо [-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

Приємна детальна відповідь. Я використовую tmux протягом двох років зараз (а vi / vim близько 25), але тут я взяв деякі речі.
День

Чудова, чудова відповідь для нооба, як я. Про єдине, чого не вистачає, це те, які плагіни vim ви використовуєте ... але це ще одне питання для іншого дня. :) Ще раз дякую ... хоч мені знадобиться назавжди пройти це і спробувати все, я хотів іти далі, щоб дати вам прийняту відповідь.
Кевін Паулі

Звичайно, я дійсно думаю, що я не використовую ніяких плагінів, але я знаю, що є багато доступних, в тому числі і для моєї області рубіну на рейках.
Майкл Дюррант

2
Багато з того, що ви сказали тут, може бути корисним, але одне виключено: vim може легко розділити панелі як на горизонті, так і вертикально.
сумнівним

1
Оновлено, що зараз екран може робити горизонтальні та вертикальні розбиття.
Майкл Дюрант

6

Я використовую XMonad + tmux + Emacs для подібної установки.

Раніше я використовував пазуху рік, але XMonad відчував себе більш надійним. Я ніколи не мав жодних проблем у своїх 256МБ, 512МБ коробках з ним. У Ratpoison були деякі проблеми зі стабільністю, але це анекдотично і з того часу все може змінитися.

Я також використовував екран GNU, але tmux має деякі функції, які не має екран.

Якщо ви вже знаєте vim, краще не вивчайте новий інструмент. Якщо ви цього не зробите, Emacs може використовувати декілька оболонок ( C-u M-x shell), використовувати улюблену оболонку ( M-x term), ви можете писати, збирати та налагоджувати свої програми, читати пошту, спілкуватися в IRC, читати веб-сторінки / інформація / man, виконувати більшість REPL оболонок (наприклад M-x run-python), використовуйте git / hg / svn всередині нього, редагуйте віддалені файли за допомогою TRAMP, використовуйте dired для виконання майже всіх операцій з файлами, використовуйте grep / find / ack всередині нього. Ви можете використовувати Emacs з або без X. Вам не потрібен термінальний мультиплексор, наприклад, екран або tmux, але я вважаю за краще запускати emacs як сервер і використовувати emacsclient від tmux, якщо запускати його з оболонки.


Я б запропонував використовувати термінатор! Але це суто вибір!
Праніт Баува

3
  • рішення без X взагалі: framebuffer + консоль Linux + екран GNU + vim + w3m
  • рішення з X, але без середовища на робочому столі: dwm + urxvt + GNU екран + vim + w3m + surf

dwm використовує лише кілька сотень кБ пам'яті, керовану клавіатурою, але ви можете використовувати мишу, якщо хочете. Перегляньте http://suckless.org щодо більш простих, але потужних інструментів.


2

Для декількох оболонок з легкою навігацією по клавіатурі ви можете заглянути в GNU Screen або byobu (що є його доповненням).


2

Пару місяців тому я взявся за подібне починання, відмовившись від миші та досліджуючи безліч наборів та менеджерів вікон. Схоже, вам уже запропонували багато корисних пропозицій, але я подумав, що кілька зайвих центів не можуть зашкодити. Ось мої два:

Погляньте на менеджер вікон i3. Він легкий, з простою конфігурацією і не потребує перекомпіляції після зміни конфігурації. Функціональність плитки та позначені робочі області означають відсутність миші та нескінченні можливості на основі переваг та простору екрану. Програми можуть бути призначені тегам, а ключі можуть бути прив’язані практично до всього. i3status або conky легко переносяться на i3 для отримання інформації про систему. Встановіть dmenu і відключіть мережу.

Спробуйте легкий дистрибутив. Arch, Gentoo та Slackware пропонують різні варіанти налаштування легкого середовища. Почніть з малого і зверніть увагу на залежності. Встановіть лише те, що вам потрібно, і навчитесь правильно його налаштовувати. Не запускайте X під час завантаження. Навчіться використовувати всі інструменти за свій рахунок. Вім - звір. Якщо ви вже знаєте це, використовуйте його. Якщо ні, то дізнайтеся це. Зверніть увагу на деталі. Дізнайтеся, що у вас є у вашій системі та чому вона існує.


Визначення підходу "світла дистрибуція". Це насправді змушує вас забруднити руки, навіть якщо вони по команді розкладають їх для вас ( Довідник із встановлення Gentoo є відмінним), адже кожна система інша. Початкова установка навіть не дає вам X, тому ви застрягли в командному рядку.
ND Geek

1

У мене було подібне бажання близько півроку тому. Передусім тому, що я працював через SSH цілий день. Як уже було запропоновано, використовуйте екран GNU. Це досить жахливо (IMHO) відразу після його встановлення. Однак! Він налаштовується за допомогою файлу .screenrc. В Інтернеті є багато навчальних посібників, які надають код, який ви можете вирізати та вставити, щоб отримати його так, як вам подобається.

Я пішов так далеко, що склав кілька сценаріїв для створення такого середовища - MALiCE - «Моє дивовижне середовище кодування Linux». Доступний на Github тут:

МАЛІЦЬ

Це також документує безліч комбінацій клавіш, а також зразки файлів .muttrc та .screenrc, які налаштовані на роботу з такими речами, як gmail.

Зверніть увагу, що він не є ідеальним, але це може заощадити час та зусилля, щоб ознайомитись із деякими з конфігураційних файлів та сценаріїв. Є сильна упередженість vim.

Я також рекомендую такі програми, як cmus (текстовий медіаплеєр - досить добре) та mutt (клієнт електронної пошти - знову налаштований за допомогою текстового файлу .muttrc). Є також текстові клієнти IRC, вірять чи ні, текстові відеодекодери, які перетворять відео в ASCII - трохи екстремальний, але кожен по-своєму.

Якщо ви зовсім не хочете робочого столу, то існує ряд варіантів. Наприклад, ви можете встановити програмне забезпечення, яке, якщо я добре пам'ятаю, завантажується в інтерфейс командного рядка. Вам потрібно вийти зі свого шляху, щоб запустити графічний інтерфейс.


Ми могли б додати elinksвеб-браузер до цього списку хороших текстових утиліт.
Стефан Шазелас

Як вона порівнюється з іншими текстовими веб-браузерами? Я ніколи не зміг звикнути до веб-серфінгу з командного рядка: p


0

Ключовим у цьому є не розподіл, а інструменти. Просто перестаньте використовувати інструменти графічного інтерфейсу та налаштуйте інструменти CLI, щоб вони виглядали та поводилися саме так, як вам хотілося. Один із способів - відредагувати ~/.Xresources, а потім завантажитиxrdb в ~/.xinitrc. Там ви також можете запустити купу додатків, якими ви завжди користуєтесь.

Очевидно, що вам потрібна хороша оболонка: я б сказав zsh. Вам доведеться багато працювати над ~/.zshrc. (Але, звичайно, і Баш працював би.~/.bashrc було б місце.)

По-друге, редактор. Emacs або vim, залежно від того, яким ти зараз користуєшся. Менш просунутий редактор (наприклад, nano) не обійдеться. Як і з шкаралупою, ви б зробили багато роботи~/.emacs відповідним файлом init.

Вам потрібно включити стільки, скільки можливо, до свого текстового редактора. Я наведу кілька прикладів із світу Emacs просто тому, що я користувач Emacs. Для пошти, rmail. Для управління файлами, надіслано. Для веб-перегляду, W3M. Для новин, gnus (хоча я цим не користуюся). Для чоловічих сторінок,M-x man . І так далі.

Причина, що ви зробите це, а не використовувати інші програми CLI (наприклад, просто man для підручних сторінок, рись для перегляду тощо):

1) рівень інтеграції (вбивати, вибивати, робити ярлики; все мить ...)

2) комбінації клавіш для навігації по курсору, пошуку тощо (тобто вашої м’язової пам’яті)

Що стосується X, вам не потрібно відмовлятися від нього. Тільки тому, що ви хочете, щоб все в CLI не означає, що ви взагалі не хочете GFX (або - принаймні, я хочу лише CLI, і GFX). Наприклад, хоча ви модифікуєте зображення за допомогою (CLI) змінення або перетворення, ви все одно хочете відобразити його, щоб перевірити результат (наприклад, в gliv; просто відключіть рядок меню, щоб не спокуситися користуватися мишею). Інший приклад - документи LaTeX та PDF.

Що стосується терміналу, більшість людей скажуть екран або tmux, але ви також можете використовувати віртуальні термінали Linux (консоль або ttys). У X urxvt має розширення Perl, яке дозволяє вкладки. Для тих (ttys та urxvt) ви можете встановити єдиний інтерфейс, наприклад, Alt-J / K для перемикання між вкладками, тому вам не доведеться тягнутися до клавіш зі стрілками (або будь-якого іншого за замовчуванням).

Удачі :) Не соромтеся надіслати мені свої власні вказівки, коли закінчите (або майже там ... ви ніколи не закінчились), оскільки я на тому ж шляху, як і ви.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.