Автоматический перенос строки
-
Уважаемые друзья! Возможно ли реализовать автоматический перенос на начало строки после вставки& Например, вставил какой-либо текст или ссылку и курсор автоматом встаёт в начало следующей строки, без нажатия Enter
Благодарю, с уважением
-
Dear friends! Is it possible to implement automatic wrapping to the beginning of a line after insertion & For example, I inserted some text or a link and the cursor automatically goes to the beginning of the next line, without pressing Enter
Thank you respectfullyExactly as you describe? Probably not. “Inserted some text” is a nebulous concept, and could be done via typing or pasting or other means. How would Notepad++ be expected to know when your “insert” is done, so that it can automatically put in a line break.
It would be possible to define a macro that would paste the contents of the clipboard, then automatically type the newline sequence (CRLF) for you.
- Close all active Notepad++ and open one instance
- Open the file
%AppData%\Notepad++\shortcuts.xml
- in the
<Macros>
section, add the following lines:
<Macro name="PasteEnter" Ctrl="no" Alt="no" Shift="no" Key="0"> <Action type="0" message="2179" wParam="0" lParam="0" sParam="" /><!-- paste --> <Action type="1" message="2170" wParam="0" lParam="0" sParam="
" /><!-- type CRLF --> </Macro>
- save, exit Notepad++, and reload
- Now Macro > PasteEnter will paste the current clipboard and type a newline for you.
- If you want to assign that to a keyboard shortcut, you can use Macro > Modify Shortcut/Delete Macro…, select the
PasteEnter
row, and change the shortcut for it. From then on, using that keyboard shortcut instead of the normal paste (Ctrl+V
) will do what you want.
If you don’t just want it on Paste, but anytime you are typing text, using Settings > Preferences > Editing and setting the Vertical Edge Settings will allow you turn it on so Notepad++ will wrap after 80 characters (or whatever you set it to).
Other than those, I’m not sure how else to accomplish what you want.
I will use Google Translate to translate my reply from English to Russian, but I have no idea as to the quality of that translation. The standard language of this forum is English.
----
Точно, как вы описываете? Возможно нет. «Вставленный текст» является туманным понятием, и его можно выполнить с помощью набора текста, вставки или других средств. Как Notepad ++ должен знать, когда ваша «вставка» завершена, чтобы он мог автоматически вставлять разрыв строки.Можно было бы определить макрос, который вставит содержимое буфера обмена, а затем автоматически наберет последовательность новой строки (CRLF).
- Закройте все активные Notepad ++ и откройте один экземпляр
- Откройте файл
% AppData% \ Notepad ++ \ shortcuts.xml
- в разделе «<Macros>» добавьте строки из раздела «английский»:
- сохранить, выйти из Notepad ++ и перезагрузить
- Теперь ** Macro> PasteEnter ** вставит текущий буфер обмена и наберет новую строку для вас.
- Если вы хотите назначить это сочетанию клавиш, вы можете использовать ** Macro> Изменить ярлык / Удалить макрос … **, выбрать строку
PasteEnter
и изменить для нее ярлык. С тех пор использование этого сочетания клавиш вместо обычной вставки (Ctrl + V
) будет делать то, что вы хотите.
Если вы хотите не просто вставить его, а в любое время набирать текст, [используя ** Настройки> Настройки> Редактирование **] (https://npp-user-manual.org/docs/preferences/#editing) а установка ** Vertical Edge Settings ** позволит вам включить его, чтобы Notepad ++ переносился после 80 символов (или любого другого значения).
Кроме тех, я не уверен, как еще выполнить то, что вы хотите.
Я буду использовать Переводчик Google, чтобы перевести мой ответ с английского на русский, но я не имею представления о качестве этого перевода. Стандартный язык этого форума - английский.
-
Спасибо за ответ! Нужно именно после вставки из буфера обмена, то есть - вставил из буфера и Notepad перенёс курсор на новую строку. Длина текста в буфере обмена может быть любой
-
@Vio-Ru said,
Thanks for the answer! It is necessary after pasting from the clipboard, that is, pasted from the clipboard and Notepad moved the cursor to a new line. The length of the text on the clipboard can be any
If you want the newline after pasting from the clipboard, then the macro I showed should work for you.
@PeterJones said,
[original phrasing by @Vio-Ru]: вставил какой-либо текст
[English version]: “Inserted some text”
[Translated to Russian]: «Вставленный текст»
[Translated back to English]: “Pasted text”Looking at the translation of my translation, apparently “pasted text” and “inserted some text” are closer in Russian than they are in English.
I was misinterpreting the auto-English translation of “вставил какой-либо текст”, which was shown to me as “inserted some text”, as “inserted [by typing] some text”, rather than the “inserted [by pasting from the clipboard] some text” that was apparently meant. Sorry for the lingual confusion.
-
Thank you for answer! But your macros is not working ))
Here are the screenshots, what I need -
-
@Vio-Ru said in Автоматический перенос строки:
But your macros is not working ))
Apparently there was confusion (probably a language thing, still), because with the screenshots you showed, you are not using the macro. The macro doesn’t change the normal paste behavior – whether you use Edit > Paste, RightClick > Paste, or Ctrl+V. The macro is a separate command – in the Macro menu – which does both a paste and an enter.
I will use pictures, in case my words don’t translate well for you.
You have to use the macro to get the paste-then-enter behavior.
If you want a keyboard shortcut, like maybe
Ctrl+Shift+V
, to be used for this paste+enter, you can use Macros > Modify Shortcut / Delete Macro
Then (1) selectPasteEnter
, (2) Modify, (3) select keys – I checked Ctrl and Shift, and selected the V, forCtrl+Shift+V
as the keyboard shortcut, (4) OK, (5) CLOSE.
After this,Ctrl+Shift+V
(or whatever key sequence you choose) will run Macro > PasteEnter.But without running the PasteEnter macro, you cannot expect the new behavior.
I hope this makes it clear.
-
Yes, it works like that. But I need it without additional taps, such as Macros or hot keys. I need to configure it once and then so that at each insert from the buffer the cursor jumps to the next line without using additional clicks.
As I understand it, this behavior is impossible to implement.
In any case, thank you for your time. -
@Vio-Ru ,
But I need it without additional taps, such as Macros or hot keys. I need to configure it once and then so that at each insert from the buffer the cursor jumps to the next line without using additional clicks.
There are no additional clicks. There are different clicks. Instead of using Ctrl+V for paste, use whatever shortcut you assign to that macro. It’s really simple, and the same number of keystrokes.
In fact, if you always want paste to be paste+enter, you can use shortcut mapper to remove Ctrl+V from normal Paste, and instead assign Ctrl+V to the PasetEnter macro
Also, if you usually use RightClick > Paste to access the paste function from the context menu, you can also edit the context menu config to give you the option of RightClick > PasteEnter instead, an put it right next to the paste:
- Use Settings > Edit Popup ContextMenu
- Add
<Item MenuEntryName="Macro" MenuItemName="PasteEnter"/>
immediately after the<Item MenuEntryName="Edit" MenuItemName="Paste"/>
line - save, exit, and reload Notepad++
- Now your RightClick menu will show PasteEnter right after Paste. You can use RClick > PasteEnter anytime you would have used RClick > Paste, with exactly the same amount of effort from now on.
So, to sum up:
- if you assign a keyboard shortcut to PasteEnter macro, you can use that anytime you would have used Ctrl+V, with exactly the same number of clicks as a normal Ctrl+V.
- if you assign the Ctrl+V keyboard shortcut to PasteEnter macro, you can use that every time you paste with Ctrl+V, because it will be using that macro instead of the normal just-paste functionality
- if you add the PasteEnter macro to the right click context menu, you can use that entry in the right click context menu exactly as easily as you can use the normal paste from the right click menu.
There are many ways to make the Paste+Enter functionality identically-easy to use as the builtin paste functionality. I have shown three right here – including one that replaces Ctrl+V functionality with the new Paste+Enter with the same keystroke. There is no difference in difficulty of long-term use between using PasteEnter macro and using normal Paste – it can be done in the same number of keystrokes (1) or in the same right-click context menu; it’s exactly the same difficulty to use.
-
Thanks a lot, Peter! Everything turned out as I wanted :)
-
@Vio-Ru Добрый день. Мне нужно тоже самое. Я выполнил все действия описанные выше, но в меню Макросов не появился нужный , хотя он прописан в файле, но программа его не видит (( У вас были подобные проблемы?
-
@PeterJones Hello! I follow your instruction literaly … Step by step. But I can’t see PasteEnter in Macros menu! I try in 2 computers, but nothing… Please, help! !
![0_1615624589383_Screenshot_1.png](Uploading 100%)
![0_1615624617723_Screenshot_2.png](Uploading 100%) -
@Gena-M said in Автоматический перенос строки:
0_1615624589383_Screenshot_1.png
Sorry, your screenshots did not embed properly, so I cannot see what you showed.
The procedure I described reliably works for me. So maybe you did something wrong or you missed a step.
Please respond to the following questions/requests to help us help you:
- Please share those screenshots again – make sure they show up in the “preview” window in the forum – that will help us understand what you have and what you don’t have
- Please go to the ? menu and Debug Info entry, and copy/paste that information into your reply. This will tell us what version you are using and what directories we should expect files to be in
- Did you create the macro as described in the 6 steps in my first message? Please show us a screenshot of the Macro menu to show that PasteEnter macro was created and saved
- Did you correctly edit the Context Menu (including restarting Notepad++)?
Hopefully, we can help you figure out which step went wrong.
-
In new versions this method does not work, because the developers changed the code in Shortcuts, could you help me set up line wrapping when inserting in a new version of Notepad?
-
@Vio-Ru said in Автоматический перенос строки:
In new versions this method does not work, because the developers changed the code in Shortcuts,
There’s an entire FAQ entry that explains exactly what you need to change to make a macro recorded in an old version to work with v8.5.3. and newer. Follow those instructions, and it will work for you.
-
It didn’t work out for me, that’s why I’m asking for help. I think it’s about, but, what to replace it with, I do not know
-
@Vio-Ru said in Автоматический перенос строки:
It didn’t work out for me, that’s why I’m asking for help.
You didn’t actually read and understand the FAQ, or follow its instructions, did you?
I think it’s about, but, what to replace it with, I do not know
That’s because you didn’t read the FAQ.
Yep. The FAQ explains how to fix that underlined section that you showed from
shortcuts.xml
:So if you have
shortcuts.xml
file, then restart Notepad++. After that, it will work. -
It just replaces these values & #x0D; & #x0A; Shouldn’t it be the same?
-
@Vio-Ru said in Автоматический перенос строки:
It just replaces these values & #x0D; & #x0A;
Yes, that’s what the instructions are supposed to do.
Shouldn’t it be the same?
The same as what? That makes no sense.
But since I cannot seem to teach you how to do this, I will spoon-feed you the answer.
Your macro in
shortcuts.xml
used to be<Macro name="PasteEnter" Ctrl="no" Alt="no" Shift="no" Key="0"> <Action type="0" message="2179" wParam="0" lParam="0" sParam="" /><!-- paste --> <Action type="1" message="2170" wParam="0" lParam="0" sParam="
" /><!-- type CRLF --> </Macro>
Now that same section in
shortcuts.xml
needs to be<Macro name="PasteEnter" Ctrl="no" Alt="no" Shift="no" Key="0"> <Action type="0" message="2179" wParam="0" lParam="0" sParam="" /><!-- paste --> <Action type="1" message="2170" wParam="0" lParam="0" sParam="
" /><!-- type CRLF --> </Macro>
Then save, exit Notepad++, and reload. Now your Macro > PasteEnter will work again.
----
edit: fixed the forum’s corruption of my intended post -
@PeterJones said in Автоматический перенос строки:
Your macro in
shortcuts.xml
used to be […]Now that same section in
shortcuts.xml
needs to be […]I cut, pasted, and compared your two code snippets twice, and can find no difference between them other than the second one ends with four backquotes instead of three.