     if @linewise
       cursor.moveToFirstCharacterOfLine()
 
+# keymap: `
 class MoveToMarkLiteral extends MoveToMark
   @extend()
 
   constructor: (@vimState) ->
     super(@vimState, false)
 
+# Search
+# -------------------------
 class SearchBase extends MotionWithInput
   @extend()
   operatesInclusively: false

    cursor.setBufferPosition([@getDestinationRow(@getCount()), Infinity])
    cursor.moveToFirstCharacterOfLine()
    cursor.moveToEndOfLine() if cursor.getBufferColumn() is 0

class MoveToRelativeLine extends MoveToLineBase
  @extend()
  operatesLinewise: true

  moveCursor: (cursor) ->
    {row, column} = cursor.getBufferPosition()
    cursor.setBufferPosition([row + (@getCount(1) - 1), 0])

# Not directly used.
class MoveToScreenLine extends MoveToLineBase
  @extend()
  scrolloff: 2

  moveCursor: (cursor) ->
    {row, column} = cursor.getBufferPosition()
    cursor.setScreenPosition([@getDestinationRow(@getCount(1)), 0])

# keymap: gg
class MoveToStartOfFile extends MoveToLineBase

    cursor.setBufferPosition([@getDestinationRow(@getCount(1)), 0])
    unless @isLinewise()
      cursor.moveToFirstCharacterOfLine()

class MoveToRelativeLine extends MoveToLineBase
  @extend()
  operatesLinewise: true

  moveCursor: (cursor) ->
    {row, column} = cursor.getBufferPosition()
    cursor.setBufferPosition([row + (@getCount(1) - 1), 0])

# Not directly used.
class MoveToScreenLine extends MoveToLineBase
  @extend()
  scrolloff: 2

  moveCursor: (cursor) ->
    {row, column} = cursor.getBufferPosition()
    cursor.setScreenPosition([@getDestinationRow(), 0])

# keymap: H
class MoveToTopOfScreen extends MoveToScreenLine
