Actions Status

NAME

lms - Let Me See command

VERSION

Version 0.99

SYNOPSIS

  lms [options] command/library

OPTIONS
   -1   --one           Stop at the first match
   -d   --debug         Show debug output
   -n   --dryrun        Show command without executing
   -h   --help          Print this message
   -l   --list          Print file path (-ll for ls -l)
   -m   --man           Show documentation
   -N   --[no-]number   Line number display (default: off)
   -r   --raw           Don't resolve Homebrew wrappers
   -v   --version       Print version
   -p   --pager=#       Specify pager command
   -t   --type=#        Specify handler (Command:Perl:Python:Ruby:Node)
        --py            Shortcut for --type Python
        --pl            Shortcut for --type Perl
        --rb            Shortcut for --type Ruby
        --nd            Shortcut for --type Node
        --bat-theme     Set bat theme per mode (light=X dark=X)

EXAMPLES
  lms greple              # Look at a script command
  lms Getopt::Long        # Look at a Perl module
  lms --py json           # Look at a Python module
  lms --rb json           # Look at a Ruby library
  lms --nd express        # Look at a Node.js module
  lms -l greple           # Show file path only
  lms --py -m json        # Show documentation

DESCRIPTION

lms (Let Me See) is a utility to locate and display command or library files.

It is convenient to see a command file written in shell or any other script language.

For library files, Perl modules are fully supported, and support for Python, Ruby, and Node.js libraries is included.

The program searches through all file type handlers (Command, Perl, Python, Ruby, Node by default) and displays all matches found using a pager.

For Homebrew-installed commands, both the wrapper script in bin/ and the actual executable in libexec/bin/ are displayed. This is useful for understanding how wrapper scripts delegate to their implementations.

OPTIONS

HANDLER MODULES

The program uses a plugin architecture where different file type handlers are dynamically loaded based on the --type option. Each handler must implement a get_path($app, $name) method.

EXAMPLES

# Display a script command (brew is a shell script)
lms brew

# Display a Perl module
lms List::Util

# Display a Python module
lms --py json

# Just show the file path
lms -l brew

# Show detailed file information
lms -ll Getopt::Long

# Show documentation (perldoc for Perl, pydoc for Python, ri for Ruby, etc.)
lms -m List::Util
lms --py -m json
lms --rb -m json
lms -m ls

# Only search for Perl modules
lms --pl Data::Dumper

# Only search for Python modules
lms --py os.path

# Display a Ruby library
lms --rb yaml

# Display a Node.js module
lms --nd express

# Use a custom pager
lms --pager "vim -R" List::Util

# Pass options to the pager (use -- to separate)
lms -- +10 List::Util  # Open at line 10

INSTALLATION

# Homebrew
brew tap tecolicom/tap
brew install app-lms

# From CPAN
cpanm App::lms

# From GitHub
cpanm https://github.com/kaz-utashiro/App-lms.git

ENVIRONMENT

SEE ALSO

App::lms, Getopt::EX, Getopt::EX::Hashed

AUTHOR

Kazumasa Utashiro

LICENSE

Copyright 1992-2026 Kazumasa Utashiro.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.