http://blog.sanctum.geek.nz/putty-configuration/
PuTTY configuration
PuTTY is a terminal emulator with a free software license, including an SSH client. While it has cross-platform ports, it’s used most frequently on Windows systems, because they otherwise lack a built-in terminal emulator that interoperates well with Unix-style TTY systems.
While it’s very popular and useful, PuTTY’s defaults are quite old, and are chosen for compatibility reasons rather than to take advantage of all the features of a more complete terminal emulator. For new users, this is likely an advantage as it can avoid confusion, but more advanced users who need to use a Windows client to connect to a modern Linux system may find the defaults frustrating, particularly when connecting to a more capable and custom-configured server.
Here are a few of the problems with the default configuration:
- It identifies itself as an
xterm(1)
, whenterminfo(5)
definitions are available namedputty
andputty-256color
, which more precisely define what the terminal can and cannot do, and their various custom escape sequences. - It only allows 16 colors, where most modern terminals are capable of using 256; this is partly tied into the terminal type definition.
- It doesn’t use UTF-8 by default, which should be used whenever possible for reasons of interoperability and compatibility, and is well-supported by modern
locale
definitions on Linux. - It uses Courier New, a workable but rather harsh monospace font, which should be swapped out for something more modern if available.
- It uses audible terminal bells, which tend to be annoying.
- Its default palette based on
xterm(1)
is rather garish and harsh; softer colors are more pleasant to read.
All of these things are fixable.
Terminal type
Usually the most important thing in getting a terminal working smoothly is to make sure it identifies itself correctly to the machine to which it’s connecting, using an appropriate $TERM
string. By default, PuTTY identifies itself as an xterm(1)
terminal emulator, which most systems will support.
However, there’s a terminfo(5)
definition for putty
and putty-256color
available as part of ncurses
, and if you have it available on your system then you should use it, as it slightly more precisely describes the features available to PuTTY as a terminal emulator.
You can check that you have the appropriate terminfo(5)
definition installed by looking in /usr/share/terminfo/p
:
$ ls -1 /usr/share/terminfo/p/putty*
/usr/share/terminfo/p/putty
/usr/share/terminfo/p/putty-256color
/usr/share/terminfo/p/putty-sco
/usr/share/terminfo/p/putty-vt100
On Debian and Ubuntu systems, these files can be installed with:
# apt-get install ncurses-term
If you can’t install the files via your system’s package manager, you can also keep a private repository of terminfo(5)
files in your home directory, in a directory called .terminfo
:
$ ls -1 $HOME/.terminfo/p
putty
putty-256color
Once you have this definition installed, you can instruct PuTTY to identify with that $TERM
string in the Connection > Data section:
Here, I’ve used putty-256color
; if you don’t need or want a 256 color terminal you could just use putty
.
Once connected, make sure that your $TERM
string matches what you specified, and hasn’t been mangled by any of your shell or terminal configurations:
$ echo $TERM
putty-256color
Color space
Certain command line applications like Vim and Tmux can take advantage of a full 256 colors in the terminal. If you’d like to use this, set PuTTY’s $TERM
string to putty-256color
as outlined above, and select Allow terminal to use xterm 256-colour mode in Window > Colours:
You can test this is working by using a 256 color application, or by trying out the terminal colours directly in your shell using tput
:
$ for ((color = 0; color <= 255; color++)); do
> tput setaf "$color"
> printf "test"
> done
If you see the word test
in many different colors, then things are probably working. Type reset
to fix your terminal after this:
$ reset
Using UTF-8
If you’re connecting to a modern GNU/Linux system, it’s likely that you’re using a UTF-8 locale. You can check which one by typing locale
. In my case, I’m using the en_NZ
locale with UTF-8
character encoding:
$ locale
LANG=en_NZ.UTF-8
LANGUAGE=en_NZ:en
LC_CTYPE="en_NZ.UTF-8"
LC_NUMERIC="en_NZ.UTF-8"
LC_TIME="en_NZ.UTF-8"
LC_COLLATE="en_NZ.UTF-8"
LC_MONETARY="en_NZ.UTF-8"
LC_MESSAGES="en_NZ.UTF-8"
LC_PAPER="en_NZ.UTF-8"
LC_NAME="en_NZ.UTF-8"
LC_ADDRESS="en_NZ.UTF-8"
LC_TELEPHONE="en_NZ.UTF-8"
LC_MEASUREMENT="en_NZ.UTF-8"
LC_IDENTIFICATION="en_NZ.UTF-8"
LC_ALL=
If the output of locale
does show you’re using a UTF-8 character encoding, then you should configure PuTTY to interpret terminal output using that character set; it can’t detect it automatically (which isn’t PuTTY’s fault; it’s a known hard problem). You do this in the Window > Translation section:
While you’re in this section, it’s best to choose the Use Unicode line drawing code points option as well. Line-drawing characters are most likely to work properly with this setting for UTF-8 locales and modern fonts:
If Unicode and its various encodings is new to you, I highly recommend Joel Spolsky’s classic article about what programmers should know about both.
Fonts
Courier New is a workable monospace font, but modern Windows systems include Consolas, a much nicer terminal font. You can change this in the Window > Appearance section:
There’s no reason you can’t use another favourite Bitmap or TrueType font instead once it’s installed on your system; DejaVu Sans Mono, Inconsolata, and Terminus are popular alternatives. I personally favor Ubuntu Mono.
Bells
Terminal bells by default in PuTTY emit the system alert sound. Most people find this annoying; some sort of visual bell tends to be much better if you want to use the bell at all. Configure this in Terminal > Bell:
Given the purpose of the alert is to draw attention to the window, I find that using a flashing taskbar icon works well; I use this to draw my attention to my prompt being displayed after a long task completes, or if someone mentions my name or directly messages me in irssi(1)
.
Another option is using the Visual bell (flash window) option, but I personally find this even worse than the audible bell.
Default palette
The default colours for PuTTY are rather like those used in xterm(1)
, and hence rather harsh, particularly if you’re used to the slightly more subdued colorscheme of terminal emulators like gnome-terminal(1)
, or have customized your palette to something like Solarized.
If you have decimal RGB values for the colours you’d prefer to use, you can enter those in the Window > Colours section, making sure that Use system colours and Attempt to use logical palettes are unchecked:
There are a few other default annoyances in PuTTY, but the above are the ones that seem to annoy advanced users most frequently. Dag Wieers has a similar post with a few more defaults to fix.
Solarized 配色:
The Values
L*a*b values are canonical (White D65, Reference D50), other values are matched in sRGB space.
SOLARIZED HEX 16/8 TERMCOL XTERM/HEX L*A*B RGB HSB
--------- ------- ---- ------- ----------- ---------- ----------- -----------
base03 #002b36 8/4 brblack 234 #1c1c1c 15 -12 -12 0 43 54 193 100 21
base02 #073642 0/4 black 235 #262626 20 -12 -12 7 54 66 192 90 26
base01 #586e75 10/7 brgreen 240 #585858 45 -07 -07 88 110 117 194 25 46
base00 #657b83 11/7 bryellow 241 #626262 50 -07 -07 101 123 131 195 23 51
base0 #839496 12/6 brblue 244 #808080 60 -06 -03 131 148 150 186 13 59
base1 #93a1a1 14/4 brcyan 245 #8a8a8a 65 -05 -02 147 161 161 180 9 63
base2 #eee8d5 7/7 white 254 #e4e4e4 92 -00 10 238 232 213 44 11 93
base3 #fdf6e3 15/7 brwhite 230 #ffffd7 97 00 10 253 246 227 44 10 99
yellow #b58900 3/3 yellow 136 #af8700 60 10 65 181 137 0 45 100 71
orange #cb4b16 9/3 brred 166 #d75f00 50 50 55 203 75 22 18 89 80
red #dc322f 1/1 red 160 #d70000 50 65 45 220 50 47 1 79 86
magenta #d33682 5/5 magenta 125 #af005f 50 65 -05 211 54 130 331 74 83
violet #6c71c4 13/5 brmagenta 61 #5f5faf 50 15 -45 108 113 196 237 45 77
blue #268bd2 4/4 blue 33 #0087ff 55 -10 -45 38 139 210 205 82 82
cyan #2aa198 6/6 cyan 37 #00afaf 60 -35 -05 42 161 152 175 74 63
green #859900 2/2 green 64 #5f8700 60 -20 65 133 153 0 68 100 60