You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Improving on Vim's native sentence text object and motion
Detecting sentences can be tricky, esp. when the words and punctuation of
a sentence are interspersed with abbreviations, “quotations,”
(parentheses), [brackets], the __markup__ from **lightweight**
markup languages, and hard line breaks.
While Vim’s native sentence text object is quite capable, its behavior
remains hard-coded and cannot be extended. Thus arises the need for
a specialized text object offered by this plugin.
Features of this plugin:
Sophisticated sentence text object, supporting selection, motion, and jump
Implemented with regular expressions via the vim-textobj-user plugin
Supports sentences containing common abbreviations (configurable)
Support for sentences containing typographical characters, incl. quotes,
em dash, etc.
Support for lightweight markup languages (markdown, e.g.)
Buffer scoped configuration
Installation
You can install using your favorite Vim package manager. (E.g.,
Pathogen, Vundle, or Plug.) If you are using
a recent version of vim or neovim, you can also use native package
support. (See :help packages.)
This plugin has an essential dependency that you will need to install:
Because prose benefits more than code from a sentence text object, the
behavior of this plugin can be configured per file type. For example, to
enable sentence in markdown and textile files, place in your
.vimrc:
setnocompatible" this may already be in your .vimrcfiletypepluginindenton" ...and this tooaugrouptextobj_sentenceautocmd!autocmdFileTypemarkdowncalltextobj#sentence#init()
autocmdFileTypetextilecalltextobj#sentence#init()
augroupEND
Decimal numbers and abbreviations
Though the period . glyph/character will normally terminate a sentence,
it also has other uses. For example, the same glyph is used in
abbreviations like ‘M.D.’ for Medical Doctor. These abbreviations, however,
should be tolerated when detecting the boundaries of a sentence. The
following should be considered one text object, rather than four:
Magnum, P.I. lives at Robin’s Nest, located at 11435 18th Ave., Oahu, HI.
This plugin detects decimal numbers and common abbreviations. By default,
the following abbreviations will be recognized:
Note that you can override/modify the above defaults in your .vimrc, but
be sure to include the declaration before your call to
textobj#sentence#init().
Motion commands
Motion commands on text objects are a powerful feature of Vim.
This plugin overrides Vim’s native commands for sentence selection:
as - select ‘around’ sentence with trailing whitespace
is - select ‘inside’ sentence without trailing whitespace
( - move to start of previous sentence
) - move to start of next sentence
This plugin adds:
g) - jump to end of current sentence
g( - jump to end of previous sentence
You can manipulate text just as with Vim’s original as and is
commands, such as cis for change, vas for visual selection, das for
deletion, yas for yanking to clipboard, etc.. Note that count isn’t
supported at present (due to limitations of the underlying
vim-textobj-user) but repeat with . does work.
If you prefer to retain the native commands, you can assign other
key mappings via your .vimrc: