{ "cells": [ { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "slideshow": { "slide_type": "slide" } }, "source": [ "# vim入門\n", "\n", "- 2018/10/11 簡易版勉強会" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 基本のキホン\n", "\n", "- 奇抜なやつを紹介しようと思ったがまた今度\n", "- 「毎日必ず一回は使う」レベルのものを紹介" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# アジェンダ\n", "\n", "- `h`, `j`, `k`, `l`\n", "- `y`, `d`, `c`\n", "- `u`, `ctrl-r`\n", "- `w`, `b`\n", "- オペレータとモーションを知る\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 練習用テキスト\n", "\n", "- 全部コピーしてvimに貼り付けて、スライド見ながら実行\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "// ================================\n", "// h, j, k, lでカーソル移動\n", "// ================================\n", "\n", "abcdefghijklmnopqrstucxyz\n", "abcdefghijklmnopqrstucxyz\n", "abcdefghijklmnopqrstucxyz\n", "abcdefghijklmnopqrstucxyz\n", "abcdefghijklmnopqrstucxyz\n", "abcdefghijklmnopqrstucxyz\n", "\n", "// ================================\n", "// 基本的なオペレータ\n", "// ================================\n", "\n", "- この行をyyでコピーしてpで貼り付け\n", "\n", "- この行をddで削除\n", "\n", "- この行をccで削除してインサートモードに入る\n", "\n", "- この行を>>でインデント深くする\n", "\n", " - この行を<<でインデント浅くする\n", "\n", " \n", "// ================================\n", "// やり直し\n", "// ================================\n", "\n", "- uで今までの状態に戻っていく\n", "- ctrl-rで戻ってくる\n", "\n", "\n", "// ================================\n", "// 単語単位での移動\n", "// ================================\n", "\n", "// w, bで単語単位で移動\n", "\n", "if (be16_to_cpu(dirblock->magic) != EFS_DIRBLK_MAGIC) {\n", "\t\t\tpr_err(\"%s(): invalid directory block\\n\", __func__);\n", "\t\t\tbrelse(bh);\n", "\t\t\tbreak;\n", "}\n", "\n", "// ================================\n", "// オペレータとモーションを知る\n", "// ================================\n", "\n", "// dawで単語を削除\n", "\n", "if (be16_to_cpu(dirblock->magic) != EFS_DIRBLK_MAGIC) {\n", "\t\t\tpr_err(\"%s(): invalid directory block\\n\", __func__);\n", "\t\t\tbrelse(bh);\n", "\t\t\tbreak;\n", "}\n", "\n", "// ciwで単語を削除してインサートモード\n", "\n", "if (be16_to_cpu(dirblock->magic) != EFS_DIRBLK_MAGIC) {\n", "\t\t\tpr_err(\"%s(): invalid directory block\\n\", __func__);\n", "\t\t\tbrelse(bh);\n", "\t\t\tbreak;\n", "}\n", "\n", "// `di(`で()の中身を削除\n", "\n", "if (be16_to_cpu(dirblock->magic) != EFS_DIRBLK_MAGIC) {\n", "\t\t\tpr_err(\"%s(): invalid directory block\\n\", __func__);\n", "\t\t\tbrelse(bh);\n", "\t\t\tbreak;\n", "}\n", "\n", "// `ca{`で{}の中身を括弧ごと削除してインサートモード\n", "\n", "if (be16_to_cpu(dirblock->magic) != EFS_DIRBLK_MAGIC) {\n", "\t\t\tpr_err(\"%s(): invalid directory block\\n\", __func__);\n", "\t\t\tbrelse(bh);\n", "\t\t\tbreak;\n", "}\n", "\n", "// >apでパラグラフのインデントを深くする\n", "\n", "if (be16_to_cpu(dirblock->magic) != EFS_DIRBLK_MAGIC) {\n", "\t\t\tpr_err(\"%s(): invalid directory block\\n\", __func__);\n", "\t\t\tbrelse(bh);\n", "\t\t\tbreak;\n", "}\n", "\n", "\n", "// yapでパラグラフをコピーして、pで貼り付け\n", "\n", "if (be16_to_cpu(dirblock->magic) != EFS_DIRBLK_MAGIC) {\n", "\t\t\tpr_err(\"%s(): invalid directory block\\n\", __func__);\n", "\t\t\tbrelse(bh);\n", "\t\t\tbreak;\n", "}\n", "\n", "// yaw でコピーし、vaw p で貼り付ける\n", "\n", "this is a pen // 「pen」の上で、`yiw`\n", "this is a apple // 「apple」の上で`viwp`\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 基本的な移動\n", "\n", "- `h`: 左\n", " - 4つのキーの中で最も左にあるから\n", "- `j`: 下\n", " - 「j」という文字が「↓」っぽいでしょ\n", "- `k`: 上\n", " - 消去法\n", "- `l`: 右\n", " - 4つのキーの中で(ry" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 基本的なオペレータ\n", "\n", "- 2回連続で打てば行に対して実行\n", "\n", "------\n", "- `y`\n", " - Yank。コピー。\n", "- `d`\n", " - Delete。\n", "- `c`\n", " - Change。\n", "- `>`\n", " - インデントを深く\n", "- `<`\n", " - インデントを浅く" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# やり直し\n", "\n", "- `u`\n", " - undo\n", "- `ctrl-r`\n", " - redo" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 単語単位での移動\n", "\n", "\n", "- `w`\n", " - 次の単語の頭に移動\n", "- `b`\n", " - 前の単語の頭に移動\n", " \n", "---\n", "- shiftと一緒に押して大文字にすると、「一塊」単位で移動できる\n", "- 「google.com」\n", " - 「google」「.」「com」←`w`,`b`\n", " - 「google.com」←`W`,`B`" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# オペレータとモーションを知る\n", "\n", "- 上で出てきたものの組み合わせ\n", "- `オペレータ` + `a` or `i` + `モーション`の組み合わせの(基本)3コマンド\n", " - たとえば`ciw`\n", " - `c`←changeのオペレータ\n", " - `i` \n", " - `w`←word単位のモーション" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## 以下の組み合わせ\n", "\n", "\n", "### オペレータ\n", "\n", "- さっき見たように、`y`,`d`,`c`など\n", "- `>`,`<` :  インデント\n", "- `=` :  インデントを揃える\n", "- ちなみにvisualモードに移行する`v`でも似たようなことができる\n", "\n", "### i or a\n", "\n", "- inかallか\n", "\n", "### モーション\n", "\n", "- `w`,`W`\n", " - word\n", "- `p`\n", " - paragraph\n", "- `\"`, `'`\n", "- `(`, `{`" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# 覚え方\n", "\n", "- 「実践vim」を読んで、新しく知ったものを少しずつメモっておく\n", " - [こんな感じ](https://mrsekut.site/?p=678)\n", "- [こんな記事](https://qiita.com/hachi8833/items/7beeee825c11f7437f54)を参考にしてレベルを上げていく" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" }, "toc": { "nav_menu": {}, "number_sections": false, "sideBar": true, "skip_h1_title": false, "toc_cell": false, "toc_position": { "height": "880.278px", "left": "0px", "right": "1040.23px", "top": "109.722px", "width": "211.997px" }, "toc_section_display": "block", "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }