Предлагаемая настройка для сверхлегкой текстовой среды программирования в Linux

14

Я ищу предложения для настройки для моих конкретных потребностей. С тех пор как я учился в колледже, я не делал много Linux и хочу вернуться к этому как хобби. У меня есть не слишком мощное оборудование (512 МБ ОЗУ, одноядерный). Я хочу делать все через текстовые оболочки и редакторы, такие как vim. Моя цель - никогда не трогать мышь.

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

Но даже если мне нужны несколько оболочек, мне не нужна графическая среда рабочего стола. Я никогда не хочу испытывать искушение использовать мышь; Часть моей цели - заставить себя научиться командной строке выполнять различные задачи.

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

Это возможно?

Кевин Паули
источник
1
Посмотрите на dvtm ... Вы также можете комбинировать его с tmux или screen.
Джейсонвриан
1
Этот вопрос может быть более подходящим в качестве сообщества вики.
jw013

Ответы:

5

Я прочитал ваши вопросы несколько раз, прежде чем понял, что у меня есть для вас рекомендация: vim с 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 с помощью: # Определения псевдонимов. 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когда я вписываю имя каталога (которое существует), мои компакт-диски оболочки в этот каталог немедленно. Острота! Итак, вот мои изменения .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 вы используете ... но это другой вопрос для другого дня. :) Еще раз спасибо ... хотя мне понадобится целая вечность, чтобы пройти через это и попробовать все, я хотел идти вперед и дать вам принятый ответ.
Кевин Паули
Конечно, я на самом деле думаю, что я не использую никаких плагинов, но я знаю, что есть много доступных, включая некоторые для моей области ruby ​​на рельсах.
Майкл Даррант
2
Многое из того, что вы здесь говорите, может быть полезным, но одно не так: vim может легко разделять панели как по горизонтали, так и по вертикали.
dubiousjim
1
Обновлено, чтобы отметить, что экран теперь может делать горизонтальное и вертикальное разделение.
Майкл Даррант
6

Я использую XMonad + tmux + Emacs для аналогичной настройки.

В прошлом году я использовал ratpoison, но XMonad чувствовал себя более крепким. У меня никогда не было проблем с моими 256МБ, 512МБ коробками с ним. У Ratpoison были некоторые проблемы со стабильностью, но это анекдотично, и с тех пор все могло измениться.

Я также использовал экран GNU, но у tmux есть некоторые функции, которых нет у экрана.

Если вы уже знаете 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. Вы можете использовать Emacs с или без X. Вам не нужен терминальный мультиплексор, такой как screen или tmux, но я предпочитаю запускать emacs как сервер и использовать emacsclient из tmux, если запускаете его из оболочки.

Эмре Сахин
источник
Я бы предложил использовать терминатор! Но это чисто выбор!
Пранит Баува
3
  • решение без X вообще: framebuffer + консоль Linux + экран GNU + vim + w3m
  • решение с X, но без рабочего стола: dwm + urxvt + экран GNU + vim + w3m + surf

dwm использует только несколько сотен килобайт памяти, управляемой клавиатурой, но вы также можете использовать мышь, если хотите. Проверьте http://suckless.org для более простых, но мощных инструментов.

Jing
источник
2

Для нескольких оболочек с легкой навигацией между ними вы можете заглянуть в экран GNU или byobu (что является его улучшением).


источник
2

Несколько месяцев назад я предпринял аналогичные усилия, отказавшись от мыши и изучив множество настроек и оконных менеджеров. Похоже, вам уже предложили много полезных предложений, но я решил, что пара лишних центов не повредит. Вот мои два:

Посмотрите на оконный менеджер i3. Он легкий, с простой настройкой и не требует перекомпиляции после изменения конфигурации. Функциональность листов и рабочие области с тегами означают отсутствие мыши и бесконечные возможности, основанные на предпочтениях и пространстве экрана. Программы могут быть назначены тегам, а ключи могут быть связаны практически с чем угодно. i3status или conky легко передаются на i3 для получения информации о системе. Установите dmenu и отключите вашу мышь.

