12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dvorak配列でVimを使いこなすために考えたこと

Posted at

はじめに

この記事は Vim2 Advent Calendar 2019 25日目の記事です
昨日の記事は,@shuhoyoさんのPowerShellのVim環境にAirlineを導入する でした

僕もWindowsでVim使ってるのでとても参考になりました

Dvorak 配列について

まずはこの名前を聞いたことが無い人に向けて説明します
Dvorakは,キー配列の一種で,恐らく多くの人が普段使っているQWERTY とは全く異なる配列になります
キー配列というと,JIS / US 配列の違いはもう少し知られていると思いますが,この2つはキーのレイアウト自体が異なる( JIS は Enter キーが大きかったり,変換・無変換キーがあったりする話です) のに対して,DvorakはUS 配列と同じ形状で,各キーに割り当てられた文字が異なります

image.png

これが,Dvorakのキー配列です (画像はWikipediaより)

Dvorak配列を使う利点や,Dvorak配列に変える方法については,この記事では述べません (本題から逸れるので)

自分は,Dvorak配列に乗り換えて約半年,Vimの経験は,3年ほど前に一時期使っていましたが最近は他のエディタに浮気していて,2ヶ月ほど前から再びVimを使うようになりました

Dvorak配列を使うにあたっての問題点

Vimの話を一旦置いて,Dvorak配列を使う場合初めに考えなければならない問題は,Ctrl+S などの修飾キーを用いたショートカットをどうするかです
Windowsなら, CtrlWinAlt
Maxなら, CmdOptionCtrl あたりと組み合わせる場合を考える必要があります

この問題に対して,大きく2種類の考え方があると思っています

  • 修飾キーを使う場合のみ,従来のQWERTY配列にする
  • 修飾キーも,Dvorakで使用する

何故修飾キーを使う場合だけQWERTYにするのかというと,修飾キーを用いたショートカットは,「キーの位置で割当てられている場合があるから」です
例えば,次のショートカットは,(Vim以外の)多くのソフトウェアで頻繁に使用するはずです
Ctrl/Cmd + A S Z X C V

これらはQWERTYなら左手の押しやすい位置にありますが,Dvorakに変えると,バラバラになり,特にXやVは少し押しづらいと思います
こういった既存のショートカットとの相性を考慮して,修飾キーを用いる場合だけ,QWERTYに変えるという選択肢がありますが,私はDvorakのまま使用しています

VimでDvorakを使うにはどうすればいいか

さて,ここから本題です
VimでDvorak配列を使うにはどうすればいいかを考えていきます

ここから先,基本的に自分の思考に沿って書いていくので,実際にそれが最適の方法かは人によって異なります

実際にDvorakを使ったことがない人でも,Vimを使った経験がある人は「カーソル移動どうするの?」という疑問が真っ先に出ると思います

とりあえずカーソル移動はいつもの場所にしてみる

流石にhjkl をDvorakの場所で使うのは無理があります,そこでこの4つはとりあえずQWERTYの場所に変えてみます

.vimrc
nnoremap d h
nnoremap h j
nnoremap t k
nnoremap n l

vnoremap d h
vnoremap h j
vnoremap t k
vnoremap n l

これでいつものカーソル移動はできるようになりますが,d t n が使用できなくなります
Dvorak用に変えたことで使えなくなったキーに該当するコマンドが,自分にとって必要かどうか考えていきます

自分が使わないコマンドなら,使えなくなったコマンドは使えないままでも問題ないでしょう
しかし,普段から使うコマンドなら,代わりにどこに移動させるか, もしくは代用となるコマンドを探す必要があります

d 使う

指定行の削除に使います.自分はガンガン使ってるのでこれを消すのは無理です

まずは,QWERTYでdのあった位置を見てみます.
その位置にはeがあり,単語の終端に移動するコマンドですが,自分はwbで十分に操作できていたのでeを上書きします
(とはいえ,この記事を書くにあたってeを使ってみたので,もしかしたら今後見直すかもしれません)

.vimrc
nnoremap e d
nnoremap ee dd

vnoremap e d
vnoremap ee dd

t 今は使わない?

同一行内の後方検索です
自分の場合,/ や, incsearch-fuzzy.vim というプラグインを使用しているのでこれは不要に感じました.
よってtはmapせずにそのまま消し去ります

n 使う

/ などで検索した後に,ハイライトされてる単語間での移動に使います.多分next の意味なんですかね

これも結構使うので移動先を考えます
QWERTYにおけるnの位置には,Dvorakではbがあり,これは割と使っていたのでbへの移動は断念します

Dvorakでのnの近くで,あまり使っていないキーは,自分の場合rが該当しました.そのため,ここをnと入れ替えてみます

.vimrc
nnoremap r n
nnoremap R N

vnoremap r n
vnoremap R N

Dvorakに変えても割とどうにでもなる

というわけで,カーソル移動を起点として,いくつかキーのmapを書き換えてみましたが,意外と問題なく設定できました.
自分が使いこなせていないコマンドがあるからかもしれませんが...

また,今回Dvorakを前提に話しましたが,Colemak など,他のキー配列を使用する場合にも,この考え方は応用できると思います.
まず,絶対に位置も変えたくないキーを起点にして,入れ替えた先のキーを使用するか,するなら更に他にキーと位置を変えるにはどうすればいいか... といった流れで考えていくと,自分なりのキーマップが作れると思います

それでは,良いVimライフを!

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?