mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-11 21:03:05 +08:00
981 lines
40 KiB
Plaintext
981 lines
40 KiB
Plaintext
=======================================================================
|
|
= =
|
|
= =
|
|
= Notepad3 - light-weight Scintilla-based text editor for Windows =
|
|
= =
|
|
= (c) Rizonesoft 2008-2025 =
|
|
= https://rizonesoft.com =
|
|
= =
|
|
= forked from Notepad2-mod =
|
|
= maintained by XhmikosR =
|
|
= https://xhmikosr.github.io/notepad2-mod =
|
|
= based on: =
|
|
= Notepad2 4.2.25 =
|
|
= (c) Florian Balmer 2004-2011 =
|
|
= https://www.flos-freeware.ch =
|
|
= =
|
|
= =
|
|
=======================================================================
|
|
|
|
Notepad3 is based on code from Florian Balmer's Notepad2 and
|
|
XhmikosR's Notepad2-mod. MiniPath is based on code from
|
|
Florian Balmer's metapath.
|
|
|
|
Changes in Notepad3 compared to original Notepad2
|
|
|
|
+ Notepad3:
|
|
- Restore selection on undo/redo operations
|
|
- Text file encryption/decryption support
|
|
- Improved RegExp search n' replace engine (multiline support)
|
|
- Syntax highlighting support for MATLAB
|
|
- New program icon and other small cosmetic changes
|
|
- New toolbar icons based on Yusuke Kamiyaman's Fugue Icons
|
|
Purchased by Rizonesoft
|
|
- Countinuously updated Scintilla component
|
|
- Other various minor changes and tweaks
|
|
. Accelerated word navigation
|
|
. Scitilla's Direct Write support
|
|
. improved encoding and codepage handling
|
|
. Insert GUID
|
|
|
|
+ Notepad2-mod:
|
|
- Code folding
|
|
- Support for bookmarks
|
|
- Option to mark all occurrences of a word
|
|
- Updated Scintilla component
|
|
- Word auto-completion
|
|
- Syntax highlighting support for AutoHotkey, AutoIt3, AviSynth,
|
|
Bash, CMake, CoffeeScript, Inno Setup, LaTeX, Lua, Markdown, NSIS,
|
|
Ruby, Tcl, YAML and VHDL scripts
|
|
- Improved support for NFO ANSI art
|
|
- Support for replacing Windows Notepad using a clean, unintrusive
|
|
registry-based method
|
|
|
|
|
|
Changes in MiniPath compared to metapath
|
|
|
|
- Project upgraded to Visual C++ 2017
|
|
- 64-bit version
|
|
- New toolbar icons based on Yusuke Kamiyaman's Fugue Icons
|
|
Purchased by Rizonesoft
|
|
- Installation bundled with Notepad3
|
|
- Minor cosmetic changes
|
|
|
|
Supported Operating Systems
|
|
|
|
Windows 7, 8, 8.1, 10 both 32-bit and 64-bit
|
|
|
|
Contributors:
|
|
|
|
- Florian Balmer https://www.flos-freeware.ch
|
|
- XhmikosR https://xhmikosr.github.io/notepad2-mod
|
|
- Kai Liu https://code.kliu.org/misc/notepad2
|
|
- RL Vision https://www.rlvision.com/notepad2/about.php
|
|
- Aleksandar Lekov
|
|
- Bruno Barbieri
|
|
- RaiKoHoff https://github.com/RaiKoHoff
|
|
|
|
|
|
More information:
|
|
* Binaries: https://rizonesoft.com/downloads/notepad3
|
|
* Source code: https://github.com/rizonesoft/Notepad3
|
|
* https://github.com/XhmikosR/notepad2-mod
|
|
* Official Notepad2 website: https://www.flos-freeware.ch/notepad2.html
|
|
* Code folding usage guide: https://github.com/XhmikosR/notepad2-mod/wiki/Code-Folding-Usage
|
|
* Kai Liu's website: https://code.kliu.org/misc/notepad2
|
|
* Bookmark Edition website: https://www.rlvision.com/notepad2/about.asp
|
|
|
|
|
|
Changed keyboard shortcuts compared to Notepad2:
|
|
|
|
Ctrl+C (no selection) Copy current line.
|
|
Ctrl+X (no selection) Cut current line.
|
|
Ctrl+Shift+. Copy GUID to Clipboard.
|
|
Ctrl+0 Reset zoom.
|
|
Ctrl+NK_* Toggle transparency
|
|
|
|
F2 Go to next bookmark.
|
|
Shift+F2 Go to privious bookmark.
|
|
Ctrl+F2 Set/Reset bookmark.
|
|
Alt+F2 Clear all.
|
|
|
|
Ctrl+Alt+F Toggle all folds.
|
|
|
|
Ctrl+Alt+F2 Expand selection to next match.
|
|
Ctrl+Alt+Shift+F2 Expand selection to previous match.
|
|
Ctrl+Shift+Enter New line with toggled auto indent option.
|
|
|
|
|
|
Changed command Line Switches compared to Notepad2:
|
|
|
|
/v Print specified document and leave
|
|
/vd Print specified document, but open Print dialog before
|
|
|
|
|
|
=======================================================================
|
|
How to reset the Notepad3 notification messages?
|
|
=======================================================================
|
|
|
|
To bring back the notification messages suppressed with the
|
|
"Don't display this message again" option, load the ini-file (Ctrl+F7)
|
|
and delete all the values from the [Suppressed Messages] section.
|
|
|
|
To block the "Don't display this message again" option for an
|
|
individual notification, set the value of the corresponding ini-option to -1.
|
|
For example, MsgNotFound=-1 ensures the "Text not found" notification message
|
|
will always be displayed (non suppressable by check-box).
|
|
|
|
|
|
=======================================================================
|
|
What about the [Settings2] section of the .ini-file?
|
|
=======================================================================
|
|
|
|
You may have noticed that the Notepad3 ini-file has a configuration section
|
|
named [Settings2]. This section offers some advanced Notepad3 program settings,
|
|
and can only be edited manually. Press Ctrl+F7 to open the Notepad3 ini-file.
|
|
Most changes only take effect upon restarting Notepad3.
|
|
|
|
New (Notepad3) in [Settings2]
|
|
|
|
SciDirectWriteTech= -1,0,1,2,3 - Scintilla's Direct Write Technology
|
|
SciFontQuality= 0,1,2,3 - default,none,standard,cleartype
|
|
(if not defined by 'smoothing:xxx' in Style Schema)
|
|
SciDirectWriteTech
|
|
SciFontQuality
|
|
Specifies Scintilla's internal rendering technology and font quality.
|
|
SciDirectWriteTech (default is 1):
|
|
0: SC_TECHNOLOGY_DEFAULT
|
|
1: SC_TECHNOLOGY_DIRECTWRITE
|
|
2: SC_TECHNOLOGY_DIRECTWRITERETAIN
|
|
3: SC_TECHNOLOGY_DIRECTWRITEDC
|
|
SciFontQuality (default is 3):
|
|
0: SC_EFF_QUALITY_DEFAULT
|
|
1: SC_EFF_QUALITY_NON_ANTIALIASED
|
|
2: SC_EFF_QUALITY_ANTIALIASED
|
|
3: SC_EFF_QUALITY_LCD_OPTIMIZED
|
|
|
|
MarkOccurrencesMaxCount
|
|
The maximum number of counts for marking occurences, if this option is active.
|
|
The default is 2000.
|
|
|
|
UseOldStyleBraceMatching
|
|
Switch back to (not recommended) old style brace matching.
|
|
The default is 0.
|
|
|
|
|
|
Notepad2 already existing settings:
|
|
-----------------------------------
|
|
|
|
StickyWindowPosition
|
|
ReuseWindow
|
|
SingleFileInstance
|
|
These items are managed by Notepad3.
|
|
|
|
MultiFileArg
|
|
Control if Notepad3 should allow multiple files on the command line (set to 1).
|
|
The default behaviour is to accept only a single file, without quoted spaces,
|
|
like Windows Notepad (set to 0).
|
|
The command line switches + and - can be used to override this setting on the fly,
|
|
and the /z switch has the same effect as the - switch.
|
|
|
|
OffsetNewWindows
|
|
Determines whether positions of new windows (opened though Alt+N or Alt+0)
|
|
should be offset relative to the active Notepad3 window (1).
|
|
The new default setting for Notepad3 5.0 is to use the same window position
|
|
as the currently active Notepad3 window (0).
|
|
|
|
RelativeFileMRU
|
|
Set to 0 to disable recent files on the same drive or network share as Notepad3.exe
|
|
being saved with relative pathnames. The default is 1 (enabled).
|
|
|
|
PortableMyDocs
|
|
If set to 1, recent files and other path settings referring to the
|
|
My Documents directory tree are stored relative to My Documents.
|
|
This enhances USB stick portability between Windows XP and more recent versions of Windows,
|
|
which are using different locations for My Documents.
|
|
This setting has no effect if Notepad3.exe itself is located inside
|
|
My Documents (or a subdirectory thereof).
|
|
The default is 1 (enabled) if RelativeFileMRU is enabled, and 0 (disabled) otherwise.
|
|
|
|
DefaultExtension
|
|
Specify the default extension for saved files (omit the leading dot, just like txt or html).
|
|
The default extension is 'txt',
|
|
and a value of (none) needs to specified if no default extension is preferred.
|
|
To save a file without extension (regardless of the default extension setting),
|
|
put the filename in double quotes.
|
|
|
|
DefaultDirectory
|
|
Specify the default directory for the open and save dialogs, used if no file is opened.
|
|
Pathnames can be relative to the Notepad3 program directory.
|
|
|
|
FileDlgFilters
|
|
Specify filters for the open and save dialogs
|
|
(Example: Text Files|*.txt;*.wtx;*.log;*.asc;*.doc;*.diz;*.nfo|All Files|*.*).
|
|
|
|
FileCheckInterval
|
|
The interval (in milliseconds) to check for external modification
|
|
of the currently opened file. Defaults to 2000 ms.
|
|
|
|
AutoReloadTimeout
|
|
The timeout (in milliseconds) to wait before automatically reloading modified files.
|
|
The default value of 2000 ms usually prevents read/write conflicts.
|
|
|
|
FileLoadWarningMB
|
|
The size limit, in megabytes, to display a warning message for large files.
|
|
A value of 0 disables the warning.
|
|
|
|
OpacityLevel
|
|
Opacity level (in %) of the Notepad3 window in transparent mode.
|
|
|
|
NoFadeHidden
|
|
Set to 1 to disable fading of hidden objects in file lists (such as Favorites, etc.).
|
|
|
|
ToolbarLook
|
|
Determines the look of disabled toolbar buttons. 0 means system default
|
|
(dark-grey and somewhat grainy on Windows Vista and Windows 7; not available on Windows 2000),
|
|
1 means colored and faded (the default from Notepad3 4.2.25 on Windows XP and above),
|
|
and 2 means Windows XP-style light-grey (the default from Notepad3 4.2.25 on Windows 2000;
|
|
looks better than the system default on Windows Vista and Windows 7).
|
|
|
|
SimpleIndentGuides
|
|
Set to 1 to prevent indentation guides from jumping across empty lines.
|
|
|
|
NoHTMLGuess
|
|
Set to 1 to disable simple HTML/XML detection for files without extensions.
|
|
|
|
NoCGIGuess
|
|
Set to 1 to disable simple language detection for cgi and fcgi files.
|
|
|
|
NoFileVariables
|
|
Set to 1 to disable file variable parsing. Encoding tag parsing can be disabled
|
|
in the File, Encoding, Default dialog box.
|
|
|
|
filebrowser.exe
|
|
Specify the path of an external program that is launched
|
|
when pressing the Browse toolbar button. Defaults to metapath.exe,
|
|
which is my file browser plugin (found in the Project Archive).
|
|
You can specify additional command line switches,
|
|
and the file currently opened in Notepad3 will be appended
|
|
as the last command line parameter.
|
|
To have the current file selected in Windows Explorer
|
|
when pressing the browse toolbar button, set this entry to "explorer.exe /e,/select,%1".
|
|
Note: Due to special treatment of quotes by the Win32 ini-file APIs,
|
|
pathnames with spaces need to be quadruple-quoted (""path to/file.exe""),
|
|
but only double-quoted if there's additional command line arguments ("path to/file.exe" /arg).
|
|
|
|
DateTimeShort
|
|
DateTimeLong
|
|
Specify the short/long date and time formats.
|
|
This is the format parameter passed to the strftime() function.
|
|
Note that the locale will be set to English
|
|
(because of the English Visual C++ Runtime Library used by Notepad3).
|
|
|
|
TimeStamp
|
|
Regular expression used to update timestamps.
|
|
|
|
WebTemplate1
|
|
WebTemplate2
|
|
Undocumented. Dangerous. ☺
|
|
|
|
ShellAppUserModelID
|
|
ShellUseSystemMRU
|
|
Control system MRU, taskbar and jump list behaviour.
|
|
See Replacing Windows Notepad for detailed explanations.
|
|
|
|
|
|
=======================================================================
|
|
= =
|
|
= =
|
|
= Notepad3's Encryption / Decryption feature =
|
|
= =
|
|
= Prototype enduser documentation =
|
|
= taken from NotepadCrypt (Dave Dyer) =
|
|
= =
|
|
= https://www.andromeda.com/people/ddyer/notepad/NotepadCrypt.html =
|
|
= =
|
|
= =
|
|
=======================================================================
|
|
|
|
NotepadCrypt is a simple text editor which can optionally encrypt the
|
|
text files it edits. NotepadCrypt was designed to fill a requirement to
|
|
encrypt configuration files which had to be edited by humans but read by
|
|
programs, without the hazard that would obviously exist if editing
|
|
required the human editor to make a temporary unencrypted file. I needed
|
|
an editor which could read and write an encrypted file, for which the
|
|
encrypted format was documented and assessable to C and Perl programs.
|
|
To my surprise, none existed.
|
|
|
|
NotepadCrypt was constructed using open source software, including a low
|
|
level implementation of AES encryption and Sha256 hashing; and Notepad2
|
|
a really nice open source replacement for Notepad. None of this software
|
|
had to be changed in any substantial way, but the file format and key
|
|
management had to be designed and implemented to stitch it all together.
|
|
The requirement that a program be able to read the encrypted file led to
|
|
a design which included a master key, which I think is extremely useful
|
|
to anyone using NotepadCrypt to encrypt their own confidential files.
|
|
|
|
Source code:
|
|
|
|
Sha256 hashing implementation (used to convert passphrases to encryption
|
|
keys) based on an implementation by Christoper Devine. This file is
|
|
available from many sources on the web. AES encryption, for which there
|
|
are many open source implementations. Notepad2 editor, which also
|
|
requires the Scintilla editing widget. NotepadCrypt version 4.2.25 Full
|
|
Sources: This zip includes the as-modified source code for all of the
|
|
above, VC.net projects for NotepadCrypt and a simple command line tool
|
|
which uses the same file format. There are a couple of "extras" - a test
|
|
program that uses tcsh and a java program that can read NotepadCrypt's
|
|
file format. Unless you are a programmer, you're probably better off
|
|
getting the binary only distribution for NotepadCrypt and Notepad3CL
|
|
|
|
Technical Details For NotepadCrypt
|
|
|
|
Overall Design: Sha256 hash is used to convert an ascii pass phrase to a
|
|
256 bit encryption key. Pseudorandom data is used as an initialization
|
|
vector for AES-256 encryption. Optionally, a the encryption key (NOT the
|
|
passphrase) is encrypted using a second master key, and included in the
|
|
file header. This master key can be used as an emergency data recovery
|
|
key, or as a second key to be used by programs to read encrypted files.
|
|
|
|
Overall File Format:
|
|
Consists of a preamble, the encrypted data, and some padding at the end.
|
|
|
|
Encrypted files start with an 8 byte preamble, the first 4 bytes are a
|
|
"magic number" to identify the file type (currently 0x04030201) and a 4
|
|
byte sub-file type, (currently either 0x00000001 or 0x00000002 if the
|
|
file has a master key).
|
|
|
|
The next 16 bytes of the preamble are the initialization vector for the
|
|
AES engine, to be used with the file key. Each file gets a unique 16
|
|
bytes of pseudo random noise.
|
|
|
|
Next, for master keyed files, is a 16 byte IV for the master key,
|
|
followed by a 32 byte block containing the file key, encrypted with the
|
|
master key, using the master key IV and CBC block chaining.
|
|
|
|
Next, is the actual file data, encrypted using the file key and the IV,
|
|
and CBC block chaining.
|
|
|
|
Finally, are 1-16 bytes of padding to round out the last AES block. Note
|
|
that there are never 0 bytes of padding.
|
|
|
|
Passphrase Management: 256 bit encryption keys are generated from the
|
|
ascii passphrase by passing the passphrase through a SHA256 hash. The
|
|
passphrase itself is never stored anywhere except in the dynamic memory
|
|
of the encrypting program.
|
|
|
|
Key management over file generations: If the file is opened using a file
|
|
passphrase, the passphrase is retained and used as the default for the
|
|
passphrase dialog. If the file is opened using a master passphrase, the
|
|
recovered file key is used as the default encryption for new files. This
|
|
allows an editor who does not know the file passphrase to propogate a
|
|
file key he could not create. If the file contains a master key, and
|
|
neither the file or master passphrase is changed, then the retained,
|
|
master-encrypted file key is copied into the next file generation (It is
|
|
still valid). This allows an editor who knows only the file passphrase
|
|
to propogate a master key he could not create.
|
|
|
|
=======================================================================
|
|
= =
|
|
= Notepad3 encryption - prototype enduser documentation =
|
|
= =
|
|
=======================================================================
|
|
|
|
If you open a file which was encrypted by this program, you'll be
|
|
prompted to supply a passphrase. This passphrase becomes
|
|
the default to be used when saving files. The passphrase is not the
|
|
actual encryption key, but is used to generate a 256 bit
|
|
encryption key called the file key.
|
|
|
|
Master Keys
|
|
|
|
An Encrypted file can optionally contain a copy of its own file key,
|
|
encrypted with a master key, derived from a master
|
|
passphrase. This allows anyone who knows the master passphrase to decode
|
|
any file encrypted with any file key which uses this
|
|
master key structure. As long as the file passphrase is not changed, the
|
|
master key can be propogated to new versions of the
|
|
file without typing the master phrase again.
|
|
|
|
|
|
Why use a master key?
|
|
|
|
#1) Data recovery. It is not generally a good idea to use the same
|
|
passphrase for all files, or to continue using the same passphrase
|
|
forever. The principle hazard is that if even one key is revealed, every
|
|
encrypted file you have ever created can also be read. Consequently,
|
|
different keys should be used for different files, and over time, those
|
|
keys should change. Since the keys change, they are subject to being
|
|
lost or forgotton, resulting in lost data - it's still there, but no one
|
|
can decode it. If you use a master key, and you have misplaced the file
|
|
key, you can still recover your data. Since master key is not routinely
|
|
used to decrypt the file, and never needs to be shared with anyone, is
|
|
is much less likely to be compromised, so it is reasonable for a good
|
|
master key to be used for a very long time in a lot of different files.
|
|
|
|
Recommendation: Use a master passphrase that will be very hard for
|
|
anyone to guess and very hard for you to forget. For example:
|
|
"My Favorite movie is Gone with the Wind"
|
|
"When it rains in New York, even Chicago is a better place to be"
|
|
Never tell anyone what it is or write it down. It's an EMERGENCY measure
|
|
to prevent catastrophic data loss, so treat it that way. Never use it to
|
|
read or open any encrypted file except for testing, or if you have
|
|
really lost the file passphrase.
|
|
|
|
#2) Trapdoor access. Sometimes it is desirable to allow a second party
|
|
to decode the file without knowing the encryption passphrase - a good
|
|
example is where an automated program is intended to read an encrypted
|
|
file that is prepared by a human. The program has to have the passphrase
|
|
or the key embedded in it somewhere. It's possible for a dedicated
|
|
attacker to find it, but it's much more likely that the source of
|
|
compromise will be clumsy humans. Allowing the program to use the master
|
|
key and humans to use the ordinary file keys will allow the routine-use
|
|
keys to be changed as often as necesary, while still letting the program
|
|
read the files without being told the new key.
|
|
|
|
|
|
Technical Details:
|
|
(https://www.real-me.net/ddyer/notepad/NotepadCrypt-technotes.html)
|
|
|
|
Passphrase Management:
|
|
256 bit encryption keys are geneated from ascii passphrases by
|
|
passing the passphrase through a SHA256 hash. Passphrases are never
|
|
Stored anywhere except in the dynamic memory of the encrypting program.
|
|
|
|
Key management over file generations: If the file is opened
|
|
using a file passphrase, the passphrase is retained and used
|
|
as the default for the passphrase dialog.
|
|
|
|
If the file is opened using a master passphrase, the recovered
|
|
file key is used as the default encryption for new files. This
|
|
allows an editor who does not know the file passphrase to propogate
|
|
a file key he could not create.
|
|
|
|
If the file contains a master key, and neither the file or master
|
|
passphrase is changed, then the retained, master-encrypted file
|
|
key is copied into the next file generation. (It is still valid).
|
|
This allows an editor who knows only the file passphrase to propogate
|
|
a master key he could not create.
|
|
|
|
Encrypted files start with an 8 byte preable, the first 4 bytes are
|
|
a "magic number" to identify the file type (currently 0x04030201)
|
|
and a 4 byte subfile type, (currently either 0x00000001 or 0x00000002)
|
|
|
|
The next 16 bytes are the initialization vector for the AES engine,
|
|
to be used with the file key. Each file gets a unique 16 bytes of
|
|
pseudorandom noise.
|
|
|
|
Next, for master keyed files, is a 16 byte IV for the master key,
|
|
followed by a 32 byte block containing the file key, encrypted
|
|
with the master key, using the master key IV and CBC block chaining.
|
|
|
|
Next, is the actual file data, encrypted using the file key and the IV,
|
|
and CBC block chaining.
|
|
|
|
Finally, are 1-16 bytes of padding to round out the AES block.
|
|
Note that there are never 0 bytes of padding.
|
|
|
|
|
|
A Word about pass phrases and overall security.
|
|
|
|
While this encryption scheme uses high quality AES encryption and quite
|
|
long 256 bit keys, that is almost irrelevant to the overall security of
|
|
the system. It's like having a very expensive lock on your front door.
|
|
Thieves won't go to great lengths to pick your lock; they will simply
|
|
break a window instead. The weak link in this encryption scheme is YOU
|
|
and your selection of pass phrases. If your encrypted files are
|
|
compromised, the most likely, by far, method is the simplest; (1) they
|
|
ask, you tell. or (2) they find the scrap of paper where you wrote the
|
|
passphrase or (3) some key logger watches you type the passphrase. The
|
|
only other likely method is a dictionary-type attack using a program to
|
|
try lots of possible passphrases. Any short, word-like passphrase CAN be
|
|
compromised using a few days of computer time.
|
|
|
|
Finally, consider the suitablility of this encryption scheme for your
|
|
purpose.
|
|
|
|
If your goal is to prevent your wife from reading your girlfriend's
|
|
phone number in your address book: definitely.
|
|
|
|
If your goal is to prevent disclosure of sensitive data if your laptop
|
|
is stolen: most likely.
|
|
|
|
If your goal is to prevent fishing by the IRS, should they ever become
|
|
curious about you: don't count on it.
|
|
They'll throw you in jail until you tell them the password, or install
|
|
a key logger and wait for you to tell them voluntarily.
|
|
|
|
If your goal is to keep secrets people who are definitely out to get
|
|
you, and are willing to shove bamboo splints under you fingernails
|
|
until you talk: don't even think about it.
|
|
|
|
|
|
|
|
=======================================================================
|
|
= =
|
|
= =
|
|
= Notepad2 - light-weight Scintilla-based text editor for Windows =
|
|
= =
|
|
= =
|
|
= Notepad2 4.2.25 =
|
|
= (c) Florian Balmer 2004-2011 =
|
|
= https://www.flos-freeware.ch =
|
|
= =
|
|
= =
|
|
=======================================================================
|
|
|
|
|
|
Description
|
|
|
|
Notepad2 is a light-weight, free and open source Notepad-like text
|
|
editor with syntax highlighting for a few commonly used languages.
|
|
It's based on the Scintilla source code editing component and works
|
|
on NT-based versions of Windows.
|
|
|
|
|
|
Features
|
|
|
|
- Syntax highlighting: HTML, XML, PHP, ASP (JS, VBS), CSS,
|
|
JavaScript, VBScript, C/C++, C#, Resource Script, Makefiles, Java,
|
|
Visual Basic, Pascal, Assembly, SQL, Perl, Python, Configuration
|
|
Files, Apache Config Files, PowerShell, Batch Files, Diff Files
|
|
- Drag & drop text editing inside and outside Notepad2
|
|
- Basic regular expression search and replace
|
|
- Useful word, line and block editing shortcuts
|
|
- Rectangular selection (Alt+Mouse)
|
|
- Brace matching, auto indent, long line marker, zoom functions
|
|
- Support for Unicode, UTF-8, Unix and Mac text files
|
|
- Open shell links
|
|
- Mostly adjustable
|
|
|
|
Installation and Uninstallation
|
|
|
|
Just put a copy of Notepad2.exe and Notepad2.ini to any directory on
|
|
your computer. To uninstall Notepad2, simply delete these two files.
|
|
Notepad2 does not create any registry entries on your computer.
|
|
|
|
The Notepad2 Source Code
|
|
|
|
This package contains the full source code of Notepad2 4.2.25 for
|
|
Windows. Project files for Visual C++ 7.0 are included. Chances are
|
|
that Notepad2 can be rebuilt with other development tools, including
|
|
the free Visual C++ Express Edition, but I haven't tested this.
|
|
|
|
|
|
Rebuilding from the Source Code
|
|
|
|
Notepad2 4.2.25 is based on Scintilla 2.24 [1].
|
|
|
|
[1] https://www.scintilla.org
|
|
|
|
To be able to rebuild Notepad2, the source code of the Scintilla
|
|
editing component has to be unzipped to the "scintilla" subdirectory
|
|
of the Notepad2 source code directory.
|
|
|
|
Many of the Scintilla lexing modules are not used by Notepad2. Run
|
|
LinkLex.js to adapt the list (in "scintilla/src/Catalogue.cxx") and
|
|
make linking work properly.
|
|
|
|
|
|
Creating a Compact Executable Program File
|
|
|
|
Linking to the system CRT slightly improves disk footprint, memory
|
|
usage and startup because the pages for the system CRT are already
|
|
loaded and shared in memory. To achieve this, the release version of
|
|
Notepad2.exe is built using the Windows Driver Kit (WDK) 7.1.0 tools,
|
|
available as a free download from Microsoft. The appropriate build
|
|
scripts can be found in the "wdkbuild" subdirectory. Set %WDKBASEDIR%
|
|
to the directory of the WDK tools on your system.
|
|
|
|
|
|
How to add or modify Syntax Schemes
|
|
|
|
The Scintilla documentation has an overview of syntax highlighting,
|
|
and how to write your own lexing module, in case the language you
|
|
would like to add is not currently supported by Scintilla.
|
|
|
|
Add your own lexer data structs to the global pLexArray (Styles.c),
|
|
then adjust NUMLEXERS (Styles.h) to the new total number of syntax
|
|
schemes. Include the "scintilla/lexers/Lex*.cxx" file required for
|
|
your language into your project. Ensure the new module is initialized
|
|
(in "scintilla/src/Catalogue.cxx"), either by manually uncommenting
|
|
the corresponding LINK_LEXER() macro call, or by updating and
|
|
re-running LinkLex.js.
|
|
|
|
|
|
Keyboard Shortcuts for Notepad2
|
|
|
|
File
|
|
|
|
Ctrl+N New file.
|
|
Ctrl+F4 Close file, identical with Ctrl+N.
|
|
Ctrl+O Open file.
|
|
F5 Reload file.
|
|
F8 Recode file.
|
|
Ctrl+Shift+F Recode file as default encoding.
|
|
Ctrl+Shift+A Recode file as system default ANSI.
|
|
Ctrl+Shift+O Recode file as system default OEM.
|
|
Shift+F8 Recode 7-bit ASCII file as UTF-8.
|
|
Alt+F8 Reload file without file variable parsing.
|
|
Ctrl+S Save file.
|
|
F6 Save file as.
|
|
Ctrl+F6 Save file copy.
|
|
Ctrl+P Print file.
|
|
Alt+H Open recent file.
|
|
|
|
Tools
|
|
|
|
Alt+N Open document in new window.
|
|
Alt+0 Open new empty window.
|
|
Ctrl+M Run metapath file browser plugin.
|
|
Ctrl+L Launch document.
|
|
Alt+L Open with.
|
|
Ctrl+R Run command.
|
|
|
|
Favorites
|
|
|
|
Alt+I Open favorites.
|
|
Alt+K Add to favorites.
|
|
Alt+F9 Manage favorites.
|
|
|
|
Edit
|
|
|
|
Ctrl+Z Undo.
|
|
Ctrl+Shift+Z Redo.
|
|
Alt+Backspace Undo.
|
|
Ctrl+Y Redo.
|
|
Ctrl+Shift+Y Undo.
|
|
Ctrl+X Cut.
|
|
Shift+Del Cut.
|
|
Ctrl+C Copy.
|
|
Alt+C Copy all.
|
|
Ctrl+E Copy add.
|
|
Ctrl+V Paste.
|
|
Shift+Ins Paste.
|
|
Ctrl+K Swap.
|
|
Del Clear.
|
|
Ctrl+A Select all.
|
|
Alt+Shift+Arrows Rectangular selection.
|
|
Ctrl+Enter New line with toggled auto indent option.
|
|
Ctrl+PgUp/PgDn Goto previous/next block.
|
|
Ctrl+Shift+PgUp/PgDn Select to previous/next block.
|
|
|
|
Char, Word
|
|
|
|
Ctrl+Space Select word (or line).
|
|
Ctrl+Backspace Delete word before/left.
|
|
Ctrl+Del Delete word after/right.
|
|
Ctrl+Tab Insert tabulator.
|
|
|
|
Lines
|
|
|
|
Ctrl+Shift+Space Select line.
|
|
Ctrl+Shift+Up Move line (block) up.
|
|
Ctrl+Shift+Down Move line (block) down.
|
|
Ctrl+D Duplicate line.
|
|
Ctrl+Shift+X Cut line.
|
|
Ctrl+Shift+C Copy line.
|
|
Ctrl+Shift+D Delete line.
|
|
Ctrl+Shift+Backspace Delete line left.
|
|
Ctrl+Shift+Del Delete line right.
|
|
Ctrl+Shift+W Column wrap.
|
|
Ctrl+I Split lines.
|
|
Ctrl+J Join lines.
|
|
Ctrl+Shift+J Join paragraphs.
|
|
|
|
Block
|
|
|
|
Tab Indent selected block.
|
|
Shift+Tab Unindent selected block.
|
|
Alt+Q Enclose selection.
|
|
Alt+D Duplicate selection.
|
|
Alt+B Pad with spaces.
|
|
Alt+Z Strip first character.
|
|
Alt+U Strip last character.
|
|
Alt+W Strip trailing blanks.
|
|
Alt+P Compress whitespace.
|
|
Alt+Y Merge blank lines.
|
|
Alt+R Remove blank lines.
|
|
Alt+M Modify lines.
|
|
Alt+J Align lines.
|
|
Alt+O Sort lines.
|
|
|
|
Convert
|
|
|
|
Ctrl+Shift+U Make uppercase.
|
|
Ctrl+U Make lowercase.
|
|
Ctrl+Alt+U Invert case.
|
|
Ctrl+Alt+I Title case.
|
|
Ctrl+Alt+O Sentence case.
|
|
Ctrl+Shift+S Convert tabs to spaces.
|
|
Ctrl+Shift+T Convert spaces to tabs.
|
|
Ctrl+Alt+S Convert indenting tabs to spaces.
|
|
Ctrl+Alt+T Convert indenting spaces to tabs.
|
|
|
|
Insert
|
|
|
|
Alt+X HTML/XML tag.
|
|
Ctrl+F8 Encoding identifier.
|
|
Ctrl+F5 Time/date (short form).
|
|
Ctrl+Shift+F5 Time/date (long form).
|
|
Ctrl+F9 Filename.
|
|
Ctrl+Shift+F9 Path and filename.
|
|
|
|
Special
|
|
|
|
Ctrl+Q Block comment (toggle).
|
|
Ctrl+Shift+Q Stream comment.
|
|
Ctrl+Shift+E URL Encode.
|
|
Ctrl+Shift+R URL Decode.
|
|
Ctrl+Alt+E Escape C Special Chars.
|
|
Ctrl+Alt+R Unescape C Special Chars.
|
|
Ctrl+Alt+X Convert character to hex code.
|
|
Ctrl+Alt+C Convert hex code to character.
|
|
Ctrl+B Find matching brace.
|
|
Ctrl+Shift+B Select to matching brace.
|
|
F2 Expand selection to next match.
|
|
Shift+F2 Expand selection to previous match.
|
|
Ctrl+1 Enclose within ''.
|
|
Ctrl+2 Enclose within "".
|
|
Ctrl+3 Enclose within ().
|
|
Ctrl+4 Enclose within [].
|
|
Ctrl+5 Enclose within {}.
|
|
Ctrl+6 Enclose within ``.
|
|
Shift+F5 Update timestamps.
|
|
Ctrl+Alt++ Increase number.
|
|
Ctrl+Alt+- Decrease number.
|
|
Ctrl+, Jump to selection start.
|
|
Ctrl+. Jump to selection end.
|
|
|
|
Find, Replace
|
|
|
|
Ctrl+F Find.
|
|
Alt+F3 Save find text.
|
|
F3 Find next.
|
|
Shift+F3 Find previous.
|
|
Ctrl+F3 Find next word or selection.
|
|
Ctrl+Shift+F3 Find previous word or selection.
|
|
Ctrl+H Replace.
|
|
F4 Replace next.
|
|
Ctrl+G Jump to line.
|
|
|
|
Syntax scheme, Font
|
|
|
|
F12 Select syntax scheme.
|
|
Shift+F12 Select 2nd default syntax scheme.
|
|
Ctrl+F12 Customize syntax schemes.
|
|
Alt+F12 Select default font.
|
|
F11 Select default text syntax scheme.
|
|
Ctrl+F11 Select web source code syntax scheme.
|
|
Shift+F11 Select XML document syntax scheme.
|
|
|
|
View
|
|
|
|
Ctrl+W Toggle word wrap.
|
|
Ctrl+Shift+L Show long line marker.
|
|
Ctrl+Shift+G Show indentation guides.
|
|
Ctrl+Shift+N Show line numbers.
|
|
Ctrl+Shift+M Show selection margin.
|
|
Ctrl+Shift+7 Show wrap symbols.
|
|
Ctrl+Shift+8 Show whitespace.
|
|
Ctrl+Shift+9 Show line endings.
|
|
Ctrl+Shift+V Toggle visual brace matching.
|
|
Ctrl+Shift+I Highlight current line.
|
|
|
|
Zoom
|
|
|
|
Ctrl++ Zoom in.
|
|
Ctrl+- Zoom out.
|
|
Ctrl+ Reset zoom.
|
|
|
|
Settings
|
|
|
|
Ctrl+T Tab settings.
|
|
Alt++ Increase limit for long lines.
|
|
Alt+- Decrease limit for long lines.
|
|
Ctrl+Shift+H Toggle auto close HTML/XML.
|
|
Alt+T Always on top.
|
|
Ctrl+0 Transparent mode.
|
|
Alt+F5 File change notification settings.
|
|
Ctrl+9 Display text excerpt in title.
|
|
F7 Save settings now.
|
|
Ctrl+F7 Jump to ini-file.
|
|
|
|
Misc.
|
|
|
|
Shift+F9 Copy pathname to clipboard.
|
|
Ctrl+Shift+K Copy window position to clipboard.
|
|
Ctrl+Shift+P Move window to default position.
|
|
Esc Optionally minimize or exit Notepad2.
|
|
Shift+Esc Save file and exit Notepad2.
|
|
F1 Display version info.
|
|
|
|
|
|
Regular Expression Syntax
|
|
|
|
Note: the Scintilla source code editing component supports only a
|
|
basic subset of regular expression syntax, and searches are limited
|
|
to single lines.
|
|
|
|
. Matches any character.
|
|
|
|
(...) This marks a region for tagging a match.
|
|
|
|
\n Where n is 1 through 9 refers to the first through ninth
|
|
tagged region when replacing. For example, if the search
|
|
string was Fred([1-9])XXX and the replace string was Sam\1YYY,
|
|
when applied to Fred2XXX this would generate Sam2YYY.
|
|
|
|
\< This matches the start of a word.
|
|
|
|
\> This matches the end of a word.
|
|
|
|
\x This allows you to use a character x that would otherwise
|
|
have a special meaning. For example, \[ would be interpreted
|
|
as [ and not as the start of a character set.
|
|
|
|
[...] This indicates a set of characters, for example, [abc] means
|
|
any of the characters a, b or c. You can also use ranges, for
|
|
example [a-z] for any lower case character.
|
|
|
|
[^...] The complement of the characters in the set. For example,
|
|
[^A-Za-z] means any character except an alphabetic character.
|
|
|
|
^ This matches the start of a line (unless used inside a set,
|
|
see above).
|
|
|
|
$ This matches the end of a line.
|
|
|
|
? This matches 0 or 1 times. For example, a?b matches ab and b.
|
|
|
|
* This matches 0 or more times. For example, Sa*m matches Sm,
|
|
Sam, Saam, Saaam and so on.
|
|
|
|
+ This matches 1 or more times. For example, Sa+m matches Sam,
|
|
Saam, Saaam and so on.
|
|
|
|
*? Causes * and + to behave non-greedy. For example, <.+> matches
|
|
+? all HTML tags on a line, whereas <.+?> matches only one tag.
|
|
|
|
\d Any decimal digit.
|
|
\D Any character that is not a decimal digit.
|
|
|
|
\s Any whitespace character.
|
|
\S Any character that is not a whitespace character.
|
|
|
|
\w Any "word" character.
|
|
\W Any "non-word" character.
|
|
|
|
\xHH Character with hex code HH.
|
|
|
|
-----> Examples (don't use quotes)
|
|
- Quote lines: find "^" replace with "> "
|
|
- Unquote lines: find "^> " replace with ""
|
|
- Remove line numbers: find "^[0-9]+" replace with ""
|
|
- Convert tabs to double spaces: find "\t" replace with " "
|
|
- Remove NULL bytes: find "\x00" replace with ""
|
|
|
|
|
|
Command Line Switches
|
|
|
|
Notepad2.exe [encoding] [line-ending-mode] [/e id] [/g ln[,col]]
|
|
[/m[-][r|b] text] [/l|/l0] [/q] [/s ext] [/d] [/h] [/x]
|
|
[/c] [/b] [/n|/ns] [/r|/rs]
|
|
[/p x,y,cx,cy[,max]|/p0|/ps|/p[f|l|t|r|b|m]]
|
|
[/t title] [/i] [/o|/o0] [/f ini|/f0] [/u] [/z ...] [/?]
|
|
[+|-] [file] ...
|
|
|
|
file File to open, can be a relative pathname, or a shell link.
|
|
Must be the last argument, no quoted spaces by default.
|
|
+ Accept multiple file arguments (with quoted spaces).
|
|
- Accept single file argument (without quoted spaces).
|
|
... Desired file encoding (can be one of /ansi, /unicode,
|
|
/unicodebe, /utf8 or /utf8sig).
|
|
... Desired line ending mode (either /crlf, /lf, or /cr).
|
|
/e Specify file source encoding.
|
|
/g Jump to specified position, /g -1 means end of file.
|
|
/m Match specified text (/m- last, /mr regex, /mb backslash).
|
|
/l Auto-reload modified files; /l0 disable change notification.
|
|
/q Force creation of new files without prompt.
|
|
/s Select syntax scheme associated with specified extension.
|
|
/d Select default text scheme.
|
|
/h Select Web Source Code scheme.
|
|
/x Select XML Document scheme.
|
|
/c Open a new Notepad2 window and paste the clipboard contents.
|
|
/b Open a new Notepad2 paste board to collect clipboard entries.
|
|
/n Always open a new Notepad2 window (/ns single file instance).
|
|
/r Reuse Notepad2 window (/rs single file instance).
|
|
/p Set window position to x,y with size cx,cy, optional max set
|
|
to nonzero to zoom; /p0 system, /ps internal defaults;
|
|
/p(f)ull,(l)eft,(t)op,(r)ight,(b)ottom,(m)argin.
|
|
/t Set window title.
|
|
/i Start as tray icon.
|
|
/o Keep window on top; /o0 do not keep window on top.
|
|
/f Specify ini-file; /f0 use no ini-file (don't save settings).
|
|
/u Launch with elevated privileges.
|
|
/v Print specified document to default printer and quit.
|
|
/z Skip next (usable for registry-based Notepad replacement).
|
|
/? Display a brief summary about command line parameters.
|
|
|
|
|
|
|
|
Source Code
|
|
|
|
Notepad2 is based on the Scintilla source code editing component:
|
|
https://www.scintilla.org
|
|
|
|
The full Notepad2 source code can be found at:
|
|
https://www.flos-freeware.ch
|
|
|
|
|
|
More Information and Resources
|
|
|
|
For more information on Notepad2 features, how to replace Windows
|
|
Notepad, and answers to the most frequently asked questions (FAQ),
|
|
please visit the Notepad2 website:
|
|
https://www.flos-freeware.ch
|
|
|
|
|
|
Feature Requests
|
|
|
|
Thank you very much for the overwhelming feedback about Notepad2!
|
|
Feature requests are always welcome, but please keep in mind that
|
|
Notepad2 has been designed as a compact Notepad replacement.
|
|
|
|
|
|
Credits and Special Thanks
|
|
|
|
Here I would like to say "THANK YOU" to the developers of the great
|
|
Scintilla source code editing component [1], which is the core of
|
|
Notepad2. Without Scintilla, the rich features found in Notepad2
|
|
wouldn't have been possible!
|
|
|
|
[1] https://www.scintilla.org
|
|
|
|
Many thanks to everybody for sending me bug reports and useful hints.
|
|
A special thank goes to Roland Weigelt [2] for his helpful thoughts
|
|
and comments about Notepad2 features and usability in early develop-
|
|
ment stages. I'd also like to express my thanks to Timo Kunze [3],
|
|
Kai Liu [4], Moritz Kroll, Seunghun Thomas Lee [5] and Shawn
|
|
Brenneman for sending detailed bug reports and ready-to-use patches.
|
|
|
|
[2] https://www.roland-weigelt.de
|
|
[3] https://www.TimoSoft-Software.de
|
|
[4] https://code.kliu.org/misc/notepad2
|
|
[5] mailto:stlee42@gmail.com
|
|
|
|
|
|
Copyright
|
|
|
|
Notepad2 is FREE SOFTWARE and may be used and distributed freely.
|
|
Please do not charge any distribution or download fees for this
|
|
program, except for the cost of the distribution medium. The use of
|
|
this software is AT YOUR OWN RISK. See License.txt for full details.
|
|
|
|
If you have comments or questions, please drop me a note:
|
|
florian.balmer@gmail.com
|
|
|
|
(c) Florian Balmer 2004-2011
|
|
|
|
###
|