diff --git a/README.md b/README.md
index 2f729a3..c83ae54 100644
--- a/README.md
+++ b/README.md
@@ -76,9 +76,9 @@ $ op --help
 Usage:
   op CODE [ARGS]
     Execute a command from the config file (op.conf)
-    Arguments will be passed to the command
+    Arguments will be passed to the command (use with "$@")
 
-  op ?
+  op ?, -i, --info
     Show all codes and their usage comments (#?)
 
   op -l, --list
@@ -87,8 +87,8 @@ Usage:
   op -s, --show
     Show the config file (op.conf)
 
-  op -w, --what CODE
-    Show the command for a given code
+  op -w, --what [CODE]
+    Show the command for a given code or all codes
 
   op -e, --edit
     Open the config file for editing
diff --git a/op b/op
index b87a9d3..2f2f583 100755
--- a/op
+++ b/op
@@ -4,45 +4,58 @@
 # ---------------------------------------------------------------
 opcode_context() {
   usage() {
-    if $LONG_USAGE; then
+    long_usage=0
+
+    [[ "$1" == "long" ]] && long_usage=1
+
+    if [[ $long_usage == 1 ]]; then
       printf "opcode %s - local command shortcuts\n\n" "$VERSION"
     fi
+
     printf "Usage:\n"
     printf "  op CODE [ARGS]\n"
-    if $LONG_USAGE; then
+    if [[ $long_usage == 1 ]]; then
       printf "    Execute a command from the config file (%s)\n" "$CONFIG_FILE"
-      printf "    Arguments will be passed to the command\n\n"
+      printf "    Arguments will be passed to the command (use with \"\$@\")\n\n"
     fi
-    printf "  op ?\n"
-    if $LONG_USAGE; then
+
+    printf "  op ?, -i, --info\n"
+    if [[ $long_usage == 1 ]]; then
       printf "    Show all codes and their usage comments (#?)\n\n"
     fi
+
     printf "  op -l, --list\n"
-    if $LONG_USAGE; then
+    if [[ $long_usage == 1 ]]; then
       printf "    List command codes\n\n"
     fi
+
     printf "  op -s, --show\n"
-    if $LONG_USAGE; then
+    if [[ $long_usage == 1 ]]; then
       printf "    Show the config file (%s)\n\n" "$CONFIG_FILE"
     fi
+
     printf "  op -w, --what [CODE]\n"
-    if $LONG_USAGE; then
+    if [[ $long_usage == 1 ]]; then
       printf "    Show the command for a given code or all codes\n\n"
     fi
+
     printf "  op -e, --edit\n"
-    if $LONG_USAGE; then
+    if [[ $long_usage == 1 ]]; then
       printf "    Open the config file for editing\n\n"
     fi
+
     printf "  op -a, --add CODE COMMAND...\n"
-    if $LONG_USAGE; then
+    if [[ $long_usage == 1 ]]; then
       printf "    Append a command to the config file\n\n"
     fi
+
     printf "  op -h, --help\n"
-    if $LONG_USAGE; then
+    if [[ $long_usage == 1 ]]; then
       printf "    Show this message\n\n"
     fi
+
     printf "  op -v, --version\n"
-    if $LONG_USAGE; then
+    if [[ $long_usage == 1 ]]; then
       printf "    Show version number\n\n"
     fi
   }
@@ -273,7 +286,7 @@ opcode_context() {
   opcode_run() {
     case "$1" in
       "") list_or_usage ;;
-      "?") list_codes_extended ;;
+      \? | -i | --info) list_codes_extended ;;
       -l | --list) list_codes ;;
       -s | --show) show_config ;;
       -w | --what)
@@ -286,10 +299,7 @@ opcode_context() {
         shift
         add_command "$@"
         ;;
-      -h | --help)
-        LONG_USAGE=true
-        usage
-        ;;
+      -h | --help) usage 'long' ;;
       -v | --version) echo "$VERSION" ;;
       --completion) send_completion ;;
       *)
@@ -308,7 +318,6 @@ opcode_context() {
 
   opcode_initialize() {
     VERSION="1.0.0"
-    LONG_USAGE=false
     set_config_file
     set -e
   }
diff --git a/setup b/setup
index 6c999af..164fe4a 100755
--- a/setup
+++ b/setup
@@ -54,7 +54,7 @@ install_completions() {
     compdir="/usr/share/bash-completion/completions"
   elif [[ -d "/usr/local/etc/bash_completion.d" ]]; then
     compdir="/usr/local/etc/bash_completion.d"
-  elif command -v brew &> /dev/null && [[ -d "$(brew --prefix)/etc/bash_completion.d" ]]; then
+  elif command -v brew &>/dev/null && [[ -d "$(brew --prefix)/etc/bash_completion.d" ]]; then
     compdir="$(brew --prefix)/etc/bash_completion.d"
   else
     compdir=''
diff --git a/test/fixtures/empty-dir/approvals/op b/test/fixtures/empty-dir/approvals/op
index 2710673..ba34a41 100644
--- a/test/fixtures/empty-dir/approvals/op
+++ b/test/fixtures/empty-dir/approvals/op
@@ -1,6 +1,6 @@
 Usage:
   op CODE [ARGS]
-  op ?
+  op ?, -i, --info
   op -l, --list
   op -s, --show
   op -w, --what [CODE]
diff --git a/test/fixtures/empty-dir/approvals/op_add b/test/fixtures/empty-dir/approvals/op_add
index a9fdd86..c518d8d 100644
--- a/test/fixtures/empty-dir/approvals/op_add
+++ b/test/fixtures/empty-dir/approvals/op_add
@@ -1,7 +1,7 @@
 Invalid operation
 Usage:
   op CODE [ARGS]
-  op ?
+  op ?, -i, --info
   op -l, --list
   op -s, --show
   op -w, --what [CODE]
diff --git a/test/fixtures/empty-dir/approvals/op_help b/test/fixtures/empty-dir/approvals/op_help
index dafb8f4..d28cfb6 100644
--- a/test/fixtures/empty-dir/approvals/op_help
+++ b/test/fixtures/empty-dir/approvals/op_help
@@ -3,9 +3,9 @@ opcode 1.0.0 - local command shortcuts
 Usage:
   op CODE [ARGS]
     Execute a command from the config file (op.conf)
-    Arguments will be passed to the command
+    Arguments will be passed to the command (use with "$@")
 
-  op ?
+  op ?, -i, --info
     Show all codes and their usage comments (#?)
 
   op -l, --list
