Как скопировать текст от энергии до внешней программы?

Перечислите каталоги deeply-nested-first.

find . -depth -type d -exec rmdir {} \; 2>/dev/null

(Обратите внимание, что перенаправление относится find управляйте в целом, не только к rmdir. Перенаправление только для rmdir вызвал бы значительное замедление, поскольку необходимо будет вызвать промежуточную оболочку.)

Можно постараться не работать rmdir на непустых каталогах путем передачи -empty предикат для нахождения. GNU находит тесты каталогом, когда он собирается выполнить команду, таким образом, каталоги, которые были просто освобождены, будут забраны.

find . -depth -type d -empty -exec rmdir {} \;

Другой способ убыстриться состоял бы в том, чтобы сгруппироваться rmdir вызовы. Оба, вероятно, будут заметно быстрее, чем оригинал, особенно под Cygwin. Я не ожидаю большого различия между этими двумя.

find . -depth -type d -print0 | xargs -0 rmdir 2>/dev/null
find . -depth -type d -exec rmdir {} + 2>/dev/null

То, какой метод быстрее, зависит от того, сколько непустых каталогов Вы имеете. Вы не можете объединиться -empty с методами для группировки вызовов, потому что затем каталоги, которые только содержат пустые каталоги, не пусты к этому времени find смотрит на них.

Другой метод должен был бы выполнить несколько передач. Быстрее ли это, зависит от большого количества вещей, включая то, может ли целая иерархия каталогов остаться в дисковом кэше между find выполнения.

while [ -n "$(find . -depth -type d -empty -print -exec rmdir {} +)" ]; do :; done

С другой стороны, используйте zsh. Спецификатор шарика F соответствия непустые каталоги, таким образом, /^F соответствия пустые каталоги. Каталоги, которые только содержат пустые каталоги, не могут быть подобраны так легко.