Попробуйте легкий дистрибутив. Arch, Gentoo и Slackware предлагают различные варианты настройки светлой среды. Начните с малого и обратите внимание на зависимости. Установите только то, что вам нужно, и научитесь правильно его настраивать. Не запускайте X при загрузке. Научитесь использовать все инструменты за свой счет. Вим зверь. Если вы уже знаете это, используйте его. Если нет, изучите это. Обратите внимание на детали. Узнайте, что у вас есть в вашей системе и почему она там есть.

marquezc329
источник
Отделение "легкого дистрибутива". Это действительно заставляет вас пачкать руки, даже если они выкладывают это по команде (команда « Руководство по установке Gentoo» отлично), потому что все системы разные. Первоначальная установка даже не дает вам X, так что вы застряли в командной строке.
ND Geek
1

У меня было подобное желание около шести месяцев назад. Прежде всего потому, что я работал через SSH весь день. Как уже было предложено, используйте экран GNU. Это довольно ужасно (IMHO) сразу после установки. Тем не мение! Он легко настраивается с помощью файла .screenrc. Существует множество онлайн-учебников, которые предоставляют код, который вы можете вырезать и вставить, чтобы получить его так, как вам нравится.

Я зашел так далеко, что собрал несколько сценариев для настройки такой среды - MALiCE - «Моя удивительная среда программирования Linux». Его можно найти на Github здесь:

злоба

Это также документирует множество сочетаний клавиш, а также примеры файлов .muttrc и .screenrc, которые настроены для работы с такими вещами, как gmail.

Обратите внимание, что это не идеально, но это может сэкономить вам время и усилия, чтобы взглянуть на некоторые файлы конфигурации и скрипты. Есть сильный уклон Vim.

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

Если вам вообще не нужен рабочий стол, есть несколько вариантов. Например, вы можете установить slackware, который, если я правильно помню, загружается в интерфейс командной строки. Вы должны изо всех сил, чтобы запустить графический интерфейс.

Руи Ф Рибейро
источник
Мы могли бы добавить elinksвеб-браузер в этот список хороших текстовых утилит.
Стефан Шазелас
Как это соотносится с другими текстовыми веб-браузерами? Я никогда не мог привыкнуть к веб-серфингу из командной строки: p
0

Ключом к этому является не дистрибутив, а инструменты. Просто прекратите использовать инструменты GUI и настройте инструменты CLI, чтобы они выглядели и вели себя именно так, как вам хотелось бы. Один из способов заключается в редактировании ~/.Xresources, а затем загрузить его xrdbв ~/.xinitrc. Там вы также можете запустить несколько приложений, которые вы всегда используете.

Очевидно, вам нужна хорошая оболочка: я бы сказал, зш. Вам придется много работать над ~/.zshrc. (Но, конечно, bash тоже сработает. Тогда ~/.bashrcэто будет то место.)

Во-вторых, редактор. Emacs или vim, в зависимости от того, какой вы сейчас используете. Менее продвинутый редактор (например, nano) не подойдет. Как и в случае с оболочкой, вы бы проделали большую работу над ~/.emacsсоответствующим файлом инициализации.

Вы должны включить как можно больше в ваш текстовый редактор. Я приведу несколько примеров из мира Emacs просто потому, что я пользователь Emacs. Для почты, Rmail. Для управления файлами, Dired. Для просмотра веб-страниц, 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 (консоль или ttys). В X urxvt имеет расширение Perl, которое включает вкладки. Для них (ttys и urxvt) вы можете настроить унифицированный интерфейс, например Alt-J / K, для переключения между вкладками, чтобы вам не приходилось тянуться к клавишам со стрелками (или к чему-либо по умолчанию).

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

Эмануэль Берг
источник