<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Feature Request: Snake-Case&#x2F;Camel-Case keyboard nav]]></title><description><![CDATA[<p dir="auto">Hello!</p>
<p dir="auto">I’d like to be able to navigate (Using the keyboard) in camel-case mode; ie:<br />
in<br />
<code>foo_bar_baz = GreatThing()</code><br />
I’d like an option to make hitting ctrl-arrows to stop around each of <code>foo</code>, <code>bar</code>, and <code>baz</code>, as if it was written as <code>foo bar baz</code>; And between <code>Great</code> and <code>Thing</code>, as if they were separate words.</p>
<p dir="auto">Is that a reasonable request?</p>
]]></description><link>https://community.notepad-plus-plus.org/topic/13363/feature-request-snake-case-camel-case-keyboard-nav</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 15:31:44 GMT</lastBuildDate><atom:link href="https://community.notepad-plus-plus.org/topic/13363.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 27 Feb 2017 11:57:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Feature Request: Snake-Case&#x2F;Camel-Case keyboard nav on Sat, 04 Mar 2017 20:38:03 GMT]]></title><description><![CDATA[<p dir="auto">Hi, <strong>Dail</strong>, <strong>Aviv</strong> and <strong>All</strong></p>
<p dir="auto">Ah, yes ! I didn’t think about these four <strong>Scintilla</strong> commands. For <strong>further</strong> information :</p>
<p dir="auto"><a href="http://www.scintilla.org/ScintillaDoc.html#Words" rel="nofollow ugc">http://www.scintilla.org/ScintillaDoc.html#Words</a></p>
<p dir="auto">But there are some <strong>differences</strong> between the <strong>two</strong> methods :</p>
<ul>
<li>
<p dir="auto">My regex puts the <strong>caret</strong> AFTER the <strong>underscore</strong> character, whereas these commands place it BEFORE</p>
</li>
<li>
<p dir="auto">The <strong>Scintilla</strong> <strong>SCI_WORDPART*</strong> commands put the <strong>caret</strong> at <strong>many more</strong> locations than my regex ! Indeed, it stops at each <strong>beginning</strong> and <strong>end</strong> of any range of <strong>word</strong> characters !</p>
</li>
</ul>
<p dir="auto">BEWARE : for people, who DON’T have an <strong>American</strong> standard keyboard, the <strong>default</strong> keys, associated with the <strong>CTRL</strong> key, may be <strong>completely</strong> different ! For instance, on my <strong>French</strong> keyboard, I must use :</p>
<ul>
<li>
<p dir="auto">The <strong>CTRL</strong> key and the <strong>/ :</strong> key, for <strong>forward</strong> location</p>
</li>
<li>
<p dir="auto">The <strong>CTRL</strong> key and the <strong>µ *</strong> key, for <strong>backward</strong> location</p>
</li>
</ul>
<p dir="auto">So, you’ll have to <strong>experiment</strong> some shortcuts, before finding the <strong>right</strong> one !. Of course, you may use the <strong>Shortcut Mapper</strong> to change these <strong>default</strong> shortcuts :-)</p>
<hr />
<p dir="auto">On the other hand, <strong>Aviv</strong>, may be, you’ll prefer this <strong>second</strong> regex, below :</p>
<p dir="auto"><strong><code>(?-is)(?&lt;=\l)(?=\u)|(?&lt;=\W|_)(?=\w)|(?&lt;=.)(?=\R)</code></strong></p>
<p dir="auto">Compared to my <strong>previous</strong> regex, it would put the <strong>caret</strong>, either :</p>
<ul>
<li>
<p dir="auto">Between any <strong>lower-case</strong> letter AND any <strong>upper-case</strong> letter</p>
</li>
<li>
<p dir="auto">Between ( any <strong>NON-word</strong> character OR an <strong>underscore</strong> ) AND any <strong>word</strong> character</p>
</li>
<li>
<p dir="auto">Between the <strong>last standard</strong> character, of a line and its <strong>End of line</strong> characters</p>
</li>
</ul>
<p dir="auto">Just try it, for instance, with the text below :</p>
<pre><code>http://www.scintilla.org/ScintillaDoc.html#SCI_WORDPARTLEFT
</code></pre>
<p dir="auto">Then, if necessary, each word, located at <strong>right</strong> of the <strong>caret</strong>, can be <strong>selected</strong> with the <strong>CTRL + SHIFT + RIGHT</strong> shortcut</p>
<p dir="auto">Best Regards,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/22304</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/22304</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Sat, 04 Mar 2017 20:38:03 GMT</pubDate></item><item><title><![CDATA[Reply to Feature Request: Snake-Case&#x2F;Camel-Case keyboard nav on Sat, 04 Mar 2017 14:35:49 GMT]]></title><description><![CDATA[<p dir="auto">This kind of navigation is already implemented.</p>
<ul>
<li><code>Ctrl + /</code> moves left to the next word part</li>
<li><code>Ctrl + Shift + /</code> moves left and selects everything to the next word part</li>
<li><code>Ctrl + \</code> moves right to the next word part</li>
<li><code>Ctrl + Shift + \</code> moves right and selects everything to the next word part</li>
</ul>
<p dir="auto">You can change the key binding in the the shortcut mapper. Look under the “Scintilla Commands” tab and these are listed as:</p>
<ul>
<li>SCI_WORDPARTLEFT</li>
<li>SCI_WORDPARTLEFTEXTEND</li>
<li>SCI_WORDPARTRIGHT</li>
<li>SCI_WORDPARTRIGHTEXTEND</li>
</ul>
]]></description><link>https://community.notepad-plus-plus.org/post/22299</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/22299</guid><dc:creator><![CDATA[dail]]></dc:creator><pubDate>Sat, 04 Mar 2017 14:35:49 GMT</pubDate></item><item><title><![CDATA[Reply to Feature Request: Snake-Case&#x2F;Camel-Case keyboard nav on Sat, 04 Mar 2017 14:07:54 GMT]]></title><description><![CDATA[<p dir="auto">Hello, <strong>Aviv</strong>,</p>
<p dir="auto">I found out an “<strong>half</strong>”-solution, using a <strong>regular</strong> expression search, which places the <strong>caret</strong> at the <strong>appropriate</strong> locations !</p>
<p dir="auto">So :</p>
<ul>
<li>
<p dir="auto">Open the N++ <strong>Find</strong> dialog</p>
</li>
<li>
<p dir="auto">In the <strong>Find what:</strong> field, type in <strong><code>(?-is)(?&lt;=\l)(?=\u)|(?&lt;=\s|_)(?=\w)|(?&lt;=.)(?=\R)</code></strong></p>
</li>
<li>
<p dir="auto">Check the <strong>Wrap around</strong> option</p>
</li>
<li>
<p dir="auto">Select the <strong>Regular expression</strong> search mode</p>
</li>
<li>
<p dir="auto">Click <strong>ONCE</strong> on the <strong>Replace All</strong> button, in order to <strong>memorize</strong> this <strong>specific</strong> search</p>
</li>
<li>
<p dir="auto"><strong>Close</strong> the <strong>Find</strong> dialog or hit the <strong>Escape</strong> key</p>
</li>
<li>
<p dir="auto">Now, just use the <strong>F3</strong> / <strong>Shift + F3</strong> shortcuts, to go <strong>forward/backward</strong> to the wanted <strong>caret</strong> locations</p>
</li>
</ul>
<p dir="auto">=&gt; You are, now, able to <strong>add / remove</strong> any character, at these different <strong>locations</strong> !</p>
<p dir="auto"><strong>IMPORTANT</strong> :</p>
<ul>
<li>
<p dir="auto">This regex tries to <strong>emulate</strong>, BOTH :</p>
<ul>
<li>
<p dir="auto">Your needs : <strong>caret</strong>’s location after an <strong>Underscore</strong> ( LOW LINE character ) and between a <strong>lowercase</strong> letter and an <strong>uppercase</strong> letter</p>
</li>
<li>
<p dir="auto">The <strong>CTRL + Left</strong> and <strong>CTRL + Right</strong> actions</p>
</li>
</ul>
</li>
<li>
<p dir="auto">Unfortunately, it’s <strong>NOT</strong> a perfect emulation, especially when you perform the <strong>backward</strong> search ( with the <strong>Shift + F3</strong> shortcut ) Indeed :</p>
<ul>
<li>
<p dir="auto">During <strong>backward</strong> search, it sometimes <strong>skips</strong>, a word, located at <strong>beginning</strong> of line</p>
</li>
<li>
<p dir="auto">If the <strong>present</strong> location of a <strong>caret</strong> is at <strong>column 1</strong>, the <strong>backward</strong> search does <strong>NOT</strong> find a match and just <strong>stopped</strong> !</p>
</li>
</ul>
</li>
</ul>
<p dir="auto">So, if <strong>someone</strong> is able to find out a regex which can move the <strong>caret</strong> from <strong>position 1</strong>, of <strong>any</strong> line ( empty or not ) to the <strong>end</strong> of an upward <strong>non empty</strong> line, as the <strong>CTRL + Left</strong> shortcut does, I would be very <strong>glad</strong>, as I searched such a regex <strong>many hours</strong>, without any positive result :-(((</p>
<p dir="auto">Luckily, the classical <strong>forward</strong> search seems to work <strong>fine</strong> :-) So just test it to see if you’re <strong>globally</strong> satisfied with this <strong>work-around</strong> !</p>
<p dir="auto"><strong>NOTES</strong></p>
<ul>
<li>
<p dir="auto">You don’t need to check, either, the <strong>Match case</strong> and/or the <strong>. matches new line</strong> options. Indeed, the syntax <strong><code>(?-is)</code></strong>, at <strong>beginning</strong> of the regex, <strong>forces</strong> the regex engine to consider the regex search in a <strong>sensitive</strong> way and, also, that the <strong>dot</strong> special character matches a <strong>single standard</strong> character, only.</p>
</li>
<li>
<p dir="auto">Then the <strong>global</strong> regex is, simply, an <strong>alternative</strong> between <strong>three</strong> regexes, each of them set up by a couple : <strong>look-behind</strong> / <strong>look-ahead</strong> :</p>
<ul>
<li>
<p dir="auto">The <strong><code>(?&lt;=\l)(?=\u)</code></strong> regex, which looks for an <strong>empty</strong> string, located between an <strong>lowercase</strong> letter AND an <strong>uppercase</strong> letter</p>
</li>
<li>
<p dir="auto">The <strong><code>(?&lt;=\s|_)(?=\w)</code></strong> regex, which matches an  <strong>empty</strong> string, located between any type of <strong>“Space”</strong> character OR an <strong>Underscore</strong> character AND a <strong>word</strong> character ( <strong>letter</strong>, <strong>digit</strong> and <strong>underscore</strong> character )</p>
</li>
<li>
<p dir="auto">The <strong><code>(?&lt;=.)(?=\R)</code></strong> regex, which matches an <strong>empty</strong> string, located between the <strong>last standard</strong> character of a <strong>non-empty</strong> line AND any <strong>End of Line</strong> character. This final regex allows to go <strong>backwards</strong>, in a block of several <strong>non-empty</strong> lines ( with the restriction that it always <strong>skips</strong> any <strong>correct</strong> location, in <strong>column 1</strong>, during the different <strong>backward</strong> matches found ! )</p>
</li>
</ul>
</li>
</ul>
<p dir="auto">Again, this solution is not the <strong>ideal</strong> one, but just test if it <strong>improves</strong> your work, in any way !!</p>
<p dir="auto">Cheers,</p>
<p dir="auto">guy038</p>
]]></description><link>https://community.notepad-plus-plus.org/post/22298</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/22298</guid><dc:creator><![CDATA[guy038]]></dc:creator><pubDate>Sat, 04 Mar 2017 14:07:54 GMT</pubDate></item><item><title><![CDATA[Reply to Feature Request: Snake-Case&#x2F;Camel-Case keyboard nav on Tue, 28 Feb 2017 02:13:32 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="https://community.notepad-plus-plus.org/uid/7822">@Aviv-Eyal</a><br />
please add feature request <a href="https://github.com/notepad-plus-plus/notepad-plus-plus/issues" rel="nofollow ugc">here</a> and check if it hasn’t already added.</p>
<p dir="auto">Cheers<br />
Claudia</p>
]]></description><link>https://community.notepad-plus-plus.org/post/22206</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/22206</guid><dc:creator><![CDATA[Claudia Frank]]></dc:creator><pubDate>Tue, 28 Feb 2017 02:13:32 GMT</pubDate></item></channel></rss>