Skip to main content

Motion

Enum Motion 

Source
pub enum Motion {
    Char(Direction),
    Line(Direction),
    Word {
        direction: Direction,
        boundary: WordBoundary,
        end: bool,
    },
    LinePosition(LinePosition),
    Paragraph(Direction),
    FindChar {
        char: char,
        direction: Direction,
        till: bool,
    },
    JumpLine(Option<usize>),
    MatchBracket,
}
Expand description

Motion types for cursor movement.

Each variant represents a different type of cursor motion that vim supports. Motions can be used with operators (d, y, c) or on their own for navigation.

§Example

use reovim_kernel::api::v1::*;

// Character motion (h, l)
let left = Motion::Char(Direction::Backward);
let right = Motion::Char(Direction::Forward);

// Word motion (w, b, e)
let word_forward = Motion::Word {
    direction: Direction::Forward,
    boundary: WordBoundary::Word,
    end: false,
};

Variants§

§

Char(Direction)

Character motion (h, l)

§

Line(Direction)

Line motion (j, k)

§

Word

Word motion (w, b, e, ge, W, B, E, gE)

Fields

§direction: Direction

Direction of movement

§boundary: WordBoundary

Word boundary type (word vs WORD)

§end: bool

If true, move to end of word (e/E/ge/gE), else to start (w/W/b/B)

§

LinePosition(LinePosition)

Line position (0, ^, $, g_)

§

Paragraph(Direction)

Paragraph motion ({, })

§

FindChar

Find character on line (f, F, t, T)

Fields

§char: char

Character to find

§direction: Direction

Direction to search

§till: bool

If true, stop before the character (t/T), else on it (f/F)

§

JumpLine(Option<usize>)

Jump to line (G, gg)

  • None - jump to last line (G) or first line (gg)
  • Some(n) - jump to line n (1-indexed in vim, 0-indexed internally)
§

MatchBracket

Match bracket (%)

Implementations§

Source§

impl Motion

Source

pub const fn is_linewise(&self) -> bool

Check if this motion is linewise.

Linewise motions operate on whole lines rather than character ranges. This affects how operators (d, y, c) interpret the motion.

§Example
  • dj deletes current line and next line (linewise)
  • dw deletes to start of next word (characterwise)
Source

pub const fn is_inclusive(&self) -> bool

Check if this motion is inclusive.

Inclusive motions include the character at the target position. This affects operators like delete and yank.

§Example
  • d$ deletes to end of line including the last character (inclusive)
  • dw deletes to start of next word excluding the first character (exclusive)

Trait Implementations§

Source§

impl Clone for Motion

Source§

fn clone(&self) -> Motion

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Motion

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Motion

Source§

fn eq(&self, other: &Motion) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Motion

Source§

impl Eq for Motion

Source§

impl StructuralPartialEq for Motion

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.