$('.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>
Потому что вы вставляете вместе с ним символ новой строки. Иногда это может быть полезно, например, вы можете скопировать / вставить сразу несколько команд (длинные многострочные скрипты).
Что ж, мне никогда не приходило в голову предотвратить это конкретное поведение. Это нормально и ожидаемо. WYPIWYG - что вы вставляете, то и получаете.
Вы вставляете один или несколько символов новой строки. Помимо простого отказа от копирования и вставки символов новой строки, есть несколько вещей, которые вы можете сделать, чтобы обойти это:
Для однострочных команд сначала введите «#», чтобы команда была закомментирована. Затем вы можете вернуться и отредактировать его.
Воспользуйтесь функцией bash (на первый взгляд малоизвестной) edit-and-execute-command . Чтобы вызвать его, вы можете нажать CTRL-x
CTRL-e
, если вы используете сочетания клавиш emacs (по умолчанию) или ESC v
, если вы используете сочетания клавиш vi. Это вызовет текстовый редактор, содержащий вашу текущую командную строку. Затем вы можете вставить в редактор и отредактировать команду. После сохранения и выхода из команды будут выполнены сохраненные редактором команды (если вы хотите отменить, закомментировать все строки или полностью очистить буфер). Вы можете указать, какой редактор будет использоваться с переменными среды FCEDIT
или EDITOR
.
Быстрый способ предотвратить выполнение - это ввести символ комментария #, а затем вставить команду.
Я часто делаю это, потому что при копировании и захвате посторонних символов я нажимаю жирным пальцем.
Когда вы вставляете после символа комментария, тогда команда находится в буфере истории, и вы можете отредактировать ее, раскомментировать и запустить.
--- ответ на комментарий
Вы правы, это работает только для однострочных команд. Если у вас есть многострочный буфер обмена, вы можете передать данные буфера обмена через 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};
# готово;