systemd позволяет пользователям выполнять свои собственные systemd экземпляры для управления частными демонами.
Если у Вас уже есть установленный systemd, все, что необходимо сделать, запуститься systemd --user
и справьтесь со своими сервисами путем выполнения systemctl --user
. Пользовательские сервисы будут разыскиваться в ~/.config/systemd/user
.
По умолчанию systemd уничтожит пользовательские сервисы на выход из системы (как Вы запросили). Это поведение может быть изменено путем включения задерживающийся для пользователя с loginctl --enable-linger $USER
команда.
Информация о гумусе может быть найдена на странице ArchWiki.
У вас будут пробелы в конце строки при выборе и копировании с терминала, если приложение отображало пробелы в этом месте. Приложения могут отображать пробелы, чтобы стереть то, что было раньше. В терминалах есть команды для удаления всей строки или удаления символов справа от курсора; приложения выбирают между этим и отображением пространств в зависимости от того, что они считают наиболее эффективным. Например, если вы вводите что-то в командной строке, а затем нажимаете Backspace, приложение (например, оболочка), скорее всего, перезапишет последний символ пробелом.
Если у вас есть соединение X11, вы можете использовать xsel
или xclip
, чтобы скопировать файл в локальный буфер обмена.
Экспериментально кажется, что Vim изо всех сил старается не отображать строки, заканчивающиеся пробелами (даже если буфер содержит строку, заканчивающуюся пробелами). Так что копирование оттуда - вариант, если у вас нет соединения X11.
Альтернативой может быть пост-обработка после копирования:
xsel | sed 's/ *$//' | xsel
Копирование и вставка с экрана терминала никогда не будет полностью надежным, потому что оно имеет дело с выводом на экран, а не с исходным исходным материалом. Если некоторые приложения выводят текст на терминал необычным образом, и это приводит к тому, что терминал не может угадать исходный текст, вероятно, вы или терминал мало что можете с этим поделать.
Много информации об исходном тексте потенциально теряется, когда он отображается на терминале: например, была ли область белого пространства создана табуляцией или серией пробелов, или были ли две строки текста изначально одна длинная строка, которая была перенесена, или две отдельные строки.
Терминал пытается сделать все возможное, чтобы позволить вам скопировать и вставить исходный текст, который был передан терминалу, но он не всегда может знать.
В качестве эксперимента попробуйте следующее:
less
, чтобы просмотреть файл, содержащий очень длинные строки, которые переносятся на несколько терминальных строк. less
выбрал всю логическую строку, которая охватывает несколько физических строк, и если вы вставите ее в другое место, она будет сохранена как одна длинная строка. less
перекрашивает физическую линию экрана физической линией, и терминал больше не имеет никакого способа узнать, что физические линии были соединены вместе. YMMV в этом эксперименте, потому что ваш терминал (или версия less
) может быть более или менее умен, чем мой.
Как правило, чем тупее программа, создавшая результат, тем выше ваши шансы скопировать и вставить в точности исходный материал. cat
, например, настолько тупой, насколько это возможно. (Вы, конечно, понимаете, что «тупой» - это комплимент!)
Если вы получаете дополнительный пробел в конце строки под tmux
, вероятно, это потому, что tmux
фактически повторяет этот персонаж. Помните, что tmux
выполняет собственную эмуляцию терминала, а затем повторно генерирует новые терминальные последовательности для рендеринга на нижележащий терминал. Возможно, он повторяет этот пробел, потому что считает, что в некоторых случаях может возникнуть необходимость перезаписать какой-либо другой символ, который, по его мнению, может там присутствовать. Какой бы ни была причина, терминал, вероятно, не имеет возможности узнать, что символ пробела на самом деле не является частью исходного содержимого.
Используя Fedora 17 Linux и окно терминала консоли, я открываю vim с помощью синтастической надстройки vim, мне удалось последовательно воспроизвести эту ошибку. Я помещаю эти три строки Python в vim:
a = "generic assignment"
b = "cursor is on this line"
c = "generic assignment"
Затем я визуально выделяю эти строки и вставляю их сюда:
a = "generic assignment"
b = "cursor is on this line"
c = "generic assignment"
Обратите внимание, как во второй строке скопированы тонны пробелов. Это точно раздражает.
Строки 1 и 3 копируются, как ожидалось, но вторая строка копирует пробелы до самого правого места окна терминала.
Временное решение:
Переместите выделенную строку (курсор vim) от строк, которые вы хотите скопировать, прежде чем выбирать ее с помощью мыши. Тогда лишние пробелы не появятся в этой строке.
Я предполагаю, что причиной этих проблем являются надстройки синтаксиса и цветовой подсветки.
На самом деле это несколько вопросов, и ни один из ответов не дает ничего, кроме беглого обзора интересных частей:
Большинство терминалов (например, xterm) хранят данные, которые вы можете выбрать на экране. За ним нет скрытой части, которая сообщает терминалу, что приложение предназначено для заполнения фона.
Приложения обновляют экран, перемещая курсор, записывая текст (который может включать фактические пробелы - или табуляции, которые терминал отображает как пробелы) и стирая части экрана.
Стирание - это особая проблема (для выбора / вставки), поскольку многие терминалы (например, xterm) будут заполнить стертую область экрана текущим цветом (функция стирания заднего цвета (bce) в описании терминала). Но в то же время в стертых областях больше не хранятся символы в этих местах экрана. Терминалы, которые используют отображение на экране, позволят вам выбрать все, кроме стертой области. (В качестве особого случая ваш терминал мог стереть области, окруженные текстом, который он будет выдавать за пробелы для выбора).
Все это неприятно, и давным-давно xterm предоставил возможность игнорировать конечные пробелы. Большинство других терминалов этого не предоставляют. И поскольку это вариант, он может не включиться, если вы запустили xterm. Большинство разработчиков терминалов, копирующих функции xterm, не копируют параметры.
Переход к tmux: он не поддерживает функцию bce. Его разработчики решили не делать этого. Таким образом, обычные приложения, работающие в tmux, производят завершающие пробелы. Когда вы переопределяете описание терминала, это сбивает tmux с толку, поскольку он не знает, что vim действительно предполагает, что фон будет очищен с использованием текущего цвета. Вы просто стираете. Без цвета.
С другой стороны, разработчики экрана GNU некоторое время назад решили поддержать эту функцию. Это необязательно ...
Дополнительная литература:
highlightSelection
(руководство xterm) trimSelection
(руководство xterm)
{{1 }} Если вы установите highlightSelection, вы можете увидеть текст, который выделен , включая любые конечные пробелы. Очистка экрана (или строки) сбрасывает его в состояние, не содержащее пробелов. Некоторые строки могут содержать завершающие пробелы, когда приложение записывает их на экран. Однако вы можете не захотеть вставлять строки с конечными пробелами. Если этот ресурс истинен, xterm удалит конечные пробелы из выделенного текста. Он не влияет на пробелы, которые приводят к переносу строки, и не удаляет завершающую новую строку из вашего выделения. По умолчанию это "ложь".
реализует новый ресурс
trimSelection
, который позволяет xterm для обрезки конечных пробелов из выбранных строк. Это не влияет на выделение.
highlightSelection
)
Этот патч устраняет один из моих давних нареканий: выбор xterm не ясно показывает, что выбирается (согласно запросу Дэвида, он контролируется ресурсом, который по умолчанию соответствует старому поведению).
Во многих современных терминальных приложениях есть такие настройки, как «Обрезать конечные пробелы» в параметрах мыши / копирования. Они присутствуют для Konsole (KDE) и Yakuake.
Я также использую xterm-256color
и всегда не любил конечные пробелы, когда копирование между терминалами, например, копирование всего файла между двумя удаленными серверами. Мне проще всего просто скопировать весь файл, а затем запустить его в месте назначения:
:%s/\s\+$//g
Это удалит все конечные пробелы из всего файла. Это быстро и просто.
xterm-256color
кажется, теперь работает правильно (полные цвета и отсутствие проблем с прорисовкой фона )и имеет функцию BCE (стирания заднего цвета ). Вы можете включить его в tmux, поместив его в свой~/.tmux.conf
:
set -g default-terminal "xterm-256color"