Arrow Keys Layout Efficiency: vi's HJKL vs Inverted-T IJKL

By Xah Lee. Date: . Last updated: .

vim use {h j k l} keys to move cursor. Another approach is Inverted T {i j k l}. This page investigates which is more efficient.

terminal ADM-3A keyboard
terminal ADM-3A keyboard, where Bill Joy used to create vi. Note the arrows on {h j k l}. 〔➤see History of Emacs and vi Keys

Considering Key Frequency

Let's assign score to key positions with respect to ease of key press. Let's set k to have the max score of 1. We'd have something like this:

                  i
                 0.8
      h     j     k     l
     0.5   0.9    1    0.7

now look at these command's frequency.

Arrow Keys Frequency
keycommand%
previous-line15.48
next-line17.10
backward-char3.23
forward-char5.51

〔➤see Emacs's Command Frequency Statistics

Multiply the percentage with the score. Let's use a Python script to calculate.

# -*- coding: utf-8 -*-
# python

# is vi's {h j k l} keys more efficient or inverted T {i j k l}

key_score = {
    "i":0.8,
    "j":0.9,
    "k":1,
    "l":0.7,
    "h":0.5,
}

command_frequency = {
    "up":15.48,
    "down":17.1,
    "left":3.23,
    "right":5.51,
}

vi_key_map = {
    "h":"left",
    "j":"down",
    "k":"up",
    "l":"right",
}

inverted_T_map = {
    "i":"up",
    "j":"left",
    "k":"down",
    "l":"right"}

vi_score =sum(map(lambda x: (key_score[x[0]] * command_frequency[x[1]]) , vi_key_map.iteritems()))

invertedT_score =sum(map(lambda x: (key_score[x[0]] * command_frequency[x[1]]) , inverted_T_map.iteritems()))

print("vi score", vi_score)                # 36.342
print("inverted T score", invertedT_score) # 36.248

so, this means, they are about the same degree of efficiency.

Try to adjust the key score or command frequency. Overall, score comes out about the same.

This test only considers ease of each key press. For just these 4 keys, this simple measure can be considered a reasonable test of efficiency. But note that a robust test should also consider digraph frequency and other factors. 〔➤see What's the Most Efficient Keyboard Layout?

Considering Digraphs

google pacman

vi has h moved away, while inverted T has the i moved away. Which one is better? I think if you consider this, then the inverted T is better. Because, consider all 2-key combinations involving the one key that's moved away. The vi way, involving a moved index finger to the left, is more costy than the moved middle finger to top. For example, consider doing repeatedly. This with vi is pretty bad. Or, this can be easily seen when playing pacman.

Considering Intuitiveness

Another factor is intuitiveness. The inverted T is more intuitive. vi's row arrows require learning. That's one big win for inverted T.

Conclusion

Inverted T is probably slightly better. The winning point is when considering digraphs. vi's way is especially bad when you have frequent left/right movement.