BBEdit is one of the best known text editing applications for the Mac. It's essentially a premium version of TextWrangler; it shares many of the same features, but offers some additional upgrades for a fee. Both applications are published by Bare Bones.
Like TextWrangler, BBEdit is versatile enough to support novice coders and experienced programmers, and it's a great application to have installed - just in case. With multiple clipboards, multiple undos and configurable shortcuts, BBEdit yields impressive results and aids very efficient coding.
Compared to TextWrangler, BBEdit is better for producing standards-compliant code, since it can validate HTML 4.01 through version 5, and XTHTML 1.0 and 1.1. It also adds a convenient Scratchpad for note taking, making it easy to jot down snippets of code, and also offers user defined clippings.
Other benefits include:
- Built in support for Subversion and Perforce.
- Integration with Apple Automator.
- Batch processing of text transformations across multiple files.
- Support for Exuberant Ctags for source code navigation.
- A very reasonable price tag of $49.95.
If you already use TextWrangler, BBEdit is a logical upgrade with a number of additional bonus features that make it well worth your cash.
Added support for the following extension to the x-bbedit: URL scheme. The new-document verb will create a new text document with the text provided in the URL.
You may choose to include optional "language" and "name" parameters:
the "language" parameter lets you specify the (computer) language of the document. You can use this for syntax coloring. For example:
You can count on all of the factory languages being available; you could also use something like "swift" or "rust" or "clojure" and if it's not available, nothing bad happens.
the "name" parameter sets the initial name of the document:
Note that if you do provide a "name" but not a "language", BBEdit will try to figure out what language to use based on the name.
the contents of the "text" parameter will be the contents of the new document . BBEdit will not attempt to interpret it, although it will convert line endings to its internal form.
URL-unsafe characters in all parameters must be percent-encoded.
Made a change to remove the feature in which holding a modifier key (such as Shift or Option) down while choosing an item from the Scripts or Filters or Clippings menu would perform alternative operations (such as Reveal in Finder or Edit).
Although this was occasionally convenient, it was magical and thus not easily discovered; and in the New World Order it tended to misfire while using keyboard equivalents for those items. You can still perform the same operations using the appropriate palette, via the toolbar buttons. (Right-click in the toolbar and use "Customize Toolbar" as desired).
The "Edit..." button in the toolbar for folder-backed palettes (Scripts, Filters, Clippings) has received an ellipsisectomy.
Updated the wording of the title bar violator (which appears unless you have entered a valid license code) so that it's clearer that you can keep using BBEdit after the evaluation period is over. The violator now specifies "Free Mode" instead of "Evaluation Ended".
Fixed a latent bug in the list of search sources used in the Multi-File Search window.
Restored "Quick Look" in disk browsers and project windows to working order.
In cases where a progress window needs to be interrupted for a modal alert (usually when connecting via sftp), switch off window animations and delay the return of the progress bar for a smoother experience.
Fixed a bug in which file locators provided by external "open file" requests were not "standardized", which could lead to situations in which locators which indicated the same item via different paths were not treated as equivalent; and fixed the case in the bbedit tool which triggered the initial report.
Made a change so that certain irrelevant errors returned when running an AppleScriptObjC script are no longer reported.
Fixed crash which would occur when trying to store information about a recently used item in situations where the item had been deleted.
Fixed a thread-safety issue which could cause a crash during multi-file search in situations where it was necessary to parse an HTML or XML file to guess its character set.
Fixed bug in which the Objective-C guesser was a little bit too liberal, and would be tricked by @classmethod in Python text.
Fixed various bugs in the "Compare Revisions" and "Compare Arbitrary Revisions" dialogs, including a crash which would occur when an item in a revision list was double-clicked, which would in turn attempt a comparison even when no other revision was selected.
Fixed a case in which the Objective-C[++] function scanner would run off the end of the text in certain rare situations.
Fixed case in which the function menu item in the navigation bar was allowed to be arbitrarily large, which would cause it to push items on the left-hand side (such as Text Options and the file path) out of view.
Fixed crash which would occur when using "Reveal in Project List" and the operation required automatically twisting open a folder ancestor of the file being revealed.
Fixed bug in which a project document closed with a hidden sidebar would reopen with the sidebar visible.
While entering a path in the Find Differences window for a file or directory that does not exist, trailing slashes would occasionally need to be typed twice. Once should now suffice.
Fixed a bug in which tracking a close widget in the sidebar would leave the widget in a "hover" state in the case that the mouse was dragged and released outside of the bounds of the sidebar.
Fixed incorrect description of the expert preference keys for adjusting the limits on Open Recent. (The keys begin with NSRecentDocumentsLimit_, using an underscore, rather than NSRecentDocumentsLimit: with a colon).
Fixed bug in which calculations done during line-ending conversion ended up with incorrect answers in files with inconsistent line breaks.
Fixed bug in which object-class-specific attachment scripts (e.g. Document.scpt) were not being run when they should have.
Fixed a case in which the application would crash when cancelling an SFTP connection in progress.
Fixed a bug in which the SFTP password prompt would appear again if you clicked the "Cancel" button. (Up to three times total).
Made changes to prevent a class of crashes that would occur on macOS 10.12 in cases where a password request or host key confirmation was canceled while connecting to an SFTP server.
Fixed a crash which would occur when a saved set of multi-file search items contained a reference to itself, or when two (or more) saved sets created a reference loop.
Fixed bug in which "Select All" was enabled on the Edit menu in situations where it shouldn't have been, and using it (or pressing Cmd-A) would trigger an internal exception.
Fixed a few memory leaks.
Fixed a bug in which more work than necessary was being done while building the item tree for folders in projects (insta- or otherwise).
Fixed bug in which instaprojects would not open up with the correct sidebar width, which was particularly noticeable when the width had been customized via "Save Default Project Window".
Fixed a bug in which Hard Wrap would leave the last line of a paragraph unbroken in cases where it was longer than the wrap width.
Made a change to reduce the CPU required during mouse tracking (such as when making text selections).
Updated some built-in links to our web site to use https.
Fixed bug in which applying a text factory from the "Apply Text Filter" submenu did nothing (which was the best outcome, given what could have happened).
Fixed bug in which in-process input using some input sources was highlighted using the yellow highlight when the text should have been underlined.
When text should be highlighted using the yellow highlight, the background color is now used when a dark color scheme is in effect, to correct readability problems.
To improve performance, the “Open File by Name” window will not explore node_modules directories that it encounters while computing its data sources. If you want Open File by Name results to include files in node_modules directories:
defaults write com.barebones.bbedit OpenByNameSkipNodeModules -bool NO.
Fixed bug in which certain sequences of scripted open document/close document operations would behave inconsistently when there was too little time elapsed between the open and close (or between a close and subsequent open).
Fixed a bug in which aliases (or symlinks) to folders were not sorted by name with other folders when "sort folders first" is in effect.
Made a change to improve compatibility with future macOS releases.