while rmdir **/*(/N^F); do :; done

(Это завершается когда rmdir получает пустую командную строку.)

87
17.06.2015, 05:57
11 ответов

Следующее будет работать только если vim --version указывает, что Вы имеете +xterm_clipboard функция. В противном случае необходимо будет установить дополнительные пакеты или перекомпилировать энергию с той добавленной опцией.


Существует на самом деле две опции для этого:

"+y

копии к "обычному" буферу буфера обмена (таким образом, можно вставить использование Ctrl+V, щелкните правой кнопкой и выберите "Вставку" и т.д.), в то время как

"*y

копии к выбору X11 - можно вставить от этого буферного щелчка средней кнопкой использования.

Отметьте это "* и "+ работайте оба пути. Таким образом, при выборе некоторого текста в другом приложении можно вставить его в использование энергии "*p и если Вы скопировали некоторый текст (использующий, скажем, Ctrl-C) затем, можно вставить его в использование энергии "+p.

66
27.01.2020, 19:30
  • 1
    @Tshepang это не работает от шпаклевки. что я должен сделать? –  Rahul Patil 10.04.2013, 05:54
  • 2
    @RahulPatil ответа я знаю нет; возможно, задайте отдельный вопрос, возможно, на Суперпользователе (так как это - инструмент Windows, это более приветствовалось бы там). –  tshepang 10.04.2013, 08:19
  • 3
    @RahulPatil - при использовании шпаклевки затем, Вы редактируете файл на удаленном сервере, не на Вашей локальной машине. Обычно удаленный сервер не будет знать о буфере обмена на Вашей локальной машине. При использовании рабочего стола Linux затем, Вы можете ssh с X передачами (если Вы установили эти X библиотек по серверу), но поскольку шпаклевка работает на окнах, у Вас нет X выполнений, таким образом, Вы не можете передать его. –  Hamish Downer 10.04.2013, 14:32
  • 4
    Привет все, Как ввести "+y? я должен ввести его в режиме Visual или в командном режиме? Глупая вещь, но я не могу понять это. –  Alind Billore 15.06.2016, 15:38
  • 5
    @AlindBillore: В командном режиме. Буквально, нажмите клавиши shift' затем shift= затем y (не внезапно, один за другим, кроме сдвигов, конечно). –  Reid 30.03.2017, 21:39

Если Вы используете энергию> =7.3.74, то можно на самом деле поместить это в vimrc:

set clipboard=unnamedplus

Который будет автоматически использовать + буфер (системный буфер обмена) по умолчанию. Затем для дергания (копируют), Вы просто используете постоянного клиента y команда, и т.д.

Я нашел, что это поведение было довольно раздражающим, тем не менее, как команды как d поместите текст, на который они воздействуют в буфер по умолчанию, который означал, что я не мог сделать быстрого dd и вставьте строку из Интернета, например.

33
27.01.2020, 19:30
  • 1
    + является буфером обмена regiser –  Kit Ho 08.08.2013, 11:23
  • 2
    Относительно Вашей последней точки, dd означает, "сокращает одну строку", так, чтобы было бы ожидаемое поведение. В редком случае, когда Вы хотите на самом деле удалить строку в забвение, "_dd добьется цели. –  user7089 24.04.2014, 03:38
  • 3
    также как @HamishDowner отмечает в его ответе: следующее будет работать только если vim --version указывает, что Вы имеете +xterm_clipboard функция. В противном случае необходимо будет установить дополнительные пакеты или перекомпилировать энергию с той добавленной опцией. –  rudolph9 30.03.2017, 18:51

Удержите клавишу Shift и выберите текст с курсором мыши.
Текст будет скопирован в буфер обмена.

Это также работает на вставку от буфера обмена в к энергии.

Чтобы быть ясным, это работает на vim выполнение в терминале такой как xterm.

26
27.01.2020, 19:30
  • 1
    Вы имеете в виду удержание клавиши Shift при выборе текста? Это - способ, с которым я делаю это xterm. –  nozimica 03.05.2011, 22:27
  • 2
    @nozimica: Да. –  Loop Space 03.05.2011, 23:37
  • 3
    , Этот ответ должен иметь больше upvotes... –  whoan 22.10.2017, 05:20
  • 4
    @LoopSpace для многострочных выборов это также скопирует номера строки также когда set nu включен. Таким образом, u, вероятно, хотел бы переключить номера строки с некоторым ярлыком или работать :set nonu команда перед каждым выбором –  Steven Pribilinskiy 24.01.2018, 16:34

Я нахожу стандарт "+gP и "+y управляет очень трудный использовать. Таким образом, я повторно отобразился Ctrl-Y для того, чтобы дергать в буфер обмена и Ctrl-P вставлять от буфера обмена. Добавьте это к .vimrc

nnoremap <C-y> "+y
vnoremap <C-y> "+y
nnoremap <C-p> "+gP
vnoremap <C-p> "+gP
10
27.01.2020, 19:30

Неважно я нашел ответ - он записан в меню энергии.

"+y

Очень интуитивный.

6
27.01.2020, 19:30
  • 1
    Вы использование gvim? –  nozimica 03.05.2011, 19:14
  • 2
    @nozimica-да –  ripper234 03.05.2011, 20:09
  • 3
    Это также доступно в энергии, работающей в xterm или подобном эмуляторе терминала под X (если энергия компилируется с +xterm_clipboard функция). –  Gilles 'SO- stop being evil' 04.05.2011, 00:02

Только добавить ответ non-vim-specific: можно использовать Ctrl+Shift+C скопировать в системный буфер обмена в Ubuntu (если функциональность обеспечивается Вашим эмулятором терминала, терминалом гнома для, каждый обеспечивает его). Ctrl+Shift+V вставки к другому окну терминала, регулярному Ctrl+V вставки к приложению для GUI.

Кроме того, при выборе текста в терминале затем щелкните средней кнопкой, он будет вставляться от буфера обмена X11.

3
27.01.2020, 19:30
  • 1
    По некоторым причинам это не работает. Просто выбор с помощью визуального режима, копия с ctrl-shift-C, затем вставляет в другом приложении с помощью Ctrl-shift-V? Текст не становится скопированным для меня. –  ripper234 04.05.2011, 02:14
  • 2
    @ripper234: это не работает при использовании gvim. Как crazy2be сказал, эта функциональность от Вашего эмулятора терминала. –  Reid 04.05.2011, 02:20
  • 3
    @ripper234: 1) Это - функциональность, обеспеченная Вашим эмулятором терминала (терминал гнома для, каждый обеспечивает его), 2) Ctrl+Shift+V должен вставить к терминалу, приложения для GUI все еще используют Ctrl+V как обычно. Я отредактирую ответ для создания этого более ясным. –  crazy2be 04.05.2011, 05:41
  • 4
    , если Вы используете shift-control mousedrag - избранный текст, вставка копии от, каждый буферизует окно, становится легким. –  Stephan 03.11.2011, 12:33

Только для добавления, если что-нибудь работает попытка переключить терминал, который переносит энергию (если Вы используете энергию от терминала). Я нашел, что, например, буфер обмена недоступен землетрясением, в то время как доступно от терминала гнома.

0
27.01.2020, 19:30

По умолчанию при установке облегченной версии энергии затем Вы не будете иметь +xterm_clipboard функция на (vim --version | grep xterm), который необходим для использования * и + регистры за пределами энергии.

Для включения его необходимо или скомпилировать энергию сами или установить версию энергии, которая идет с ним, предварительно включил. Я использовал гнома энергии: sudo apt-get install vim-gnome. Если Вы выполняете vim --version | grep xterm, Вы будете видеть, что это теперь +xterm_clipboard.

Теперь, попытайтесь копировать в + и * и это должно работать.

2
27.01.2020, 19:30

Удерживайте нажатой клавишу SHIFT и выделите текст с помощью мыши скопировать это.

Затем вставьте другую программу с помощью CTRL + v .

Работает в терминале на моем Ubuntu 16.04. Не уверен насчет gvim и других систем.

enter image description here

2
27.01.2020, 19:30

Cuando comprobé que mi vim no era compatible con el portapapeles:

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Instalé vim -gnome y luego revisé nuevamente

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Ahora puedo copiar y pegar usando "+y" y "+p" respectivamente.

8
27.01.2020, 19:30

Для Ubuntu 14.04 и выше:

  • Просто выберите текст, который вы хотите скопировать. Затем щелкните мышью по центральной кнопке прокрутки и перейдите в буфер обмена

  • .
  • И сделайте то же самое (щелкните мышью по центральной кнопке прокрутки ).

Работает на 100% как в vim, так и в tailна Ubuntu.

0
06.02.2020, 09:23

Теги

Похожие вопросы