BBEdit Additions and Changes Since Version 10.5

Since BBEdit 10.5.13 (the final version in the BBEdit 10 generation, and the previous Mac App Store version) was released in October of 2014, we've done a lot of work.

Here is a list of all of the new features and changes — nearly three hundred and fifty in all — we've made in BBEdit since then. These changes were compiled from the BBEdit release notes archive.

Important Notes About BBEdit 12.6 and Later

  • Beginning with version 12.6, BBEdit is a sandboxed application.

    “App Sandboxing” is a term that refers to a collection of security technologies built in to macOS. Sandboxing is intended to protect you and your data by limiting the operation of applications to their intended use, which in turn makes it harder for malicious software or accidental misuse to cause data loss or damage to your computer.

    One of the core concepts of App Sandboxing is that BBEdit, as a sandboxed application, is not allowed to use any of your files or folders without your explicit permission. You can grant this permission in one of a small number of ways, including (but not necessarily limited to):

    • Asking BBEdit to open a file from the Finder by double-clicking it;

    • Dragging a file from the Finder on to BBEdit’s application icon;

    • Using BBEdit’s “Open…” command to choose a file or folder.

    However, as an advanced developer tool, BBEdit frequently requires access to files or folders that that you may not have specifically asked it to open, for safe and legitimate reasons:

    • If you have located BBEdit’s application support folder in Dropbox or iCloud Drive, BBEdit needs to be able to figure out where the folder actually is, and be able to use that location;

    • When opening a document, BBEdit needs to know:

      • whether the file is under revision control with Git or Subversion;

      • whether there are one or more .editorconfig files which control editor options for the file;

      • whether any ctags data is available to support BBEdit’s completion and "Find Definition" features;

    • When previewing a file with unsaved changes, BBEdit needs to be able to write a temporary file out in the same directory, so that relative links within the file remain correct;

    • If you have turned on “Make Backups” in the Text Files preferences, BBEdit needs to be able to write backup and auto-recovery files in the same directory as the file being saved;

    • The “Open File by Name” feature needs to be able to examine all possible directories that may contain files for which you're searching, including some that you may never have used before in BBEdit;

    • Many dialog boxes in BBEdit which allow you to choose a file or folder give you the choice of directly entering a file path;

    ...and many more similar cases.

    Without unrestricted access to your files and folders, many of BBEdit’s most useful features, from the basic to the most powerful, won't work at all; or they may misbehave in unexpected ways. At the very least, this hinders your ability to get work done.

    In order to resolve this fundamental conflict between security and usability, we have devised a solution in which BBEdit requests that you permit it the same sort of access to your files and folders that would be available to a non-sandboxed version.

    For this reason, the first time you start BBEdit, it will prompt you to allow this access. The prompt will not be repeated; so if you decline to allow this access and later reconsider, go to the Application preferences, and click on the "Allow" button in the "Sandbox Access" section.

    This in no way compromises your security or that of your computer while using BBEdit, but does allow BBEdit to function at its fullest potential.

    If you have been using a previous non-sandboxed version, your existing settings and support folder contents are unaffected by this change.

    More information on this process is available here.


  • The "Pattern Playground" window provides an interactive interface for experimenting with the behavior of Grep patterns (regular expressions). This makes the process of creating complicated patterns much less trial-and-error, since you can see exactly what will match, and how, before committing to any irreversible actions.

    A complete description of the pattern playground is in the Pattern Playground Notes.

  • Added the Grep Cheat Sheet. This appears as a popup menu button in the Find, Multi-File Search, and Pattern Playground windows; as well as in the "Process Lines Containing", "Process Duplicates", and "Sort Lines" dialog boxes. The button pops up a menu which provides some common Grep pattern idioms and brief descriptions; choosing one will insert it literally into the pattern and select it (replacing anything that has been selected). In the Find and Multi-File Search windows, choosing an item from the cheat sheet also turns on the "Grep" option.

  • BBEdit allows you to make rectangular selections in documents for which "Soft Wrap Text" is turned on. Note that the rectangular selections are made in the actual text, not in the visual representation; and so if the rectangular selection crosses a wrapped line, the wrapped portion of the line will not be highlighted.

  • When editing the search string in the Find window, any matches for it will highlight in the "target" document window (usually the one immediately behind the window). (This works for Grep patterns too, as long as the pattern is valid.) This allows basic previewing of the effects of a Find All or Replace All operation.

  • There are two new commands on the "Select" submenu of the Edit menu:

    • Highlighted Matches: selects matches found using the "Display instances of selected text" feature.

    • Live Search Results: selects matches found while searching using the Live Search feature. (Note that this is only available while keyboard focus is in the Live Search search box.)

  • "Find & Select All" on the Search menu does what it says: based on the current search string and options, it will select all matches for the string (or pattern, if grep is turned on). This may also be used from within the Find window.

  • The "Appearance" preferences have been changed: the old "Match application appearance to selected editor color scheme" setting is gone. All the confusion and weirdness involving color schemes and Dark Mode has been swept away. In its place is a much simpler setting: "Application Appearance". Each respective setting does what it says on the tin:

    • "Use system appearance": follow the setting in the "General" system preferences. If you are using "Automatic" on macOS Catalina, the application will change accordingly.

    • "Light": uses the Light appearance, even if the General system preference is set to Dark (or the system has been set to dark mode automatically).

    • "Dark": uses the Dark appearance, even if the General system preference is set to Light (or the system has been set to light mode automatically).

    If you are upgrading from an older version of BBEdit, or starting from scratch, BBEdit will try to pick an initial setting that makes sense, based on whether your system is currently in Dark Mode and (for existing preferences) what color scheme you have selected.

    BBEdit will also automatically switch color schemes when its appearance changes. More on this is available in the changes section, below.

  • Made a change so that untitled documents can use shared completion data (from the Completion Data application support folder).

  • The Python language module gets a built-in set of tags, for the core Python symbols.

  • The per-language settings panel (Languages preferences, "Language-Specific settings" section) now includes distinct color scheme settings for light vs. dark application appearance.

  • When previewing a document, BBEdit will perform placeholder and include processing on the document, so that the live preview reflects exactly what the results of site deployment would be.

  • The "Deploy Site" command for configured web projects will now:

    • Generate and upload HTML for Markdown (and Textile, if any such are in use) files.

    • Perform placeholder and include processing on HTML documents (including HTML generated from Markdown and Textile, if applicable).

    A significant change from previous versions is that transformation processing (placeholders, includes, Update Images) does not affect the document on disk. This vastly improves usability when the site files are under source control, since there are no more random batch changes to files as they are uploaded.

    Note: When deploying a site, any non-HTML files which are preprocessed into HTML (such as Markdown or Textile) are uploaded using the file's base name with an html file name extension. So, will be uploaded as foo.html.

    If there is a file name which exactly matches the uploaded name, this is an error and the file will not upload. So if you have and foo.html in your local directory, will report an error, and foo.html will be uploaded.

  • "Re-Deploy Entire Site" is now available on the Markup -> Update menu, as well as in the action bar popup for web site projects. After confirmation, this will re-process and re-deploy all files in the site.

  • The Text Colors preferences have been slightly rearranged, to make room for a new "Sub-line differences" color setting. This provides explicit control over the color used for character ranges within a single "nonmatching lines" difference, rather than using a derived color.

    If a color scheme does not contain an explicit setting for sub-line differences, BBEdit will derive it from the Differences color, as in versions past.

  • The "Currently Open Documents" sidebar section header gets a popup menu on its right side; this contains commands for rearranging the items in the list based on name, date, or history order ("Most Recently Opened"/"Least Recently Opened").

    These commands are immediate, and don't have any effects outside of their immediate invocation (i.e. they don't permanently change the sort order for the sidebar).

  • Added a "Magnification" setting to the Editor Defaults preferences. This sets the default magnification for new text views. Changes will take effect the next time a text view is created, and will not affect open views.

  • The Clippings palette (once again, if you remember that far back) lists items hierarchically. If you use the search box, the portion of the clipping name which matches the search string (or wildcard pattern) gets highlighted in the display.

  • There's a new setting in the Appearance preferences: "Status bar item size". (The name is chosen for brevity: changes here will affect items in the text status bar, navigation bar, and in the sidebars for editing, project, and Differences windows).

    The "Normal" setting is the factory default. The "Large" setting causes these items to occupy more space and will use a larger text size for drawing, which enhances readability for some customers.

  • Added a new command to the Text menu: "Apply Transform". This command provides an "express" way to apply a single text transformation to specific files or folders, without requiring the explicit creation of a Text Factory. (You can, if you wish, save a text factory.)


  • Added a "Change Notes" command to the Help menu. This will open your default web browser to display the change notes for the version you're running.

  • The "Contact Us" command on the Help menu will create a pre-addressed email message to, containing the application and OS versions in its body. We will be grateful for a meaningful subject line and an appropriate detailed description of your question, issue, or feature request. As always, any information provided in your email, including your email address, is protected by our privacy policy.

  • There's an additional command in the "Find Windows" section of the Menus & Shortcuts preferences: "Open Pattern Cheat Sheet". This does pretty much what you'd think from the name.

  • The "Process Lines Containing" sheet gets an "Entire Word" option; when this is turned on, lines are only considered to match if the text (or pattern) match lies on the boundary between a word break and a word character.

  • If a file's settings are affected by EditorConfig, the Text Options popover and sheet will contain a popup menu button which lists the directories in the document's folder ancestry which contain EditorConfig files. Selecting an item from the menu will open it.

  • Added a text factory operation: "Strip Trailing Whitespace". This performs the same operation as the Text Files preference setting with the same name.

  • Added a text factory operation: "Ensure Line Break at EOF". This operation will add a line break to any non-empty file that does not end with one.

  • Added a "Strip Trailing Whitespace" command to the Text menu. If there is no selection, this will be done to the entire document; otherwise, the selection is extended to the nearest line start and end as necessary, and only the selected range will be processed.

  • Created a new "Sidebar" preferences section, with settings to control, uh, the behavior of the sidebar. The new and/or newly exposed settings include:

    o Reshape window when showing or hiding (on by default, will grow or shrink the window horizontally so that the editing view stays the same size);

    o Add documents in alphabetical order (on by default, adds new and newly created documents to the list alphabetically whenever possible. If you have rearranged the list so that it is out of order, the results may be unpredictable.)

    o Show icons in sidebar lists (on by default) does what its name suggests; turning off icons will create a little more horizontal space.

  • The contextual menu in the "Currently Open Documents" sidebar list now includes "New Text Document" and "New HTML Document". (Note that "New HTML Document" is part of the markup tools, which are not available in Free Mode.)

  • It's now possible to perform a contextual-menu click on a list item that is not currently selected; it will highlight appropriately, and any commands on the menu which would have applied to the selected items will apply to the right-clicked item instead, without causing it to be selected.

  • The Columns submenu on the Edit menu gets a "Select Columns" command, which will select the columns which intersect with the current text selection. (It's analogous to the other column editing operations on the same menu.)

  • For language module developers: compiled language modules now have the ability to generate and use their own document-specific data. More details on this internal change are available in the Language Module Changes technical note.

  • Big changes to the way appearance and color schemes are managed. Settle in for the read:

    • BBEdit will no longer alter its own appearance based on the active color scheme. Instead, the active scheme setting in the "Text Colors" preferences sets the color scheme which is in effect for the prevailing appearance.

      Thus, you can set up one color scheme to be used in Light Mode, a different color scheme to be used in Dark Mode, and whenever you change the OS appearance in the General system preferences, BBEdit will select the desired color scheme. This plays particularly well with the "Auto" setting in macOS Catalina.

      The factory defaults are "BBEdit Light" for Light Mode, and "BBEdit Dark" for Dark Mode.

    • In the "Appearance" preferences, you can choose the application appearance that you desire, or instruct BBEdit to follow the system's appearance. The factory default is "Dark", which will cause BBEdit to use Dark Mode (and the appropriate color scheme, per the above) all the time.

      If you choose "Light", BBEdit will be in Light Mode all the time. If you opt to "Use system appearance", BBEdit's appearance will change as needed whenever the system appearance (Light Mode or Dark Mode) changes. Again, this works nicely with the "Auto" setting in macOS Catalina.

    • The Text Colors preferences are now easier to use for selecting and editing color schemes. A central concept is that there is now always a color scheme in effect. It can be a factory color scheme, one you've downloaded, or one you've created. The previous "Custom Settings" indication no longer appears.

      If you are upgrading from a previous version of BBEdit, and you had custom settings in effect, BBEdit will write your settings out into a color scheme file in your "Color Schemes" application support folder, and then make that color scheme active. You won't lose any settings, and as a bonus your color scheme can be used with any modern version of BBEdit (11.0 or later).

    • If you have a color scheme selected, any changes you make to settings in the Text Colors preferences will change the color scheme file on disk.

      Before making making any changes to the color scheme file, BBEdit will ask Time Machine to save a version snapshot. You can open the scheme file and use "Compare Against Previous Versions" on the Search menu to evaluate the changes. BBEdit will also make a backup copy of the scheme file into your "BBEdit Backups" folder (which itself lives in your Documents directory).

      If your selected color scheme was one of the built-in schemes, BBEdit will first make a copy of the scheme into your "Color Schemes" support folder, and then apply the changes to the copy, and finally will select the copy as the active scheme.

    • To create a new color scheme, go to the "Text Colors" preferences and select the scheme you'd like to start with (if it's not the active color scheme already).

      Then, click the "New..." button. BBEdit will propose a name for the new scheme, which you can of course edit as desired. Click "OK", and BBEdit will create your new color scheme in your "Color Schemes" support folder, and then make it active. From there you can edit the scheme by changing settings in the Text Colors preferences.

    • When you open a color scheme file, it will (once again) open as text. This makes hand editing and inspection much simpler than was possible in BBEdit 12.5/12.6. (Hand edits to the scheme file won't take effect immediately; you can frob the color scheme setting to cause it to reload.)

  • Changed the appearance of the search history and pattern popup menu buttons in the Find and Multi-File Search windows to match the appearance of the same buttons when used in other panels (such as Process Lines Containing).

  • BBEdit will calculate an appropriate size for the font used in the line number bar, based on the point size of the font used for editing. The maximum size of the line number bar font is limited to 24 points. If you would prefer a lower (or higher) limit, you can adjust this:

    defaults write com.barebones.bbedit MaximumLineBarPointSize -float NN

    "NN" must be a decimal number, and should be greater than zero.

  • The Search menu was getting a little long, so there's a new "Find Differences" submenu on the Search menu. This contains the specialized forms as well as the in-context commands (Apply to Left/Right, Compare Again).

  • The line number/gutter area in text views now draws using the same background as the text area. In the line number bar, line numbers that lie inside the selection range are now drawn using darker text.

  • Made a change to ask the OS-provided print panel to place the page attribute controls (orientation, scaling, paper size) in the panel proper, rather than hiding them behind the "Page Attributes" section in the popup menu.

  • Made a change so that status bar and navigation bar items draw popup (or drop-down) menu indicators using standard OS primitives.

  • Made a change so that the sidebar header in disk browser windows draws the popup arrow indicator using standard OS primitives.

  • BBEdit uses the document's display font to draw line numbers in the line number bar. This may be less than ideal if the display font isn't monospaced. If desired, you can instruct BBEdit to use the system font with monospaced numbers for the line number bar:

    defaults write com.barebones.bbedit UseSystemFontForLineBar -bool YES

    Changes to this setting take effect immediately, and do not require restarting the application.

  • BBEdit will dynamically adjust the width of the line number bar, based on the point size of font used to display the document's text, and the number of lines in the document.

  • "Reveal in Finder", "Go Here in Terminal", and "Go Here in Disk Browser" on the View menu are now enabled when an item is selected in the list of items to search in the Multi-File Search window, assuming that the item corresponds to an actual file or folder on disk.

  • If an open document's name is not unique(*), its entry in the sidebar is qualified by some useful portion of its directory path. (*) Does not apply to untitled documents.

  • It's now possible to click on and drag a non-selected item in a list (such as a disk browser or editing window sidebar) and drag it, without the item first becoming selected (and causing unexpected side effects). This change makes the list behavior consistent with OS standard table and outline view controls.

  • If an FTP browser window is active and disconnected, "Open from FTP/SFTP Server" will start its connection sheet, rather than doing nothing.

  • The "New HTML Document" panel no longer requires that a page template's name end in ".tmpl" in order to appear in the "Page template" menu. All that is necessary is for either the document's filename extension to map to an HTML-like language (HTML, XML, Ruby in HTML, PHP in HTML) or that be a text file whose contents contain something that looks reasonably HTML-like.

  • The navigation bar items in "Preview in BBEdit" windows are all drop-down menus, so their indicators are drawn accordingly.

  • Made a change so that the line bar includes highlighting to show which lines lie inside of the selected range of text.

  • If the shell process underlying a Shell Worksheet exits unexpectedly, the status bar will indicate "<shell not running>".

  • Made a change to automatically save a document's state when closing it (including when quitting) when UseResourceForkForDocumentState is turned on, because doing so changes an xattr and does not actually touch the file's content modification date.

  • Moved sidebar settings into the Sidebar preferences, and removed the boxes from the remaining settings.

  • Changed the appearance of the menu item badges for evaluation mode; the badges no longer rely on color as a status indicator.

  • Gave the icons in the Preferences window a bit of buff and polish.

  • The results windows for Find Differences are all new. Among other things, the old three-window presentation is gone, replaced by a single window which shows both old and new files at the same time, along with the diff list.

    When two folders are compared, the sidebar on the left shows the hierarchy of files and folders that are different. The "Only in Old" and "Only in New" lists are gone; instead, each pair of icons indicates whether an item is missing from one or the other. If so, the arrow on the right-hand side of the item can be used to copy the file or folder over to replace the missing item.

    In the sidebar of a multi-file Differences window, you can click on a file or folder icon to ask the OS to open it. Hold down the Option key to reveal it in the Finder instead; or hold down the Command key to open the item in BBEdit (even if the OS would open it in some other application).

    The Differences window also supports a "widescreen" layout. Although there is no UI for changing the layout at this writing, you can do so through the scripting interface:

    set widescreen of differences_window 1 to (not widescreen of differences_window 1)

    "Save Default Window" also works for Differences window, so if you prefer the widescreen layout, you can use the script to change it, then "Save Default Differences Window" to make it the default.

  • When doing a folder compare, each pair of files in the sidebar will contain an indicator to show whether the files in the pair are identical ("=") or not ("•"). (This applies as long as both files in the pair are present; otherwise the copy arrow is shown as usual.)

  • There's a new feature: "Highlight instances of selected text". When you select something (that doesn't consist entirely of whitespace or punctuation), all of the occurrences of the selection are underlined; and the new pair of commands on the Search menu ("Next Occurrence of ", "Previous Occurrence of ") can be used to navigate the occurrences. (This navigation is independent of the text searching UI, although the string is added to the search history for convenience of future use.)

    This feature can be turned on or off globally in the Editing preferences; there is likewise an adjustment for the delay before the highlighting is done.

  • The Clippings mechanics have been enhanced and reworked, as follows:

    • The concept of "the active clipping set" is now inoperative. Clippings can now be available from multiple sets, as desired. By default, all of the clippings in a given set are now available at all times, unless the clipping set's name maps to an installed language. In that case, the clippings from that set are available only when the effective language in the active document matches the clipping's language.

    • This is only the default behavior: you can manually enable clipping sets for any set of languages, by using the "Clippings" item in the Setup window. Select one or more listed clippings sets, and click "Edit Enabled Languages" (or double-click the selected items) to edit the languages for which the set(s) are to be enabled. Within the "Edit Enabled Languages" panel, you can select multiple languages and turn them on or off at once.

    • There is no more special treatment for the "Universal Items" set. Like all other clipping sets in the new order, it is automatically enabled for all languages by default; you can change this in the Setup window as described above. Instead, any clippings placed loose in the top level of the Clippings folder are all available, at all times.

    • The Clippings floating window has been reworked. It is now a single column wide (no more Universal Items) and lists all of the clippings from all available sets. There is no hierarchy given to the clippings; they are listed in alphabetical order. A search box at the top is available to help you filter things down. The "Insert Clipping" command, rather than bringing up a separate modal panel, now brings up the Clippings window, with the keyboard focus in the search box.

    • Clippings completion works pretty much as before; completion options are now chosen from all of the available sets rather than just a single active set.

  • "Zap Gremlins" has been extended to provide the option to use ASCII equivalents when replacing gremlins with the character code (thus replacing the old "Convert to ASCII" command), as well as an option to replace gremlins with HTML entities.

  • Added rebeccapurple (#639) to the list of built-in CSS colors (and to color strings known to the HTML checker), per and

  • Added two new commands to the Edit menu for text views: "Select Up" and "Select Down". These commands facilitate rectangular selection via the keyboard. (Their factory defaults are Control-Shift-uparrow and Control-Shift-downarrow but can be changed as usual in the Menus & Shortcuts prefs.) Given either a single-range selection (that does not cross a line boundary) or an existing rectangular selection, "Select Up" and "Select Down" will extend the selection range up (or down, respectively) in the same column, thus creating (or extending) a rectangular selection.

    These commands are disabled if soft wrapping is turned on in the view.

  • There's a new button in the Find and Multi-File Search windows: "Extract". This button (backed by a command on the Search menu, so you can assign a keyboard equivalent to it) will locate all occurrences of the search string (across multiple files, if appropriate) and those occurrences will be collected into a new untitled text document, separated by line breaks.

  • It is now possible for #! text filter scripts to present a dialog box allowing the user to specify arguments to the filter (which the filter script may then use to modify its operation on the input). This is done by creating a Cocoa nib file in Xcode, and placing it in a specific location relative to the script being run (namely, "../Resources/<script base name>.xib"). It is necessary to follow certain specific rules when creating the nib. A separate metadata property list ("../Resources/<script base name>-arguments.plist") may be included in order to specify the format of arguments on the command line. Complete information is available in the "Using nibs for #! script parameters" technical note.

  • When a Differences window is active, the "Next Error" and "Previous Error" commands on the Go menu change to "Next Difference" and "Previous Difference", and can be used to navigate even when the differences list does not have focus.

  • Preview windows get a new navigation bar item: "Media". This allows you to change the preview's media type on the fly, to aid in evaluating any CSS media queries.

  • The "Text Colors" UI has been overhauled to allow for extended colors (and some new core color types have been added).

  • The format of color schemes has changed. Existing color schemes will be converted; note, however, that the new color schemes have many more color settings. Any missing color settings will use factory defaults.

  • The syntax coloring internals have been extensively reworked. Run kinds (used to determine colors) can now be extended by language modules, with each run having a default color and enough metadata to drive the prefs UI. Thus, language module developers are no longer limited by the set of built-in colors.

    Note: This rework required incompatible changes to the language module plug-in API. Existing compiled language modules will not load, and will need to be updated. Codeless language modules are not affected by this change (but should be updated to take advantage of additional features enabled by the new architecture, as spelled out in the change notes below).

    A complete description of the changes to the language module interface (relevant to developers of both compiled and codeless language modules) may be found in the "BBEdit 11 Language Module Changes" technical note.

  • Because PHP can appear in one of two contexts, recognition of PHP has been split between two languages: "PHP", which is used only for "raw" PHP source, and "PHP in HTML", which describes PHP embedded in HTML documents. This should clear up some of the confusion which occurred from having PHP-in-HTML documents sometimes following PHP rules, and sometimes following HTML rules (particularly where clippings are involved).

    Note: If you had previously made changes to the filename extension mappings to explicitly map PHP extensions to "HTML", or HTML extensions to "PHP", you will be well served by clearing those mappings and allowing the factory defaults to prevail.

  • When a non-empty shell worksheet is active, the "Export" command is available as "Export to Text", and can be used to save a text-only representation of the worksheet's contents.

  • @YES, @NO, @true, and @false are now colored as keywords in Objective-C documents (the latter two only in Objective-C++).

  • Objective-C numeric literals (e.g. @12345) are now colored as numbers in Objective-C/Objective-C++ files.

  • Added __objc_yes and __objc_no to the keyword list for Objective-C/C++

  • Added @import to the keyword list for Objective-C/C++

  • Added nullptr to the keyword list for C++ and Objective-C++.

  • Added instancetype as a keyword for Objective-C/Objective-C++.

  • There is a new expert preference: PrecomposeUnicodeWhenPasting. This is useful in situations where you frequently bring in text that contains combining Unicode characters from external sources (such as PDFs generated on other platforms), and need to crush two combining characters into one composed character where possible. This is not a generalized need, but if you run into it often enough, turning on the expert preference will save you some work:

    defaults write com.barebones.bbedit PrecomposeUnicodeWhenPasting -bool YES

    (Despite the name, the precomposition is done when BBEdit imports the Clipboard from other applications, not when the paste is actually done.)

    Note that this requires an additional copy of the Clipboard when the application imports the text, and for very large pastes, there may be a noticeable delay while the text gets precomposed. Thus, you should only turn on this setting when you are frequently working with text that contains combining Unicode characters.

  • The UI for "Save Scheme" in the Text Colors preferences has been enhanced: there's now a pop-up menu so that you can choose the name of an existing color scheme if you want to overwrite it. (You'll be warned before overwriting an existing color scheme, though.)

  • Added color settings for verbatim sections and math strings in TeX documents.

  • There are now several built-in factory supplied color schemes. These may be used as-is, according to your preference, or you can select one, customize it, and use "Save Scheme" to create your own modifications (which are stored in the Application Support/Color Schemes/ folder, as usual).

    The "BBEdit Dark" color scheme is now the factory default. This is applied when you start up with no existing preferences (including any migrated from TextWrangler), or when you use the "Reset to Defaults" button in the Text Colors preferences.

    If you have been using BBEdit for a long time, you may prefer "BBEdit Light". If so you can change this in the "Text Colors" preferences.

    The factory default colors from pre-11 versions are provided as "BBEdit Classic".

  • When you use "sudo" in a shell worksheet, you'll now be prompted (if necessary) to enter your password. Thus, there's no need to manually use the "sudo" mode in the worksheet if you don't want to for some reason.

  • There is a new clipping placeholder: #block#. Using this placeholder will guarantee that the inserted clipping text begins and ends with a line break.

  • There is a new control in the status bar at the bottom of text views; it displays the current magnification of the view and allows you to change it. The control can be hidden (or shown) using the "Text Magnification" option in the Appearance preferences.

    There is a keyboard equivalent for opening the Magnification menu; this can be changed in the "Menus & Shortcuts" preferences, under "Status Bar".

  • The popup-menu buttons at the bottom of the window side bar are now accessible via keyboard commands. There are none set by default; you can configure your own in the "Menus & Shortcuts" preferences; see the "Side Bar Items" section.

  • There is a third option in the Keyboard preferences to control Home and End key behavior: "Progressive (BRIEF compatible)". If you select this option, the Home and End keys behave as follows on successive presses:

    • the first press will move the insertion point to the beginning (or end) of the current line;

    • the second press will move the insertion point to the begin of the first line (or the end of the last line) in the current page of text, without scrolling;

    • the third press will move the insertion point to the beginning (or end) of the document.

    The behavior is progressive within a specific time period. After the period expires, or if you change the selection range by other means, the behavior state resets, so the next press of Home or End will behave as in the first step described above.

    The factory default timeout period is ten seconds. There is an expert pref to control it:

    defaults write com.barebones.bbedit BRIEFStateTimeout -float 10.0

  • There are some new commands on the View menu:

    • Collapse All Folds - This will collapse all automatically generated fold regions in the text, whether or not they are contained within other folds. (This is distinct from "Collapse Top-Level Folds", which collapses the top-level folds but leaves any nested folds open.)

    • Collapse Folds Below Level - On the submenu, all available fold levels are shown; choosing one will collapse all of the automatically generated fold regions in the text that are below that fold level. So, for example, Collapse Folds Below Level => 1 will leave the top-level folds open, but will collapse all of the folds below the top level, whether or not they are contained by other folds.

  • After entering a license code, either manually or via in-app ordering, BBEdit will figure out whether you have Yojimbo installed and will offer to save your serial number there. (This applies only to non-App Store versions of BBEdit.)

  • Clicking on the document icon in a window's toolbar will now open a spring-loaded info panel which displays basic information about the file, and gives you the ability (for local files only) to rename it, "touch" its creation/modification dates, and change its permissions. The "Text" tab shows the same text statistics as the display in the status bar, but in an expanded format. Dismiss the panel by clicking outside of it, switching to another window or application, or pressing the Escape key.

  • A "Get Info" command is now available on the View menu, as well as in the action and contextual menus for file sidebars (for items on disk) and disk browsers. This will display the same info panel that is available by clicking on the file's icon in the toolbar, but without the Text tab. When applied via action or contextual menu to sidebar items, it is only available for files or folders on local file systems, and will not show text statistics.

  • Added a "Swap" button to the Find Differences dialog box.

  • There is a new command on the Search menu: "Replace All in Selection". This is enabled when there is a selection in the front document's text view (or in the document immediately behind the Find window). Choosing it will apply a Replace All only to the selected range of text.

  • Restored the "Font Style Elements" palette to the "HTML Markup Tools" palette group in the Palettes menu.

  • CSS coloring has been enhanced: numeric values are now colored, as are color specifications (both built-in names and 3/6-digit hex color specifications).

  • SCSS is now supported as a built-in language. This is a superset of the support for CSS, with additional coloring for variables, // comments, as well as completion for the SCSS built-in functions.

    Note: If you have installed the third-party SCSS language module, you will need to remove it, since it will otherwise override the built-in support.

  • Added "Create Table Shell" to the Markup -> Tables menu (and the "Table" popup menu in the HTML tools palette). This gives you various options for creating a prefabricated HTML table structure.

  • When starting up a fresh installation of BBEdit, the application will look for existing TextWrangler preferences and migrate them. In addition, if a TextWrangler user settings data folder is located in ~/Library/TextWrangler/ (which is the default for TextWrangler 4.5.x installations), then it will be copied to ~/Library/BBEdit/. Finally, ~/Library/Application Support/TextWrangler/ will be copied to ~/Application Support/BBEdit/.

  • There are two new commands on the Edit menu: "New Line Before Paragraph" and "New Line After Paragraph". These commands will insert a new line at the beginning of the paragraph(*) containing the start of the selection, or after the end of the paragraph containing the end of the selection, respectively.

    (*) The term "paragraph" is used in the same sense as the Cocoa text system uses it, namely, a line boundary. This is at odds with the conventional definition of a paragraph, but consistent with the OS's interpretation of the term (and thus with other applications that implement the same behavior).

    NOTE: Because "New Line After Paragraph" uses Command-return as its factory default keyboard equivalent, this gesture is no longer available for sending a command in shell worksheets. Enter still works, though, so you can use that. Alternatively, there is a new placeholder command in the "Shell Worksheet" group in the Menus & Shortcuts preferences: "Send Command". This defaults to Control-return, but you can now assign it to anything you like.

  • Added check box to the Edit -> Insert -> File Contents file panel: "Include separators". This will include a separator between each inserted file's contents, which includes a dashed line and the file's name.

  • There is now a simple way to add language keywords to installed languages without fiddling your fingers in the application package or other off-limits places. As follows:

    • in the Application Support/BBEdit/ folder, there is a new subfolder, named Custom Keywords. It is created automatically when the application starts.

    • In this folder, place one or more files containing the keywords that you wish to be colored.

    • Each file's name should map it to the appropriate language, e.g. ".js" for JavaScript files. You can have multiple keyword files mapped to the same language, if you wish.

    • Each file should be UTF-8 text, no BOM, and contain one keyword per line.

    • Keyword lookups are case-sensitive if the language is case sensitive; case-insensitive otherwise.

    • Words in these files are colored using the "Language Keywords" color.

  • BBEdit now has built-in support for Git. There is a Git menu in the menu bar, which presents available operations (most of which may only be enabled when the active document corresponds to a file that is in a local Git working copy).

    The intent is not to function as a full-featured Git GUI, but rather to support common file operations so that you can perform tasks on the file(s) you're working on in BBEdit without having to switch to the command line or a dedicated GUI client.

  • BBEdit now supports the EditorConfig settings file convention. You can learn more about this at the EditorConfig web site, and complete details on BBEdit's support for EditorConfig are available in this technical note.

  • The Editing preferences have been rearranged slightly, so that "Include dictionary words in completion list" is now properly grouped with the rest of the completion settings. There is a new setting for completion: "Include system text replacements in completion list". When enabled, system-wide Text Replacement triggers (configured in the "Keyboard" system preferences) beginning with the text you typed will now appear on the completions popup.

  • There's a new (dynamic) command on the File menu: "Save All in Window". The factory default keyboard equivalent is Command-Option-Shift-S. This is enabled if any (or the only) document in the front window has unsaved changes; choosing it will save all documents in the front window.

  • Added a couple of alternate forms of bblmAddFunctionToList() to the language module interface to make it easier to write code for the common use case of adding a single function by name.

  • The bbedit command-line tool supports two new options: --append and --prepend. These will append (or prepend, respectively) the piped data to the active document. See man bbedit for more details.

  • Added an expert pref, to suppress following of all URLs in live preview windows:

    defaults write -app BBEdit DontFollowLinksInLivePreviews -bool YES

    When this is set, clicking on any link will have no effect, and any URLs returned by remote form loads (such as Twitter's tracking) will not open in a web browser when a live preview is loaded or reloaded.

  • The CSS/SCSS language module is all new. Folding, keyword coloring, function navigation, and completion have all been improved. Various bugs are fixed.

  • Added a new command to the first section of the Search menu: "Search in Document’s Folder" (its title when disabled). When a text document is active in the front window, this command is enabled and will activate the Multi-File Search window with the document's enclosing folder selected as the search location. (The name and path to the folder are displayed in the menu.)

  • The "Arrange" item on the Window menu now presents a submenu with all of the available arrangements. Choosing one will apply it; for any that you use frequently, you can assign a keyboard shortcut in the application's "Menus & Shortcuts" preferences.

  • A new language module for EditorConfig files is now built in, with syntax coloring and section navigation (via the function navigation menu).

  • The INI language module has been rewritten, and provides improved navigation as well as folding.

  • The file info panel (used for text statistics and the Document Status navigation bar item) gets a new "location" field showing the URL to the file, and "Copy" buttons for the full path and the location.

  • Clicking on the cursor position display in the status bar now opens a popover that you can use to go to another line. (The popover stays up until you click outside of it or press the Escape key, allowing you to browse the file by line number.)

  • Added "New Text Window" to the application dock menu. This is equivalent to the "New Text Window" command in the menu bar.

  • By default, the Open panel implements the standard system behavior of displaying the same folder that was viewed the last time you used the Open command. If you wish, you may instead have the Open panel display the directory containing the active document (or some other location apposite to the front window):

    defaults write com.barebones.bbedit OpenPanelShowsFrontDocumentDirectory -bool YES

    If no documents are open and a suitable location could not otherwise be determined, the Open panel will show you the last-used directory.

  • Added x-show-tab-stops as an application-specific EditorConfig key. (Answer for @pborenstein: "not too hard.")

  • Open File by Name, disk browsers, instaprojects, and the Counterparts navigation bar item will now filter out files that are in Git repositories and match .gitignore file rules. (In disk browsers and instaprojects, the "Everything" filter item will make such files visible again.)

  • Folder scanning used in multi-file search/replace/text factory operation, Find Differences, and site deployment will now skip over files that match rules specified in .gitignore files, in cases where the directory being scanned is (or is inside of) a Git working copy.

  • There is a new command-line tool: bbresults. This tool reads data from stdin which is expected to be typically formed Unix error messages. This data is then used to create a BBEdit results window which provides navigation of errors and warnings within BBEdit itself.

    For example:

    proselint --demo | bbresults (you can learn more about proselint here.)


    flake8 | bbresults --pattern flake8

    or even

    grep -n void *.c | bbresults

    Complete information on how to employ bbresults is provided in its man page. Choose "Install Command Line Tools" to install the tool and man page.

  • The application now lets the system know that it is able to handle the old editor:// URL scheme, which has been supported for many years but not previously advertised.

  • Added a new command to the Lines submenu on the Edit menu: "Duplicate". This will duplicate the lines which intersect the current selection range.

  • Added Toothpaste as a factory-supplied color scheme. Toothpaste was designed by Cat Noone and is included with her kind permission.

  • Added credit for Toothpaste to the About box.

  • "Find Differences" gets two new options in the dialog box: "Ignore blank lines" and an "All" option in the "Ignore spaces" group. These operate as you might imagine: "Ignore blank lines" skips differences that consist entirely of blank lines, and turning on "All" causes all whitespace to be ignored during comparison.

  • The difference window AppleScript class now has a compare options property. You can use this to query or manipulate the options that are applied when comparing files in that window. Changes to the options will take effect immediately.

  • The Editing preferences have been rearranged slightly; there is a new setting to control whether spelling errors appear as tick marks in the scroll bar, and it is collected with the previous setting that controls whether matches for the selected text appear as tick marks in the scroll bar.

  • Added support for the C binary notation to the C-family language syntax coloring.

  • Added support for Github-style fenced codeblocks to the Markdown module. At this point, we simply recognize them as a codeblock for purposes of code folding and syntax coloring. No additional syntax coloring is done in the language of the fenced code.


  • Updated the internal Markdown previewing script to convert github-style fenced codeblocks into Markdown's traditional code block output. Thus this:

    while (pnoies) {
        alert("glitter and rainbows!");

    will preview as this:

    <pre><code>while (pnoies) {
    alert("glitter and rainbows!");

  • Custom keyword files (those that live in Application Support/BBEdit/Custom Keywords) can now use an Emacs mode line to specify their language. This addresses the case in which you want to supply keywords for a language that doesn't have any filename extension mappings. For example. ".php" maps to "PHP in HTML", which means that embedded PHP keywords need to be in a keywords file that maps to the "PHP" language. Such a keyword file would look like this:

    -*- mode: php; -*- keyword_one keyword_two ...etc...

    Emacs mode lines and blank lines in the keyword file will be ignored.

  • When an untitled document is active in a window, the window's entry in the Window menu will be annotated with some text derived from the beginning of the document's contents.

  • Beginning with this version, you can open documents that are much larger than was previously possible. In the Before Time, documents whose in-memory size (about twice the on-disk size) exceeded roughly 1.5GB would fail to open and report an out-of-memory error, as would documents whose internal structure required generation of large quantities of syntax coloring and/or code folding information (such as complicated XML documents).

  • Beginning with this version, you can perform many large-scale operations on very large files without running out of memory or needing to clear Undo state.

  • BBEdit is now built as a 64-bit application. This works around various reported bugs in the OS and has other beneficial side effects: the application starts more quickly on a "cold" launch; 64-bit color pickers and contextual-menu plug-ins are now available; and our customers are even more attractive and athletic than before.

  • Support for the Touch Bar has been added to various windows (applicable only to computers that have a Touch Bar, of course):

    • FTP/SFTP browser windows: "go up", "go down" (into selected folder), and "reload".

    • Text Factory windows: add/remove actions and run the factory.

    • "Preview in BBEdit" windows: for items in the tool bar.

    • Editing windows: toggle the sidebar and previous/next document navigation.

  • "Go To Line" (either the menu command or the popover from the cursor position display) supports the specification of line ranges, in addition to just a single line and column. For example, entering one of these forms into the field will behave as follows:

    Xmoves the insertion point to the beginning of line X
    X:Cmoves the insertion point to column C of line X
    X-Yselects the text from the beginning of line X to the end of line Y (including the line break at the end of the line).
    X:C-Yselects the text from column C on line X to the end of line Y(including the line break at the end of the line).
    X:C-Y:C2selects the text from column C on line X to column C2 on line Y.

    In this way, you can use "Go to Line" to select ranges of text based on line and column number.

  • "Preview in BBEdit" windows get a new item in their tool bar: "Open in Browser", which will preview the document's contents in the most recently used preview browser (or your system's default web browser, if applicable).

  • For language module developers: modules can now generate a new run kind (or use it as an available color for keywords): com.barebones.bblm.syntax-error. This is for use as its name suggests, in the case where the color scanner detects something incorrect while examining the document. The color preferences and built-in color schemes have been updated to include this.

  • There's a new preference pane: "Completion". This contains the settings for text completion that used to be in the Editing preferences, and adds a setting for automatic insertion of delimiters (parens, brackets, single and double quotes, as well as any language-specific elements).

    The setting "Surround selected text when typing matching delimiters" allows you to control whether typing an opening delimiter will surround the selection range. This is independent from whether delimiters are auto-paired when typing an opening delimiter with no text selected.

  • There is a new command on the Edit menu: "Paste Using Filter". Under this item are text filters from your "Text Filters" application support folder. Choosing a filter will process the text on the Clipboard through the selected filter before inserting it in your document.

    You can paste using the most recently used filter using the appropriate command on the "Paste" submenu of the Edit menu. This latter command can also have a keyboard equivalent for quicker access.

  • When performing an Extract operation, you can now use a Grep replacement pattern in the "Replace" field (in Find or Multi-File Search) to transform the extraction results. Consider this example text:

        !_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/
        !_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
        !_TAG_PROGRAM_AUTHOR    Universal Ctags Team    //
        !_TAG_PROGRAM_NAME  Universal Ctags /Derived from Exuberant Ctags/
        !_TAG_PROGRAM_URL   /official site/
        !_TAG_PROGRAM_VERSION   0.0.0   /a1e9cbe/

    To extract just the unique part of each field name (without the leading !_TAG_), match it with this pattern: _TAG_(.+?)\s. The first capture group is the unique part of the field name, so use \1 in the "Replace:" field, and then click the "Extract" button. The resulting extracted text will be:


    Performing extraction with Grep substitutions will allow many extraction operations to be completed in just a single step, rather than requiring more than one Replace All operation.

  • The Printing preferences get a new setting to control whether documents should always be wrapped to the printed page.

  • There's a new submenu on the Edit menu, "Columns". This submenu contains commands to help you work more easily with column-delimited text files.

    The three basic commands, "Cut Columns", "Copy Columns", and "Clear Columns" work similarly to their top-level analogues.

    The columns to be cut/copy/cleared are determined by the selection range: to cut a single column, for example, click in the middle of it. You can cut/copy/clear multiple columns by selecting text across them.

    The "Rearrange Columns" command gives you an easy way to, well, rearrange the columns in a column-delimited text document. Choose the menu command, and then drag the items into the list to order them as you would like, then press the "Apply" button.

  • There is a new section in the Setup window: "Folders". This section lists the available folders in the BBEdit application support folder. Double-clicking on a folder, or clicking the arrow next to a folder, will select that folder in the Finder (creating it first, if necessary).

    This addition makes it easier to get at application support folders in general, since the Library folder is hidden by default from the user.

  • There is a new setting in the Keyboard preferences: "Enable macOS “Help” key". This is off by default, so that pressing the "Insert" key which is present on some PC-style keyboards doesn't open the in-application help. (This frequently happens accidentally.)

  • Added an "Expert" preferences pane, which provides direction to the Expert Preferences help book. The "Restore Defaults" button in this pane will reset all expert preferences to their factory defaults.

  • There's a new command on the Text menu: "Canonize". This command is useful for doing batch search-and-replace operations in a file, using another file as a list of search-and-replace transformations.

    The transformation file is itself a list of replacements, one per line. The search string is separated from the replace string by a tab, so if you want your searches or replacements to contain tabs, you use the "\t" escape sequence. Blank lines are allowed.

    Transformation files may be commented: everything after a "#" is ignored, so if you want to use search or replace strings that contain a "#", you must escape it: "\#".

    There is one case in which a line may contain only a single string, and that is when you wish to case-insensitively normalize the spelling of all occurrences of a word.

    Here's an example file:

    void    VOID
    MyAncientClassName  MyModernClassName   # class rename for the new world order
    # this line is a comment
    \#include   \#import    # convert from C++ to Objective-C
    noErr   # normalize capitalization from "noerr", "NOERR", "NoErr", etc

    When using the Canonize command, you can specify whether the searching is to be case-sensitive or not; and whether the searches should match on word boundaries, or not. (These behave identically to the "Case Sensitive" and "Match Words" options in BBEdit's "Find" window.)

    Note that even when you have specified "Case Sensitive", a single word on a line by itself will perform a case-insensitive search, since its function is to normalize all occurrences of the word to the same capitalization.

  • The Live Search command now supports grep pattern matching when the "Grep" option is enabled, and stored patterns are available under the "Saved patterns" ("g") popup. If the entered pattern is invalid, BBEdit will display an alert icon which you can click to see the error.

  • When a remote (FTP/SFTP) document is open, "Reload from Disk" on the File menu will become "Reload from Server"; choosing this command will fetch a fresh copy of the document data from the server, and then refresh the document's contents.

  • "Preview in BBEdit" windows get a "Show Inspector" toolbar button, which displays the WebKit inspector pane for code introspection.

  • The --new-window option for the bbedit tool can now be applied when opening directories: it will stop the application from checking to see whether you've already opened that directory, and thus allow you to open the same directory in multiple windows.

  • The navigation bar now contains an item indicating the current Git branch (for documents that are in a Git working copy).

  • Split View (on OS X 10.11 and later) is now functional.

  • Dragging items from an FTP/SFTP browser to the trash is now equivalent to selecting them and clicking the "Delete" button.

  • You can now drag local files and folders onto an FTP/SFTP browser window to upload them.

  • There is a new command on the "Go" menu: "Commands...". This brings up a modal panel which lists everything that you can do from a menu in BBEdit: menu commands, clippings, scripts, stationery, text filters, as well as open text documents and recent files.

    Type in the search box to narrow down the list; when you do this, results are ranked by how closely each entry matches what you entered.

    You can use wildcards (not Grep, but conventional file name wildcards like "*", "?", and so forth) if you like.

    Use the up- and down-arrow keys to move between matches; Return or Enter will run the highlighted command. This works whether keyboard focus is in the search box or on the list.

    You can dismiss the panel without doing anything by pressing Escape or Command-period.

    The right-hand column will display the currently assigned keyboard equivalent, if there is one. Double-clicking on the equivalent, or in the space where it would be, will allow you to change the key equivalent: press the keys that you would like to use for that command.

  • You can now generate lipsum, using the "Lorem Ipsum" command on the Insert submenu of the Edit menu.

  • Lipsum generation is available in clippings. The placeholder syntax is of this form:

    #LIPSUM [wordlist] [units] [units-count] [max-line-length]#

    wordlist and units are each a single character, and case matters:

    • p for paragraphs
    • s for sentences
    • w for words
    • S for startup
    • B for bacon
    • N for normal

    The case sensitivity allows these to appear in any order, and they can be separated by spaces, commas, semicolons, periods, slashes, colons, or dashes. Thus, the following examples are equivalent and all will generate ten sentences of Startup lipsum with the lines wrapped to 72 characters:

    #lipsum S,s 10 72#
    #lipsum Ss 10 72#
    #lipsum s:S 10 72#

    wordlist is optional; if omitted then BBEdit will generate "normal" lipsum.

    A #lipsum# placeholder may contain zero, one, or two numbers. If no numbers are provided then there is no line breaking and only one unit (word, line, paragraph) is generated.

    If one number is provided, then that number of units is generated.

    If two numbers are provided, the first is the number of units to be generated, and the second is the maximum line length.

    Thus, if you wish to break lines, you must also specify the number of units that should be generated.

  • Lipsum generation is available as an HTML document placeholder, using the same #lipsum...# syntax as for clippings.

  • Added support for Grep patterns to Canonize. This can be turned on using the check box in the "Canonize" dialog box; or by using a mode line in a Canonize data file.

    There are some restrictions to be aware of:

    • when Grep is in use, two columns are required on all lines (except for blank lines or comment lines).

    • the first column must be a valid Grep search pattern; the second column may be a literal string or a valid Grep replacement pattern.

    • When using Grep, BBEdit will check every search pattern for valid Grep syntax before beginning the Canonize operation. If any pattern is invalid, BBEdit will report an error for that line in the Canonize data file (including the PCRE error) and will not begin the operation.

    • Reminder: whether using Grep or not, "#" is used to comment lines; therefore, you must backslash-escape it ("\#") in any string or pattern where it needs to be used literally.

  • Added support for mode lines in Canonize data files. The mode line must be a comment line and occur on the first or second line of the file. It may contain the following variables (in addition to any other mode-line variables, which Canonize will ignore):

    • x-bbedit-canon-case-sensitive
    • x-bbedit-canon-match-words
    • x-bbedit-canon-grep

    If any of these are present, then the mode line will override the settings in the Canonize dialog box (or Text Factory action settings). In that case, any absent mode settings will default to "off".

    Here are some examples:

    # -*- x-bbedit-canon-grep: 1; -*-
    use grep; "match words" and "case sensitive" are off

    # -*- x-bbedit-canon-case-sensitive: 1; x-bbedit-canon-match-words: 1; x-bbedit-canon-grep: 0; -*-
    "case sensitive" and "match words" are on; "use grep" is off

    You may use "1" and "0" for "on" and "off" respectively; or "t" and "f", or "y" and "n".

    We recommend that you always use a mode line; this makes it easier to share Canonize data files and guarantee that their behavior will be consistent irrespective of the individual user's preferences.

  • Multi-File Search results windows now get a "reload" button, which you can use to repeat the search using the same settings.

  • There's a new command available on the Search menu and in the contextual menu in text views: "Search for [selected text] in [location]". This will start a multi-file search for the selected text (or the word surrounding the insertion point, if applicable), in the locations most recently used in the Multi-File Search Window.

  • There's now a "Word" command on the Select submenu of the Edit menu. Choose it to select the word(s) containing the insertion point or selection range. There is no default keyboard equivalent for this; you can assign one using the "Menus & Shortcuts" preferences.

  • Added a collection of commands to the Miscellaneous group in the Menus & Shortcuts preferences: "Edit View Scrolling". Each of these is for scrolling an edit view in the appropriate direction, and is a convenient hook for assigning a keyboard equivalent for easy keyboard scrolling (e.g. control-up/down-arrow, or control-left/right-arrow).

  • Added a "Clear History" command to the search/replace history menu in the Find and Multi-File Search windows.

  • The setting to enable single-click line selection (by clicking in the line number bar or gutter) is now available in the Editing preferences.

  • Added a "Title Case" option for Change Case. This will make the first letter of each word in the selected range uppercase, except for certain words that would not be appropriate. The implementation uses NSString+IATitleCase, copyright ©2016 Information Architects, Inc. and used under the terms of the MIT License.

  • The Multi-File Search window provides the ability to filter files and folders separately. In this way, you can include only those folders that you explicitly wish to search.

    BBEdit applies folder filters after any automatic filtering (such as .gitignore processing; skipping of invisible folders, node_modules; and so forth).

    There are some things to be aware of:

    • You can use a given filter interchangeably for both files and folders; but not all terms make sense for folders. The following in particular will behave predictably but not necessarily usefully:

      • The "File Contents" term will never match when it occurs in a folder filter.

      • Using the "Language" term to filter a folder may not make sense, but is nonetheless applied as though filtering a file. So if a folder's name happens to map to an available language, the term may match.

      • The "Legacy HFS file type" and "Legacy HFS file creator" values are always zero for folders, and therefore may not match.

    • If a folder matches a filter, there is no assurance that any of its subfolders will be processed, unless they match the same filter. Conversely, if a folder fails to match a filter, none of its contents (files or subfolders) will be examined. So if you have a directory structure like this:


      And you're using a folder filter of the form:

      Name is "Foo"

      And then you start a search of MyDirectory, then only the top-level Foo folder will be searched. Neither of its subfolders Mumble or Grumble will get searched, because they do not match the filter. Likewise, Bar will not be searched, nor will the Foo within it, because Bar and all of its contents are excluded by their failure to match the filter.

      For this reason, if you want to limit searches to folders and their contents by name, your best bet is to use the "Path" term:

      Path contains "Foo"

      Given the above, this would allow the search to examine MyDirectory/Foo/, MyDirectory/Mumble/, and MyDirectory/Grumble/. Note, however, that again, MyDirectory/Bar/ would not match this term, and so neither it nor MyDirectory/Bar/Foo/ would get searched. (Since filters can contain multiple terms, adding a "Path contains Bar" term would allow MyDirectory/Bar/ to get searched.)

  • The "Find Differences" command now provides an option for separate folder filtering. This follows the same rules as described in the change for Multi-File Search.

  • Added folder filtering controls to the "Options" panel for text factory windows. (Folder filtering follows the same rules as Multi-File Search and multi-file Find Differences.)

  • The options for Find Differences are now tabbed, to reduce clutter in the dialog box. As a result, you can now make the Find Differences dialog narrower (horizontally) than before.

  • The Find window gets a new button: "First". Clicking this button will always find the first match in the document, irrespective of where the insertion point or selection range may be.

  • There is a new command on the Search menu: "Find First". This command will always find the first match in the document for the current search string or pattern, using the options previously set in the Find window, irrespective of where the insertion point or selection range may be.

    BBEdit enables this command while keyboard focus is in the Live Search box; and using it in that situation will highlight the first match in the document for the current Live Search string/pattern.

  • There is a new command on the Search menu: "First Occurrence of Selected Text". If a selection exists and the global preference to "Display instances of selected text" is turned on (in the Editing preferences), then this command will display the first highlighted range of the selected text that occurs in the document.

  • There's a new command on the View menu: "Merge Windows". When a non-project editing window is active, this command will collect the open documents from all other non-project editing windows that are open behind it, and will then close those other windows. The end result is that all open documents are (...wait for it...) merged into the active window.

    If this command is disabled, it's because the active window is a document-based project (bbprojectd) or an instaproject (created by dropping a folder on the application), or there are no other qualifying document windows open.

  • The "Collapse Folds Below Level" submenu commands can have keyboard equivalents assigned to them, if desired, using the "Menus & Shortcuts" preferences.

  • "Show Working Copy Status" results windows now include a Reload button, which will refresh the results.

  • There is a GUI editor for color schemes. If you drop a .bbcolors or .bbColorScheme file on the application, a color scheme document window will open for that scheme. You can make changes to the colors, similar to the fashion in which the "Text Colors" preferences does it.

    In addition to the color swatches and applicable settings, a scheme editor window has two buttons: "Apply" and "Install".

    The "Apply" button will change the active color scheme to use the colors specified in the window. This is good for trying out a color scheme before installing it, or when testing out changes to a scheme. BBEdit does not save the changes made by the "Apply" button to your preferences.

    The "Install" button is useful for installing a downloaded color scheme, and will copy it to the "Color Schemes" folder in your active BBEdit application support folder.

  • The "Bookmarks" pane in the Setup window now gets "go to" arrows for each bookmark; clicking on the arrow will open that location in an FTP/SFTP browser.

  • BBEdit is now built using the macOS hardened runtime, for increased security protections when running on macOS 10.14.

  • The list items in the "Folders" tab of the Setup window are drop targets; you can drag files on to them and the file(s) will get moved to the appropriate directory. You can hold the Option key down to copy instead.

  • Added a lightweight language module for sandbox profile (SBPL) files; it folds matched pairs of parens and will color comments, strings, and some keywords.

  • Edit => Columns => New Document with Columns will make a new untitled document with the text of the selected columns (given a recognizable column-delimited file).

  • Added a "Remove Blank Lines" pattern to the factory default list of patterns, as an example.

    To add this to your own saved patterns if it's not already there, choose "Setup" on the BBEdit menu; then choose "Patterns" from the toolbar in the Setup window. Click the "+" button to add a new pattern. The "Search Pattern" string should be:


    Leave the "Replace Pattern" string blank. Then give the pattern a name and click the "OK" button.

  • A simple Swift language module is now included with the application.

  • A "sidebar width" scripting property is available for project/editing windows, which returns the width of the sidebar as a fraction of the window's overall width.

  • Plug-in language modules may now specify custom badge information for use in the function menu. Details on how this works are available in the updated language module developer notes.

  • Added a port of the "Xcode Dark" color scheme to the built-in list. Thanks to Andrew Carter for his contribution.

  • Print settings (via the Print panel) are now remembered per document, and applied as needed. They are saved in the document state.

  • The Open File by Name window now highlights each matching file name, based on its relationship to the search string.

  • Added a "Folders" submenu to the main application menu. This menu gives quick access to BBEdit's application support folder (the same list that is available in the Folders tab of the Setup window). This is useful on its own merits, but is of particular relevance in the application sandbox, in which support folders can be buried in locations that are not easily accessible from the Finder.


  • The "Recent Documents" section in the sidebar (in windows that have one) is gone; it has been replaced with a "recent" popup button in the action area at the bottom of the sidebar. The menu on this button shows recently opened documents, up to the maximum number specified in the Application preferences. The Show/Hide Recent Documents command on the View menu has been removed.

  • The behavior of the Currently Open Documents list in project windows has changed:

    • There is now an adjustable split between the Currently Open Documents list and the Project list.

    • It's no longer possible to completely hide the Currently Open Documents list; the command on the menu will toggle the list between a minimum size and the most recently used split position. (Clicking in the header of the Currently Open Documents list will do the same.)

  • The "Start Recording"/"Stop Recording" command has been removed from the Script menu; the system-level support for script recording never did quite work correctly in Mac OS X 10.6 and later, and there is no modern equivalent for the (now deprecated) APIs required to support it. Use the corresponding feature in the AppleScript Editor or Script Debugger instead.

  • Tidy support has been retired. This includes the Tidy submenu on the markup menu, Tidy scripting support, and Tidy operations in text factories. (If you run a text factory containing Tidy operations, those operations will now do nothing.)

  • Renamed "Collapse All Folds" on the View menu to "Collapse Top-Level Folds", because that's what it really does.

  • The "Process Lines Containing" dialog has been rewritten (and rearranged). It now also includes the search history and Grep pattern menus proximate to the search string.

  • The Entab/Detab dialog box has been rewritten (and its layout updated).

  • Rewrote the Add/Remove Line Numbers dialog.

  • Changed the "Installed Languages" button in the Languages prefs pane to match the standard system button appearance.

  • Rewrote and modernized the Prefix/Suffix Lines dialog.

  • Rewrote the "Hard Wrap" dialog box.

  • Rewrote the "Process Duplicate Lines" sheet.

  • Rewrote the "Sort Lines" sheet.

  • Cocoa-ized "Compare Against Previous Version".

  • The "encoding couldn't be guessed for this document" sheet has been Cocoa-ized.

  • Updated the "Clear Markers" dialog.

  • Rewrote the password panels used for privilege escalation in shell worksheets, password prompts for SSH, and other locations.

  • Rewrote the "Replace All" options panel for text factories. For bonus points the fields now use the default editor font and have scrollbars.

  • The sheet for adding Grep patterns from the Find or Multi-File Search window has been rewritten. You can choose a pattern from the popup menu to prefill the name (if you wish to replace an existing pattern).

  • Rewrote the Hex Dump dialog. Resource fork dumping has been retired.

  • The "Options" sheet in the Multi-File Search window has been Cocoaized.

  • The modal panel that appears when you click "Replace All" in the Multi-File Search window has been Cocoaized.

  • The "Show Results" option in the modal "Replace All" options panel has been removed; results for multi-file Replace All are always displayed.

  • Rewrote the Subversion => Show Revision History sheet.

  • The "choose a working copy" dialogs for Subversion operations (Commit, Status, Update) have been rewritten.

  • Rewrote the "Comment" sheet for text factory actions.

  • Rewrote the panel for creating a new item (file or folder) in a disk browser.

  • Rewrote the "New..." panel in FTP/SFTP browsers.

  • Rewrote several of the sheets used by the FTP/SFTP browser window and save panel.

  • The "Find Differences" dialog box has been rewritten. It should behave substantially as before, but now uses the standard Cocoa path controls. (It is in fact a Cocoa dialog box now.)

  • "Set Marker" now uses the new Cocoa panel.

  • Rewrote the "Find Definition" panel as a Cocoa sheet and improved the presentation a bit.

  • The "Find & Mark All" sheet has been rewritten as a Cocoa sheet.

  • "New..." for filters in the Multi-File Search or Text Factory windows now uses a window-modal sheet rather than an app-modal dialog box.

  • The Workspaces feature has been removed; it had become marginal over time and we have better ideas for the future.

  • #pragma mark and its friends in other languages now support the "Xcode style" syntax, in which a leading and/or trailing minus (-) separated from the rest of the mark text by a space, e.g. - this is a mark - will add a menu separator before and/or after the named mark, as indicated.

  • The Open File by Name window no longer attempts an additional search if no results were found and you hit the "Search" button. If the window isn't finding something that you think it should, please contact Tech Support for assistance.

  • The "Capitalize Sentences" option to Change Case is now smarter about capitalizing sentences that begin with something other than a word character. All of the case transformations are now locale-aware for better correctness with non-English and non-Roman writing languages.

  • Changed the mechanics of creating local cache files for FTP/SFTP temps. A file hierarchy for each account/server is created, and the file stored therein. The folder permissions for the hierarchy are 0700 (u+rwx,ao-rwx).

  • Antialiasing is now turned off for Monaco when used in editing views; this restores the legacy (and more legible) appearance on non-retina displays.

  • The application no longer uses Growl for notifications, since it now runs only on systems where Notifications are available.

  • When using the "Deploy Site" command on a project, the modification dates of uploaded files are tracked, and only files that have changed since the last deployment will be uploaded, to save time. (Any change to the file's content -- not the modification date -- will trigger a reupload.)

  • The shell window object class is no longer supported, since it is never created or used directly. (shell document instances may occur in various types of window.)

  • Restored the long-lost ability to open Finder "text clippings" (created by dragging text to the Finder from any application) into untitled windows by dragging a clipping on to the application's dock or desktop icon.

  • The "New" and "Old" nomenclature for the Find Differences UI has been replaced by "Left" and "Right".

  • In the Clippings system, the old expert preference ClippingsIgnoreTrailingReturns is ignored and no longer supported. Clippings may include the #inline# placeholder if desired, so that any trailing line breaks in the clipping are ignored.

  • When scanning directories to build the cache for Open File by Name and other purposes, ~/Library/ is now skipped to avoid spending time caching data that is not useful.

  • Changed the factory default for "Include dictionary words in completion list" to be NO.

  • The language-specific preferences overrides (via the upper list in the "Languages" preferences) can now include the display font; so if you like you use (for example) one font for Markdown, one font for Objective-C, one font for HTML, and so on. (This does not apply to intra-document language changes, e.g. CSS embedded in HTML; the document font will always be in the document's primary language.)

  • "Straighten Quotes" now straightens the "lower" Unicode single and double quotes.

  • Commands on the View => Text Display menu apply to both text views in the Differences window.

  • The about box has been rewritten.

  • Freshened the icons used in the HTML markup tools palettes.

  • The #! menu has been rearranged, and some behaviors for running #! scripts have been changed, as follows:

    • "Run…" has been changed to "Run with Options…". This brings up a dialog which lets you control what is done with the script output. The options to "Run in Debugger" and "Run in Terminal" have been removed, since you can do that explicitly from the #! menu itself (and scripts run that way don't get their output back into the application anyway).

    • The "Run File" command has been removed.

    • When running a script from a file, the application will set the current working directory to the one containing the script file. (The old "chdir to script's directory" option has been removed.)

    • "Check Selection Syntax" and "Run Selection Only" have been removed.

    • The AppleScript commands for running #! filters have been removed.

  • If you want to just reveal a file in the Finder by clicking on the document icon in an editing view's toolbar (and bypass the info panel), hold down the Command key while clicking on the icon.

  • You can now use wildcards in the Clippings floater search box. Note that the interpretation of the pattern is strict; "ab* will only match clippings whose names begin with ab, whereas a non-wildcard ab will match any clipping whose name contains ab.

  • Promoted the "Case sensitive" check box in the "Process Duplicate Lines" dialog box, because the setting affects duplicate detection even when not using a Grep pattern to determine the matching string.

  • The {Copy,Save} as Styled {Text,HTML} commands are now enabled when the front document's language is "(none)" or some other non-syntax-colored language, and will generate a single-styled run of text (or HTML code) as needed.

  • When creating a new document, the file is created without HFS type and creator metadata, as long as its name maps to something that is recognizable as a text file (either by internal language mapping or the system identifying its filename extension).

  • BBEdit no longer pays attention to the global system font smoothing setting when drawing text in text views. The existing application-specific expert preferences still work, though; so use those if you need to adjust font smoothing in the application.

  • When a #! script is run, the following environment variables are now set if applicable:

    BBEDIT_ACTIVE_PROJECT: Path to the frontmost (z-order) project document if it's on disk BBEDIT_INSTAPROJECT_ROOT: If the frontmost (z-order) project is an instaproject, this is set instead to the path of the folder represented by the project.

  • Objective-C @property declarations are now flagged as prototypes, so they will only appear in the function menu if "Show function prototypes" is turned on in the Appearance preferences.

  • The application will no longer use the TUTX, utxt, or UTF8 HFS file type codes as determinants of the text encoding used inside the document.

  • The single-purpose "Subversion" action bar item has been removed from disk browser and project windows. The contextual-menu items remain.

  • The "Go To Line" panel has been rewritten; and you can now enter a line number of the form "xx:yy", in which the "yy" is a character offset into the destination line. If the character offset exceeds the number of characters on the line, the insertion point will be placed at the end of the line.

  • Changed the "Include" options in the Create Table Shell sheet to read "Add", to make their purpose clearer.

  • The "Go To Next Conflict/Go To Previous Conflict" commands that were on the Subversion menu have been consolidated into a single pair of "Previous Conflict" and "Next Conflict" on the Go menu, and will find conflict markers for Subversion, Perforce, and Git in the active document (all three systems use the same conflict marker format).

  • The "Use symbol and text substitution" option has been removed from the Editing preferences as well as from the language-specific settings panel, and the previous behavior (automatically inserting substitutions) has been consigned to the dustbin of history.

  • "Rename" in project windows is now retitled as "Rename in Project", and the panel in which you enter the item's new name now makes it clear that renaming it in the project does not affect the item on disk. (It never did.)

  • Subversion contextual-menu commands are now hidden when the selected item(s) are not part of a Subversion working copy.

  • Made some changes to generation and management of preview temporary files (when using Markup -> Preview [in a web browser]):

    • When possible, the temp file is given a name derived from the document's name, and created in the same directory as the document. This way you can preview multiple files from the same directory without them stepping on each other.

    • If the document has not been saved to disk, it will be created in a temporary-items location designated by the OS.

    • It is now possible to preview non-HTML files in web browsers with the same results as live previews ("Preview in BBEdit").

    • Saving or closing the document will delete the preview temp file.

  • When generating a table shell (Markup -> Tables -> Create Table Shell), BBEdit will now generate <thead> and <tbody> containers if "Add table header" is turned on.

  • "Move Lines Up", "Move Lines Down", and "Delete Lines" are now enabled for multi-line selections, even when the selection does not end on a line break. (Whole lines are still moved or deleted.)

  • Changed the way we launch Dash so that it can decide whether it wants to be in the foreground, or not.

  • The File -> New -> HTML Document dialog box has been modernized, mostly to work around OS cosmetic bugs.

  • If a project is open which contains site settings, File -> New -> HTML document will take its initial values from those settings.

  • Removed vestigial "Change clipping set to match document's language" from the Languages preferences.

  • The fourth command on the Search menu is now always "Search in Project or Disk Browser" (its title when disabled). It is only available when a project or disk browser is the active window, and when enabled displays either the project's name or the root directory of the disk browser. Selecting this command will activate the Multi-File Search window with the appropriate item selected as the search location.

  • The previous "Arrange" item on the Window menu has been renamed to "Cascade Windows" to describe what it does. The modified version to "Tile Two Front Windows" remains available, on the Arrange submenu.

  • BBEdit now supports the use of iCloud Drive for sharing application support and setup items, as well as for a shared backups folder. We recommend that you use Dropbox for support folder sharing instead.

  • There's a new settings group in the Appearance preferences: "Sidebar". The controls here determine the default behavior of the files sidebar in editing, project, and Differences windows.

    Note: Using "Save Default Text Window", "Save Default Project Window", or "Save Default Differences Window" sets the default visibility for the sidebar in windows of each respective type; this always overrides the preference.

  • There is a new folder-comparison option in the Find Differences dialog box: "Only compare items in common". When you turn it on, BBEdit will only list items in the results that exist in both of the folders being compared. This option is also available to the scripting interface.

  • There is a new setting in the Text Colors preferences: "Differences". This color setting determines how differences are highlighted in editing views when you select them in a Differences window. (The color for differences within a line is derived from this, by darkening or lightening as needed.) If a custom color scheme does not include a Differences color, BBEdit will use a dark gray or light gray (depending on the scheme's background color) instead.

  • Synchro Scrolling is now enabled (and on by default) for Differences windows: when turned on, scrolling either text view in the window will scroll the other one. Synchro Scrolling can be turned off for Differences windows; and if you would like it to be off for all new Differences windows, turn it off and then choose "Save Default Differences Window" from the Window menu.

  • Things that are highlighted in the text at various times (matches for selected text, Live Search results, spelling errors, and diffs) are now marked in the view's vertical scroll bar. The tick marks indicating matches for selected text may be turned off in the Editing preferences, if desired.

  • The GUI setting for extra space in text views, which was removed in 10.0, has been restored to the Editing preferences.

  • Did you know that you could set BBEdit up to use the Escape key to trigger completions? That's OK, nobody else did either. There's now a setting in the Keyboard preferences to enable this. Note that it works at cross purposes with both Emacs emulation and using the Escape key to exit full screen mode; that is, if you turn on Escape-key completion triggering, the Escape key will only work to trigger a completion, and will not function as either the Emacs meta key nor will it exit full-screen mode.

  • There is a new preference in the Keyboard preferences, subordinate to Emacs emulation: "Enable meta sequences". This is off by default, so that the Escape key is not intercepted and can be used to exit full screen mode when running on OS X 10.10 or later.

    To restore the previous Emacs emulation behavior (in which command sequences beginning with a press of Escape can be used), turn this preference on, at the cost of not being able to use the Escape key to exit full screen mode.

  • Added control to the Editing preferences so that instances of the selected text may be highlighted if desired, rather than underlined.

  • The FTP/SFTP connection panel now has a Path field, so you can see the directory that will be set once the connection is completed.

  • The FTP/SFTP connection sheet now has an explicit field for specifying the port to use, if you want to connect to an alternate server port.

  • The "Insert Folder Listing" command now provides options to control whether the generated listing is hierarchical (the original style), or flat (which lists the full path of every item). The "Include hidden items" option is back after a long absence, as well. These settings are saved, and will apply when dragging a folder in to an editing view as well.

  • When piping data into the bbedit tool, you can now add a line number specifier, and the and the insertion point will be placed at the start of the indicated line in the resulting document. For example:

    ls -la | bbedit +5

  • Added a new command to the Edit menu: Start Speaking. This command will speak the selected text in the document; if there is no selection range it will speak the entire document. If the document is empty, this command is disabled. When speaking is in progress, this command reads "Stop Speaking" and will stop the in-progress speech.

  • Added new command to the Edit menu: "Paste & Match Indentation". When pasting text, this command will attempt to indent it to the same point as the line on which you're pasting (or if that line is empty, the most recent non-empty line). The factory default for this command is Cmd-Opt-Shift-V. You can change the keyboard equivalent using the Menus & Shortcuts preferences.

  • Enabled {Copy, Save} as Styled {Text, HTML} for the edit fields in the Find and Multi-File Search windows, because why not.

  • Worksheet views no longer have the "sudo" icon in the toolbar, since it is now redundant (since 11.0 you can use sudo in commands as you would in a terminal window).

  • The "Find Differences" dialog box has been reworked.

    The old path controls are dragged to the curb, and have been replaced with edit fields. When you choose a file, its path is entered in to the edit field. You can leave it alone, or make edits to it to choose alternative locations.

    The image to the right of each path shows a file or folder icon if the path refers to an item on disk; if the item indicated by the path does not exist, the image will show an alert icon.

    The image wells are also drop targets: you can drag a file or folder in to specify it. Finally, double-clicking in an image well will reveal the selected item in the Finder.

    The "Compare: ( ) Files ( ) Folders" switch is gone. Find Differences will figure out what you want to do based on the items you provide. (You can only compare a file to a file or a folder to a folder.)

  • The "Enable" popup menu in the Open dialog (for filtering by file type) has been removed. "Show hidden items" now affects file filtering behavior as well as making hidden items visible; when "Show hidden items" is turned on, any file is enabled and may be opened.

  • The Edit and Text menus have been rearranged, as follows:

    • All of the selection commands, except "Select All", are now on a "Select" submenu of the Edit menu.

    • The commands related to line insertion and movement are now on a "Line" submenu of the Edit menu.

    • The "Text Options" and "Printing Options" commands have been combined into a single "Text Options" command, which lets you adjust both sets of options in a single panel.

    • The spelling-related commands from the Text menu are now on a single "Spelling" submenu on the Edit menu.

  • When viewing documents in Differences windows, differences ranges are now always highlighted and can be seen when scrolling through the document.

  • The "Apply to Left" and "Apply to Right" commands (and buttons) no longer pay attention to the selected range(s) of text in the respective documents. Instead, they will apply the difference based on what is reported in the differences list (and highlighted using the Differences color).

  • The "Un/Comment" command has been split into two commands: "Un/Comment Lines" and "Un/Comment Block". The difference is whether commenting is done using the language's line-comment delimiter, or its block-comment delimiters. Thus, you get exactly what you asked for, without any confusion or guessing.

    The one circumstance under which your request is overridden is if you request line comments in a language which doesn't have them (e.g. HTML or XML), or request block comments in a language which doesn't support them (e.g. Perl, CSS). In that situation, the commands will behave identically and apply whichever comment delimiter is available.

    The old PreferLineCommentsWhenCommenting expert preference no longer has any effect.

  • Changed the height of the action bar (at the bottom of the sidebar) so that it lines up with the height of the status bar/scrollbar.

  • The action areas at the bottom of the sidebar in disk browsers, projects, and editing windows now use an appearance that matches the rest of the window adornments.

  • No more grip strips in the action area of the sidebar. (The effective area for dragging the splitter is the same, though, and the cursor will change in just the same way it did before.)

  • Added a preference to the "Sidebar" group in the Appearance preferences: "Show icons". This can be turned off to recover horizontal space or reduce visual load in sidebar lists.

  • Documents with unsaved changes are now indicated in the side bar with a ring around the close widget, rather than by darkening the document icon.

  • Rearranged the folder comparison options in the Find Differences dialog so that more frequently needed ones are at the top of the column, rather than being mixed in with ones that are less likely to be used often.

  • The side bar in document and differences windows is now uniformly referred to as the "Sidebar", as in "Show Sidebar" and "Hide Sidebar".

  • Made some edits to the Appearance preferences to clarify the "show sidebar" defaults.

  • The performance of Zip file filtering has been somewhat improved, and so the InspectUTIWhenFilteringZipFiles expert preference is no longer used. (The Expert Preferences help has been amended accordingly.)

  • Removed the rule between the line number bar and the fold gutter (when both are visible) for a cleaner appearance.

  • The bbedit command-line tool has two new behaviors that affect the use of the --maketags option:

    1. If you set an environment variable named BBEDIT_CTAGS_PATH to be an explicit path to a ctags tool, and an executable file is found there, bbedit --maketags will use it to generate the tags file.

    2. If BBEDIT_CTAGS_PATH is undefined or nonexistent, bbedit --maketags will look in your $PATH for a ctags tool; if one is found, --maketags will use that to generate your tags. (Note: /usr/bin/ctags is specifically excluded, because the default ctags provided with OS X does not generate the correct tags file format or support the necessary options.) In this way, you can install updated versions of ctags on your own (in /usr/local/bin/ or some other location outside of /usr/bin/) and use them in preference to the one provided for you in the application package.

      If no ctags is found in your $PATH, bbedit --maketags will use the version built in to the application package.

  • When right-clicking on a folder in a project sidebar, there is a new group of commands on the contextual menu: "Check Syntax", "Check Links", "Update", and "Update Images". These perform the equivalent of (respectively) "Check Folder Syntax", "Check Folder Links", "Update Folder", and "Update Folder Images".

  • Document state storage no longer reads settings out of file resource forks, nor writes into them. If the UseResourceForkForDocumentState is turned on, the application will use extended file attributes for storing this information instead. (Any document settings stored in legacy resource forks will be ignored.)

  • Made a change so that the application no longer requests user interaction when attempting to resolve a reference to a document's file on disk (which would happen in cases where the document's backing file was deleted).

  • Language modules can now designate certain run kinds as "special" for purposes of balancing. When computing balance points (either while typing or in response to a "Balance" command), these runs are taken into account in a fashion similar to what has been done historically for strings and comments.

  • For language module developers: special balance runs are listed in the module's plist using a new key: BBLMBalanceSpecialRunKinds. This is an array of strings, each of which corresponds to a run kind generated by the module which should be skipped over when balancing (or balanced within, if the initial balancing point is inside of one of these runs). Here is an example for JavaScript:


    In this example, JavaScript regular expressions are designated as a "balance special run kind" so that they don't interfere with the balancing mechanics.

    The following run kinds are treated as special by default, so you should not include them in your BBLMBalanceSpecialRunKinds:


  • Open File by Name will now search Xcode for system framework headers, rather than relying on previous installation of the Xcode command-line tools package (which places framework headers in /System/Library/Frameworks/).

  • It is now possible to use the Escape key to exit full-screen mode (on systems that support that behavior, namely OS X 10.10 and later). Note that in order for this to work, you must turn off both Emacs meta sequence support and Escape-key completion triggering, in the Keyboard preferences.

  • The "Project" section in project windows can now be collapsed in order to maximize available space for the "Currently Open Documents" section.

  • When closing a window containing multiple documents, the "Close documents?" alert will now list the first few documents in the window, to help make an informed decision.

  • When using "Close All Documents" or closing a window containing multiple documents, if any of the documents require saving, you are now prompted to save them as a batch, rather than one at a time.

  • When running a multi-file Replace All, the confirmation dialog now runs as a sheet on the Multi-File Search window, rather than as an application-modal dialog.

  • "Use Selected Text for Find (grep)" and "Use Selected Text for Replace (grep)" will now escape control-character sequences (tab, line breaks, and other unprintables) in the resulting Grep pattern.

  • The horizontal scrollbar in text views is now only visible when it's needed in order to scroll the text horizontally. ("All right, I won't poison your dinner. THIS TIME.")

  • Malformed HTML comments involving unbalanced pairs of dashes will now trigger an error report from the HTML syntax checker. (They're already noticeable by incorrect syntax coloring.)

  • The project site settings do not require a name, so the options panel no longer includes a name field.

  • If you want to hide vendor-prefixed names from the completion list in CSS/SCSS documents, you can now use this expert preference to do it:

    defaults write com.barebones.bbedit CSSExcludeVendorPrefixedCompletions -bool YES

  • The factory default for FullScreenWindowsHogScreen is now on, so that clicking the "enter full screen" button will cause the window to take up the entire display, irrespective of whether it's a good idea to do so. You can hold down the Command key when clicking the "enter full screen" button to have the application make that decision based on the current width of the window; complete details are in the Expert Preferences help.

  • The following changes have been made to the editing view structure:

    1. The toolbar has been, uh, sent to live on a farm upstate.

      The document icon is now on the right-hand end of the navigation bar and behaves as before when clicked.

      The Text Options icon is now at the left side of the navigation bar.

    2. The text used to draw items in the navigation bar, status bar, and line number bar has been desaturated a bit.

    3. The "current document" navigation bar item now shows the document's name followed by as much of the document's parent path as possible. Clicking anywhere on it will open the menu that lets you switch to other documents, as before.

    4. The document navigation arrows have been retired. "Previous Document" and "Next Document" on the View menu still work as before.

    5. The Current function/function menu has been moved to the right-hand side of the navigation bar.

    6. The overall appearance of the navigation and status bars has been cleaned up quite a bit.

  • The Appearance preferences have been adjusted to account for the changes in the navigation/tool/status bar structure.

  • Cheated some space from the Cursor Position status bar item, in order to make more room in the status bar. The "Line" and "Col" indicators are now "L:" and "C:", respectively.

  • Removed the "Tool bar" option from the Text Options sheet.

  • The sidebar close widgets for modified documents now show a darkened "x" in the center as well as a ring around the outside.

  • Differences windows now show document paths in the navigation bar, just like the other windows, and thus no longer have a toolbar.

  • Reduced the navigation bar items in Differences window text views to just the essentials.

  • The action menu at the bottom of the sidebar duplicates everything from the contextual menu, and its icon caused confusion with the new Text Options item icon, so it's gone now.

  • Rewrote the Subversion working-copy dialogs to use a text field for the path, as is done in Find Differences. Good-bye, NSPathControl, and don't forget to write.

  • Compiled language modules should be updated to be line-ending agnostic; BBLMInterface.h includes a new function: BBLMCharacterIsLineBreak, which may be used to assist in transition. Codeless language modules are unaffected by this change.

  • The "Classic Mac (CR)" line ending type is now described as "Legacy Mac OS (CR)" in the UI.

  • Operations that select a line (such as providing a line number to the command-line tool, or Open Selection with a file:line specification) will now place the insertion point at the beginning of the indicated line, rather than selecting the entire line.

  • Rewrote the "Info" sheet in FTP browsers to eliminate some legacy code. Operation is as before, but the Permissions options are arranged a little more rationally and have "Save" and "Revert" buttons.

  • Changed the behavior of the "New text document" setting in the Application preferences so that a new document gets created when activating the application only when no other text documents are open. (If other windows are open when the application is brought to the foreground while already running, no new document gets created.)

  • The scratchpad window and Unix worksheet window application properties have been changed; they are now scratchpad document and Unix worksheet document, and are returned as document references instead of windows.

  • Fixed bug in which accessing the scratchpad document and Unix worksheet document application properties via the scripting interface would open their associated windows.

  • If flake8 is installed (which you can do using pip install flake8, see the pip website for more details), "Check Syntax" for Python scripts will use it instead, since it provides better diagnostics overall.

  • Made a change so that files processed during multi-file operations are processed in order by name, which may differ from the order in which the file system provides them.

  • Made a change to improve file filtering performance in the Open panel when many documents are open.

  • Retired the internal "68K Assembler" language module.

  • BBEdit now uses the line feed (ASCII decimal 10) as line breaks in its internal representation for text in open documents, instead of the carriage return (ASCII decimal 13) that was the standard Mac format for many years. This (theoretically) reduces the time required to open documents, since in the normal case, no conversion is necessary; it also eliminates conversion logic when copying and pasting text, since LF-delimited text is also the standard interchange format on the Clipboard.

    As before, you may use \n and \r interchangeably in search strings and Grep patterns. (The latter usage is for compatibility with old versions of BBEdit.)

  • The built-in ctags and readtags tools are now built from a fork of Universal Ctags, which includes various additions and improvements to ctags generation and language support. (Note: There are some regressions in Objective-C/C++ support; see here for details.)

  • The "Hex Dump Front Document" command no longer provides a (confusing) choice of whether to dump the document's contents or its file on disk. The command will always dump the contents of the document, and now provides control over which encoding to use when interpreting the document's contents.

  • The "Hex Dump File" dialog no longer uses that awful path control.

  • Since Unix line breaks are now the norm, the -u/--create-unix options to bbedit are now treated the same as -c/--create, and will write out an empty file. The man page has been updated to reflect this.

  • Made a change so that Option-clicking in the close box of a window behaves as though you had pressed Command-Option-W to close all of whatever is appropriate. In practical terms, this means that it's more like "Close All Documents" when a document window is in front, which is more useful since it won't prompt you to close each multi-document window with a sheet.

  • Fold ranges in Markdown documents now include blank lines at the end of the range.

  • Moved the "License" command further down the application menu.

  • "Consolas for BBEdit" is no longer the factory default font setting, nor is the font included in the application package. If you have installed Microsoft Consolas by other means (it is available from Monotype), BBEdit will use it as the default font; otherwise it will default to an appropriate choice. (Menlo is the choice of last resort.)

  • Items in the function menu are now badged according to their type.

  • Removed the "Unicode" option for the Change Line Endings text factory action.

  • Unboxed the settings in the "Text Files" preferences.

  • There are enough "Paste" items that there is now a submenu for them, and "Paste & Match Indentation" and "Paste Column" have been moved there.

  • "Sort Lines" normally collates lines using Unicode collation order, which is fine as long as you don't expect case sensitivity to take precedence and return meaningful results. If you would prefer to sort lines using strict character code order, you may do so by turning on "Case sensitive" and turning off "Numbers match by value".

  • When locating Unix tools for various purposes, BBEdit will now honor your PATH environment variable, if it is available and not empty. This should result in more predictable outcomes when using aftermarket installations of open-source tools as well as for alternative installations of tools included with the system (such as Python).

    Note that if your PATH contains entries relative to the current working directory, those entries are not likely to work, since $PWD has underfined meaning for a GUI application. Absolute paths will work, though. If you change your PATH, you will need to quit and relaunch BBEdit for the changes to take effect.

  • The "Save [a Copy] to FTP/SFTP Server" panel has been rewritten. For bonus points it now runs window-modal instead of application-modal.

  • The FTP/SFTP browser window has been rewritten. There are some slight layout changes, but the chief improvement is that folders can now be twisted open to reveal their contents.

  • Differences windows, live preview windows, and FTP browser windows now use the system-provided "refresh" icon image, rather than the old circular green arrow.

  • Added explicit built-in languages for Tab-Separated Values and Comma-Separated Values. Their default extension mappings are (respectively) .tsv and .csv.

  • When using a dark color scheme, the various window adornments are adjusted so that they blend better with the editing view. This also affects windows which are not necessarily editing windows.

  • When starting the application up with no existing preference settings (and none were migrated from TextWrangler), BBEdit will now set the "BBEdit Dark" color scheme as the factory default. If you prefer a different scheme, you can choose it in the "Text Colors" preferences.

  • Operations in Text Factory windows now include a check box for turning the operation on and off.

  • Comparisons done by means other than through the Find Differences dialog will use the last settings specified in the dialog, rather than falling back to factory defaults. This includes the "Compare" contextual menu item, "Compare Against Previous Version", "Compare Against Disk File", and various forms of SCM revision comparison.

  • When performing an Undo or Redo and the selection range has been changed, the undo/redo operation will select the text that was affected, rather than updating the Undo/Redo state to include the actual current selection range. If you preferred the old behavior (as implemented from the beginning of time up through BBEdit 11.6), it is available by setting the expert preference LegacyUndoSelectionBehavior to YES.

  • The legacy preference data location of ~/Library/Preferences/com.barebones.bbedit.PreferenceData/ is no longer supported. If you are upgrading from an ancient version of BBEdit, you can copy and rename this folder to ~/Library/BBEdit/.

  • Use a star instead of an up-arrow to indicate menu command items that are available after the evaluation period only with a paid license (or subscription, in app store versions).

  • If a Dropbox configuration file is available, BBEdit will try to use it to locate your Dropbox folder (for application support items).

  • Changed the factory default setting for Editor_SoftWrapLengthThreshold to 48MB (up from 5MB).

  • Plug-in language modules now have an opportunity to influence auto-pair generation while typing. This is done with the kBBLMAutoPairMessage, which modules can implement by examining the parameters in the fAutoPairParams member of the parameter block.

  • The "Go to Named Symbol" sheet now uses the font of the editing view as its list display font.

  • Made some improvements to the resolution logic when choosing items off the Includes menu for C-family languages:

    • If /usr/include doesn't exist, BBEdit will now look inside usr/include relative to the newest available Xcode SDK (if Xcode is installed).

    • Additional effort is made to resolve file-relative references to included files.

  • The Emacs mode line parser no longer generates nor pays attention to properties that can no longer be set on a per-document basis (such as status/navigation bar visibility and other aspects of the window chrome).

  • In cases where a language module does not generate its own number coloring, BBEdit will now color decimal (integer) numbers using the appropriate color from the active color scheme.

  • The line number bar in editing views will now always use the editor font. The UseEditorFontForLineBar expert preference is no longer supported. The maximum size used is limited in order to work around layout issues which arise when trying to resize the editor font for use in the space allowed.

  • During multi-file search/replace operations, the "Searching" progress name will reflect the name of the folder being scanned, unless a file is actually being searched. This improves progress feedback when searching very large folders with relatively few candidate files (as when using a file filter).

  • Made a change so that the line number text is never drawn in a text size larger than the editing view's display font.

  • Adjusted the weight and spacing of the font used for drawing the line number bar.

  • Improved the presentation of Xcode projects and saved Spotlight searches (Finder smart folders) in the Multi-File Search window by removing their filename extensions.

  • The C/C++/Objective-C/ObjC++ function scanner now generates additional information for the function menu.

  • The built-in Markdown language module now uses cmark to convert Markdown to HTML. This improves support for previewing and exporting Markdown code which goes beyond the original Markdown specification and behavior.

    cmark is included under the terms of the 2-clause BSD license, as follows:

    Copyright (c) 2014, John MacFarlane
    All rights reserved.
    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
      copyright notice, this list of conditions and the following
      disclaimer in the documentation and/or other materials provided
      with the distribution.
  • Made changes to the HTML/XML function scanner so that it generates a prettier function menu.

  • The "Go to Named Symbol" panel will display badges consistent with what the function menu shows, where possible.

  • Added keyboard equivalent defaults for Jump Points/Next and Jump Points/Previous.

  • The alert for "Clear Undo State" is now window-modal instead of application-modal.

  • Removed "Show" from the "Scratchpad" and "Unix Worksheet" commands on the Window menu, because those are not toggles, and will always bring the appropriate window to the front.

  • We have reorganized the "Appearance" preferences pane, moving the "Match appearance" check box to the top and making room for an annotation below it. The "Show icons" setting for sidebars has been squeezed out and moved to the Expert Preferences help (the setting is still honored).

  • We have changed the order of menu items in the file filter UI: legacy HFS properties are now at the end of the menu (and some day may go away entirely, so be prepared). In addition, since folders may be used for either files or folders, the word "File" has been removed from the nomenclature except where a term applies specifically to files only (such as "File contents").

  • The "Open" button for results windows (Multi-File Search, SCM operations, and others) has been deemed surplus to requirements and we have removed it from these windows. (You can still open items from a results window many different ways: return or Enter while the list has focus; or double-click on an item.)

  • The Text Options popover (under the gear in the navigation bar) will show an indication when settings in the document you're editing are affected by a .editorconfig file, because changes to affected settings are lost when closing the document.

  • We have retired the built-in Perforce support. You can certainly continue to use BBEdit to edit files under p4 control, and it will continue to function as a P4EDITOR and P4DIFF helper (set those configuration variables to "bbedit -w" and "bbdiff -w", respectively).

  • The Multi-File Search window now shows enhanced summary information; it will provide a full summary of all of the items being searched. There's a scroll bar in case you need it.

  • Added some vertical space to the "Enter License" panel so that there's more room for helpful text.

  • Rearranged the "View" menu slightly, so that it's a little shorter overall. The "Text Display" submenu is now at the top, followed by a "Window Appearance" submenu which contains the previously inlined commands for turning on and off various elements of the window display.

  • When running a Unix script or executable from the Scripts menu, the selection range of the active text document is available by reading from stdin. If there is no selection, the entire contents of the active text document are provided.

  • The "Exclude matches" option for multi-file searches is in the window itself, rather than being hidden behind the Options sheet.

  • In the Multi-File Search window, when "Exclude matches" is turned on, the summary now includes an annotation, so that you'll be reminded why your searches "don't find anything".

  • Cleaned up the "Folders" pane in the Setup window. The arrows are now gone, and each folder icon is a clickable button that does what the arrow used to (and more reliably).

  • Removed the Keyboard preference setting to control Option-Yen behavior. The entry of ¥ on Japanese keyboards is switchable for the applicable input method in the Keyboard system preferences.

  • When running on macOS Mojave (10.14) or later, the Appearance preferences contain an option: "Match application appearance to selected editor color scheme". When enabled, this will do what it says: when the application color scheme is dark, BBEdit's windows and UI elements will use the Dark Mode appearance; otherwise the standard appearance will be in effect. This operates irrespective of the system-wide appearance setting.

    BBEdit will override this setting when you have selected the “Dark” appearance in the General system preferences. This is done so that BBEdit's primary interface can match the system appearance (dialog boxes, palettes, and so forth) will all use Dark Mode when it is turned on system-wide.

    If there is some reason that you would prefer that BBEdit's presentation always match the selected editor color scheme irrespective of whether Dark Mode is on, you can change this:

    defaults write com.barebones.bbedit UseSystemAppearanceWhenInDarkMode -bool NO

    We recommend restarting BBEdit after you change this setting.

    On macOS 10.13 and earlier, this option remains "Match window appearance to selected editor color scheme", and although editor windows will be darkened appropriately, some windows are excluded due to limitations in the older OS versions.

  • The "Save Scheme" button in the "Text Colors" preferences has been changed to "New...", and will create a new color scheme document using the current settings.

  • The "New Disk Browser" command prompts for the directory to browse, rather than always opening in the user's home directory (which would not be possible once macOS sandboxing rules go into effect).

  • Changed the default order of items in the Setup window's toolbar. The toolbar is also configurable, so you can rearrange items as desired (or remove them, although that is probably not a good idea).

  • We have removed support for size-based control of font smoothing; the OS has not supported size-based smoothing controls for a very long time, and the mismatches between our controls and the OS font implementation have been causing problems. The Expert Preferences help has been updated accordingly.

  • Changed the "files visible" AppleScript property of project/editing windows to "sidebar visible" to match the UI nomenclature.

  • Since a Swift language module is built in, BBEdit advertises its ability to edit Swift source files to the OS. What the OS does with that information is completely up to it.

  • On Touch Bar systems, the touch bars for the supported windows are now customizable, so you can rearrange or remove items as desired. (Use the "Customize Touch Bar" item on the View menu.)

  • If a file has a extended attribute, BBEdit now assumes that it is a text file for purposes of file filtering (for various use cases). This test gets applied after filename extension mapping and other file metadata tests have failed, but before examining the file's content.

  • Pushed some pixels to improve the appearance of the "clippings" badge used for completions (and other circular badges that may appear in the function menu or elsewhere).

  • The bbdiff, bbresults, bbedit, and bbfind tools are now built with the hardened runtime and appropriate entitlements for enhanced security on macOS Mojave.

  • While drag-scrolling (that is, making a selection with the mouse and dragging it beyond the view boundaries, or using drag-and-drop for the same purpose), BBEdit will throttle the vertical scrolling speed. If you would prefer that it not limit the scrolling speed in this situation:

    defaults write com.barebones.bbedit ThrottleVerticalScrollingSpeed -bool NO

  • BBEdit is now using an updated version of the PCRE regular expression engine which includes significant architectural rework. There are no changes to the pattern syntax; but the new version addresses various performance bottlenecks and limitations that were present in older versions. Among other things, it should now be possible to do Grep searches in files that are larger than 2GB.

  • If multiple items in a folder-backed menu (Scripts, Text filters, etc) have the same base name, their names will appear with the filename extension, to help resolve confusion which might confuse if (for example, purely hypothetical of course) you have "" and "Markdown.textfactory" in your Text Filters folder.

  • Made changes so that the default height of text factory, color scheme, and FTP windows is less than the height of the display and the width is appropriate to the window's intended use.

  • The "Find Differences" now limits the maximum number of open text documents that are presented in the "Recent" menu next to each file entry area. The overflow is now provided on a submenu below the top few items.

  • Since page setup adjustments are now included in the Print panel, we have removed the "Page Setup" command from the File menu.

  • When you opt out of reopening documents that were opened via the built-in FTP/SFTP support (either by changing the preference in Application preferences; or by clicking "Skip" when prompted at startup), BBEdit will opt out of reopening FTP/SFTP browser windows as well.

  • The command-line tools installer will attempt to install the tools without requesting administrator credentials; only if this fails will it prompt you for administrator permissions. That way, if /usr/local/bin/ exists and is writable by you, no privilege escalation is required.

  • Made a change so that double-clicking anywhere in a syntax-colored number will select the entire number, even if it contains a decimal point (which would otherwise be a word break).

  • When running on macOS 10.14.1 or later, BBEdit now uses built-in OS support for performing operations which require privilege escalation, namely authenticated saves and (if escalation is necessary) installation of the command-line tools.

  • If the application resets the evaluation period, the splash screen at startup will now advise you of this, via an alert. (The evaluation period gets reset when we've made significant changes to the application which we believe would warrant a full trial.)

  • Reworked the way BBEdit runs AppleScripts from the built-in Scripts menu and other sources, for sandbox compatibility and to resolve various longstanding issues.

    AppleScripts are now run in a separate process, which means that any previous differences in scripting behavior as the result of running a script within BBEdit or from the Script Editor should be a thing of the past.

  • If "Keep folders on top when sorting by name" is selected in the Finder's preferences when BBEdit starts up, FTP browser windows will now obey the option and behave accordingly.

  • Changes to expert preferences from the command line (via "defaults write") are allowed to take effect immediately (except in documented cases where the preference change is intended to apply at a specific point in time, such as when restarting the application).

  • The panel that appears when using "New Disk Browser" from the File menu now contains a helpful prompt.

  • The Save panel used for in response to "New Project Document" now has a prompt to clarify its purpose.

  • There is now an expert preference for controlling SSH "keepalive" behavior. If you have problems with your SSH server closing the connection after a period of non-use (which will subsequently cause errors in BBEdit), you can tell BBEdit to send a periodic "keepalive" message to while connected to the server.

    This is configurable per host, per domain, or globally. Determining the appropriate value may require some experimentation, but 90 seconds is probably a good starting point.

    # only for ""
    defaults write com.barebones.bbedit -int 90
    # only for servers in ""
    ast">defaults write com.barebones.bbedit -int 90
    # global preference
    defaults write com.barebones.bbedit SSHServerKeepaliveInterval -int 90

    We recommend that that you adjust this setting per host whenever possible, rather than globally or per-domain.

  • The "Text Options" sheet gets a setting for the tab width, and an indicator when the file's settings are managed by EditorConfig.

  • BBEdit-specific print settings are now available in the Print panel when printing a text document. As a result, we have removed the "Printing" section from the "Text Options" panel, and restored the latter to its former simplicity.

  • The displayed path for files opened from within Zip archives or tarballs is now abbreviated using a tilde, if it is within the current user's home directory.

  • Adjusted the built-in FTP client to use the MLSD command to obtain directory listings, if the server supports it. If not, BBEdit will fall back to more primitive methods. This corrects cases in which some FTP servers do not return complete listings, most notably omitting files whose names begin with a period (.).

    On some servers, however, MLSD works, but does not return the same results as the older methods. Therefore, there is a method to disable use of MLSD:

    # only for ""
    defaults write com.barebones.bbedit -bool YES
    # only for servers in ""
    defaults write com.barebones.bbedit -bool YES
    # global preference
    defaults write com.barebones.bbedit FTPDisableMLSD -bool YES

    We recommand that that you disable MLSD per host whenever possible, rather than globally or per-domain.

    Note: In some cases, the server may be configured to never list files whose names begin with a period (.). In that case, there is nothing you can do in BBEdit to have these files listed in FTP/SFTP browsers, and you will need to contact your server administrator or hosting service to have the server configured appropriately.