I used to use UltraEdit for many years. They moved to a subscription model, which I am fine with, IF I am using the software and if the features they are developing align with my use of it. UltraEdit is very focussed on the developers which I am not. I found that it was not really worth the sixty dollars a year price tag. I had used Sublime Text in the past but didn’t give it too much effort. Then, I figured I would give it a chance….. and here I am now, 100% on the Sublime Text bandwagon.
Here is my Cheat Sheet for Sublime Text
Searching and Replacing
⌘ + F – Find
⌘ + G – Find Next
⌘ + ⇧ + G – Find Previous
⌘ + I – Incremental Find
⌘ + ⌥ + F – Replace
⌘ + ⌥ + E – Replace Next
⌘ + ⌥ + G – Quick Find (Selects the word under the cursor)
⌘ + ^ + G – Quick Find ALL occurrences of selected word
⌘ + E – Use Selected to Find
⌘ + ⇧ + E – Use Selected to Replace
⌘ + ⇧ + F – Find in all open files
Searching and Replacing
F6 – Toggle Spell Check on/off
^ + F6 – Next Misspelled Work
^ + ⇧ + F6 – Previous Misspelled Work
⌘ + B – Build
^ + ␣ – Show Completions
⌘ + K + U – Convert to CAPS
⌘ + K + L – Convert to Lower Case
Bookmarking
F2 – New Bookmark
⇧ + F2 – Previous Bookmark
⌘ + F2 – Switch Bookmark
⌘ + ⇧ + F2 – Clear Bookmarks
Line Manipulation
⌘ + ↩ – Insert Lines After
⌘ + ⇧ + ↩ – Insert Line Before
⌘ + ^ + ↑ – Move line up
⌘ + ^ + ↓ – Move line down
⌘ + L – Select Entire Lines and move to next line
⌘ + ^ + G – Select ALL occurrences of the selected text
⌘ + ⇧ + ↑ – Select everything above the cursor
⌘ + ⇧ + ↓ – Select everything below the cursor
⌘ + X – Cut Line
⌘ + ⇧ + K – Delete Line
⇧ + ⌘ +J – Joining Lines, Select the files and hit keys
Deleting Blank Lines
⌘ + ⌥ + F
Make sure Regular Expression is enabled (.* button should be selected on bottom left)
In the Find: field enter ^\n
Then Replace or Replace ALL
Creating a snippet
~/Library/Application Support/Sublime Text/Packages/User/whatever-you-want then . then sublime-snippet
${1:NAME} and reference it elsewhere.<snippet>
<content><![CDATA[
edit ${1:NAME}
set subnet ${2:subnet with CIDR}
set interface ${3:any}
next
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>addo</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>text.plain</scope> -->
</snippet>
In my snippet, I am creating an address object for FortiGate firewalls by starting to type addo and then `⇥` (TAB). Once invoked, the entire section will appear.

Below there is a similar one for creating a VLAN
<snippet>
<content><![CDATA[
edit ${1:NAME}
set ip ${2:SUBNET}
set allowaccess ${3:ping https ssh}
set device-identification enable
set interface ${4:TRUNK}
set vlanid ${5:VLANID}
next
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>vlanint</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<!-- <scope>text.plain</scope> -->
</snippet>
vlanint followed by the TAB key.Collapsing FortiOS sections
Another nice thing with FortiOS configs if you are using the Junos Format Selector on the bottom right…

You can collapse and expand certain sections of the config you do not want to see…..

You can see the triangles on the left side highlighted in the blue box. You can see that the VLAN interfaces are collapsed with the AP-Mgmt is expanded.
Hope this helps