vim
vim 上下左右移動 : `hjkl`息をする様に移動できればマスターした証。移動は格ゲーの基本。ちなみに、数字を指定して上下移動することも可能です。たとえば100行分下に移動したい場合、`100h`と入力することで100行分下にカーソル移動します。

viでのカーソル移動方法を一通りまとめました【vim学習サイト】

# Vimの移動方法一覧 VimはLinuxに搭載されている標準エディターで、高速で編集できることで有名ですが、 **あまりにも癖が強く、使いこなせていない人が多い**のが現状です。 とくに最も癖が強い点が、`hjklによる移動`です。 これらをマスター出来なければVimを使うのは苦痛になってしまうでしょう。 ところが、実はこの`hjklによる移動`こそが**vimmer達(vimを使いこなせる猛者の愛称)が最も好むポイントなのです。** vimを使いこなすにつれてあなたもこの`hjklによる移動`を気に入ると思います。 今回はそのvimでの移動に焦点を当ててランキング形式で解説していきたいと思います。 # 格付けランキングに対する注釈 - 統計データなんてものはありません。 - 全部独断と偏見です。 - 多少炎上するリスクはあると思いますが、優先順位を付けることはエンジニアリングを学習する際の価値に繋がると思います。 - 筆者はVimを始めたばかりで達者なVimmerの皆さんから見ればまだまだひよっこです。 - ですので「こんなコマンドの方が便利だよ!」というのがあれば是非教えていただければ幸いです。 # 前提条件 - CtrlとShiftは小指で操作する。 - jjとjjはEscにバインドしておく。 以下Vscodeのsetting.json ```json { "sshfs.configs": [ { "name": "instock", "privateKeyPath": "C:\\Users\\MINEGISHIREI\\my-keypair.pem", "username": "ec2-user", "host": "35.73.151.54" } ], "files.encoding": "utf8bom", "editor.unicodeHighlight.nonBasicASCII": false, "editor.unicodeHighlight.invisibleCharacters": false, "workbench.editorAssociations": { "*.zip": "default" }, "workbench.colorTheme": "Default Dark+", "security.workspace.trust.untrustedFiles": "open", "vim.useSystemClipboard": true, "vim.insertModeKeyBindings": [ { "before": ["j", "j"], "after": [""] }, { "before": ["j", "j"], "after": [""] } ], "vim.hlsearch": true } ``` # viの移動コマンド一覧
## viの移動コマンド(★★★★★)Sランクコマンド(常に使う)
### 上下左右移動 : `hjkl`
息をする様に移動できればマスターした証。移動は格ゲーの基本。 ちなみに、数字を指定して上下移動することも可能です。 たとえば100行分下に移動したい場合、`100h`と入力することで100行分下にカーソル移動します。 また、100文字分右方向に移動したい場合、`100l`と入力することで100文字分右にカーソル移動します。 ちなみにhjklは詳しい由来があるわけではありません。 由来を確認してはいませんが、**キーボードの中心にあり、右手一本で動かせる**という理由でキーが割り当てられたのではないかなと考えてます。
### 画面の照準をカーソルを中心にする:`zz`
`hjkl`での移動時に勝手に画面が中心となって動いてくれるわけではありません。 むしろ、jとkを入力すればするほど、画面の中心から遠ざかってしまいます。 それを解決するのがこの`zz`コマンドです。 このコマンドを入力することで、**カーソルからずれてしまった画面の焦点が一気に中央に寄せられます。**
### 末尾に追記:`A`
自分の場合は末尾への移動でも使っています。 (`Ajj`でデフォルトモードのまま末尾に移動することができる)
### 先頭に追記:`I`
先頭に文字列を挿入したいときはこの`I`を使うことをお勧めします。
## (★★★★☆)Aランクコマンド(編集の時に使う)
### カーソル位置の履歴を辿る:`Ctrl+o`
ファイルを編集中に別の場所を確認した後、`Ctrl+o`で元の場所に戻ることができます。 例えば、 - `100G`コマンドを使って100行目に移動したとします。 - その時点で`Ctrl+o`と入力することで、元の位置に戻ることができるのです。 - さらにそこから元の位置(`100G`)に戻りたい場合、`Ctrl+i`と入力することで達成できます。 いわば - `Ctrl+o`が戻るボタン - `Ctrl+i`が進むボタン と言えるでしょう。
### ファイルの末尾と先頭に移動する : `gg`と`G`
「あの位置に移動するには直接移動するよりも一度先頭に戻ってから折り返した方が早いな」 と頭の中で思い浮かんだらこのコマンドを使ってみましょう。 - `gg`はファイルの先頭に移動するコマンド。 - `G`はファイルの末尾に移動するコマンドです。
### 文字列検索: `/[searchword][Enter]`からの`n`
文章内でよく使われるキーワードが存在する場合、(例えばmarkdownの##等)これらを起点にして動きたい場面が出てくると思います。 その時に文字列検索を行えるのがこのコマンドです。 特に一度検索してしまえば、**別のコマンドを操作した後でもvim側で覚えておいてくれるのでふたたび`n`による移動が可能になる**という点は最高の仕様です。 また、`N`で後ろ方向への移動が可能になるので、`n`を押しすぎて目的の地点を通り過ぎてしまった場合は`N`で戻ることをお勧めします。
### 先頭に移動:`0`
`0`は文字のカーソルを先頭に移動させるためのコマンドです。 `hjkl`をつかった移動を行うとカーソルは必ず右側にずれてしまいます。 また、vimは次の行に移動しても「何列目にいたか」という情報を覚えてしまいます。 **その「何列目にいたか」という情報をリセットするためにも`0`は使えます。**
### 一画面分スクロール:`Ctrl+f`と`Ctrl+b`
Vimにおいては、**画面をスクロールさせるためのコマンドが少ない**という特徴があります。 この一点においてはマウスやトラックパッドを使いたくなってしまいますが、一画面分の移動であれば、`Ctrl+F`または`Ctrl+b`で対応可能です。 これらのアルファベットは - `Ctrl+f`のfはfoward(前方向)という意味が由来となり - `Ctrl+b`のbはbackword(後ろ方向)という意味が由来となっています。 ちなみにですが、もう少しだけ細かい移動がしたい場合は、`Ctrl+U`と`Ctrl+D`というコマンドもあります。 個人の意見としては、 - 前方向への移動は`Ctrl+f` - 後ろ方向への移動は`Ctrl+u` という組合せが移動しやすかったりします。
## (★★★☆☆)Bランクコマンド(以外と使いどころが限られる)
### 画面の上中下に移動:`HML`
この3つはよくセットで使います。(ソースコードを眺めるように読む時など) 似たようなコマンドだと`zz`も存在します。(画面単位でいどうできるコマンドは`HML`と`zz`のみ)
### 段落ごとの移動を行う : `{`と`}`
このコマンドですが、まれに役に立つことがあります。 とくに日本語の文章であるマークダウンを編集する際や、関数をまたぐような素早い移動をしたいときに便利です。 ただキーボードの中心から若干離れているのと、`jk`を連打していた方が早い可能性があるのでこのランキングに落ち着きました。 - 一単語文だけ移動する : `b`と`w` この三つはトリッキーな移動です。日本語の文章の編集でもまれに登場します。
### ひとつ前の場所に戻る:` `` `
` `` `と入力することで、先ほどまでいた場所に戻ることができます。 たとえば、「目次に何が書いてあったかを確認して今いる行から再度入力を開始したい」と思ったときに `gg`を押して先頭の目次を確認した後、` `` `で先ほどまで書き込みを行っていた場所まで戻る。 という操作が可能です。 また、` `` `を繰り返し入力すると「同じ場所を行ったり来たりする」という移動になります。
### 行数指定して移動:`:[行数]`または`G[行数]`
かなり使えそうなコマンドだが、`Ctrl+F`や`Ctrl+b`で大きい幅移動しつつ、`zz`でカーソルが画面の中心に移動することを考えると以外と使いどころが限られる。
## (★★☆☆☆)Cランクコマンド
今のところはまだない。
## (★☆☆☆☆)Dランクコマンド(実践では使いこなせない)
### `$`:末尾まで移動する。
たかが末尾まで移動するのに、Shiftと4同時押しはしんどい。 Aで十分(左手の小指と薬指だけで完結するので、を動かす必要がない)
### マーキング : `m[a-z]`と マーキング先に移動 : `[a-z]`
この二つは一見便利に見えるが、実践ではあまり使わない。 問題点は**マーキングする手間が面倒**なのと、**マーキングした場所とアルファベットをいちいち覚えなければならないコスト**が発生すること。 それをやるぐらいなら行数を覚えておいて`:[行数]`で移動した方が早い。
### 行内部ジャンプ:`f(アルファベット一文字)`
私が日本人じゃなかったらトップオブトップでした。 日本語とこのコマンドの相性ははっきり言って最悪です。 英語を母国語とする地域であればfの後にローマ字を入れるだけでジャンプできるのですが、 **日本語が主体となる我が国日本ではfを押した後に半角全角を押さなければなりません!** 逆に、ソースコードを編集する際では最強のコマンドかもしれません。 # 今回紹介したコマンド一覧 - [Vimの移動方法一覧](#vimの移動方法一覧) - [格付けランキングに対する注釈](#格付けランキングに対する注釈) - [前提条件](#前提条件) - [viの移動コマンド一覧](#viの移動コマンド一覧) - [viの移動コマンド(★★★★★)Sランクコマンド(常に使う)](#viの移動コマンドsランクコマンド常に使う) - [上下左右移動 : `hjkl`](#上下左右移動--hjkl) - [画面の照準をカーソルを中心にする:`zz`](#画面の照準をカーソルを中心にするzz) - [末尾に追記:`A`](#末尾に追記a) - [先頭に追記:`I`](#先頭に追記i) - [(★★★★☆)Aランクコマンド(編集の時に使う)](#aランクコマンド編集の時に使う) - [カーソル位置の履歴を辿る:`Ctrl+o`](#カーソル位置の履歴を辿るctrlo) - [ファイルの末尾と先頭に移動する : `gg`と`G`](#ファイルの末尾と先頭に移動する--ggとg) - [文字列検索: `/searchword`からの`n`](#文字列検索-searchwordからのn) - [先頭に移動:`0`](#先頭に移動0) - [一画面分スクロール:`Ctrl+f`と`Ctrl+b`](#一画面分スクロールctrlfとctrlb) - [(★★★☆☆)Bランクコマンド(以外と使いどころが限られる)](#bランクコマンド以外と使いどころが限られる) - [画面の上中下に移動:`HML`](#画面の上中下に移動hml) - [段落ごとの移動を行う : `{`と`}`](#段落ごとの移動を行う--と) - [ひとつ前の場所に戻る:` `` `](#ひとつ前の場所に戻る) - [行数指定して移動:`:[行数]`または`G[行数]`](#行数指定して移動行数またはg行数) - [(★★☆☆☆)Cランクコマンド](#cランクコマンド) - [(★☆☆☆☆)Dランクコマンド(実践では使いこなせない)](#dランクコマンド実践では使いこなせない) - [`$`:末尾まで移動する。](#末尾まで移動する) - [マーキング : `m[a-z]`と マーキング先に移動 : `[a-z]`](#マーキング--ma-zと-マーキング先に移動--a-z) - [行内部ジャンプ:`f(アルファベット一文字)`](#行内部ジャンプfアルファベット一文字) - [今回紹介したコマンド一覧](#今回紹介したコマンド一覧) - [備考](#備考) # 備考 title:viでのカーソル移動方法を一通りまとめました【vim学習サイト】 description:上下左右移動 : `hjkl`息をする様に移動できればマスターした証。移動は格ゲーの基本。ちなみに、数字を指定して上下移動することも可能です。たとえば100行分下に移動したい場合、`100h`と入力することで100行分下にカーソル移動します。 img:https://m.media-amazon.com/images/I/419SM7TDHZL.jpg category_script:True