Почему иногда, когда я вставляю команду на своей подсказке удара, она выполняется, даже если я не нажимаю Enter?

  1. Для каждой из групп получите внутренний html и разделите его на новую строку
  2. Если он начинается с «----», замените его на увеличивающийся номер строки и добавьте [ 113] значение.
  3. Поместите HTML обратно в группу.

$('.grouping').each(function(index, grouping){
  var lines = grouping.innerHTML.trim().split("\n");
  var lineNumber = 0;
  var v = grouping.getAttribute('v');
  
  lines.forEach(function(line, index){
    if (line.startsWith('----')) {
      lines[index] = '('+ (++lineNumber) + v +') '+ line.slice(4);
    }
  });
  
  grouping.innerHTML = lines.join('\n');
});
.grouping { white-space: pre; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span class="grouping" v="a">
----My first step
----This is another
I should not have a line number.
----And another
</span>
<br/>
<span class="grouping" v="b">
I also should not have a line number.
----second group
----second group 2
</span>

8
задан Ciro Santilli 新疆改造中心法轮功六四事件 25 August 2015 в 07:56
поделиться

3 ответа

Потому что вы вставляете вместе с ним символ новой строки. Иногда это может быть полезно, например, вы можете скопировать / вставить сразу несколько команд (длинные многострочные скрипты).

Что ж, мне никогда не приходило в голову предотвратить это конкретное поведение. Это нормально и ожидаемо. WYPIWYG - что вы вставляете, то и получаете.

12
ответ дан 5 December 2019 в 06:54
поделиться

Вы вставляете один или несколько символов новой строки. Помимо простого отказа от копирования и вставки символов новой строки, есть несколько вещей, которые вы можете сделать, чтобы обойти это:

  • Для однострочных команд сначала введите «#», чтобы команда была закомментирована. Затем вы можете вернуться и отредактировать его.

  • Воспользуйтесь функцией bash (на первый взгляд малоизвестной) edit-and-execute-command . Чтобы вызвать его, вы можете нажать CTRL-x CTRL-e , если вы используете сочетания клавиш emacs (по умолчанию) или ESC v , если вы используете сочетания клавиш vi. Это вызовет текстовый редактор, содержащий вашу текущую командную строку. Затем вы можете вставить в редактор и отредактировать команду. После сохранения и выхода из команды будут выполнены сохраненные редактором команды (если вы хотите отменить, закомментировать все строки или полностью очистить буфер). Вы можете указать, какой редактор будет использоваться с переменными среды FCEDIT или EDITOR .

9
ответ дан 5 December 2019 в 06:54
поделиться

Быстрый способ предотвратить выполнение - это ввести символ комментария #, а затем вставить команду.

Я часто делаю это, потому что при копировании и захвате посторонних символов я нажимаю жирным пальцем.

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

--- ответ на комментарий

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

Глупый трюк с bash # 4 миллиона и одно:

приглашение: $ xclip -o -selection clipboard | sed --regexp-extended 's /^(.*)$/# \ 1; /'

превратит это:

for i в * .JPG;

do echo mv $ i $ {i /.JPG/.jpg};

done;

into this:

# for i in * .JPG;

# do echo mv $ i $ {i / .JPG / .jpg};

# готово;

3
ответ дан 5 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

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