VIM またはViの改善 テキストエディタは、利用可能な最も高度なテキストエディタの1つです。驚くべきレベルの生産性を得るために知っておく必要のあるLinuxVimコマンドのトップ20を学びましょう。
VIMテキストエディタにはかなり急な学習曲線があることを忘れないでください。しかし、コマンドに慣れる時間をとれば、テキストの操作を必要とする日常のタスクで比類のない生産性を達成できます(プログラマーにとって完璧なテキストエディターです!)

とてもオタクですね。エディターとその中のコマンドを理解しましょう。
基本的なナビゲーションのためのLinuxVimコマンド
始める前に、VIMエディター内でナビゲートする方法を見ていきましょう。 VIMはキーボードに焦点を合わせたエディターであるため、基本的なナビゲーションタスクではマウスに触れないことに慣れなければなりません。
キー | アクション |
---|---|
矢印キー h j k l | 通常どおりの基本的なカーソル移動 |
B b W w | 一度に1単語ずつ前後に移動します–単語の先頭にカーソルを置きます |
<行番号> G | 指定された行番号にジャンプします |
Ctrl + u Ctrl + d | カーソルが画面上にあるときのPageUp/Downキーと同様です。 |
e | 1単語先に進みます–単語の最後にカーソルを置きます |
# * | 現在カーソルが置かれているドキュメント内の単語を検索します。 |
n N | 最後の検索を繰り返します コマンド |
LinuxのトップVimコマンドと機能を紹介する
VIMエディターは、柔軟性があり包括的であるだけでなく、記述されたコードを理解する上で非常に直感的で「スマート」です。
ただし、マウスカーソルを動かして物を指さしたりクリックしたりすることに時間を費やしてもかまわない場合は、VIMを検討する理由はありません。このテキストエディタは、外出してマウスを完全に無視し、キーボードを使用してすべてを行うのが大好きなプログラマーやオタク向けです。
VIMの場合、他のテキストエディタでマウスを使用して実行できる場合は、VIMのキーボードだけで実行できます。
1。 Vimで複数のファイルを操作する
私たちのほとんどのプログラマーは、同時に複数のファイルを操作することに慣れています。 GUIテキストエディタには、すべてを同時に開いたままファイルを切り替えることができるタブがあります。これらのタブを操作するためのキーボードショートカットはいくつかありますが、VIMでできることと比べるとどこにもありません。
:tabedit <tab key to scroll through files in directory>

一番良いところ?マウスには一切触れません。ファイルをどのように移動しますか? gtを使用 またはgT タブをそれぞれ前方または後方に切り替えます。また、:tabfirst および:tablast 現在開いている最初のタブから最後のタブにジャンプできます。
ただし、最初にすべてのファイルを直接開きたい場合は、次のように入力します。
vim -p source_file1.py source_file2.py source_file3.py
2。タブセッションをVIMで保存して開く
これで、タブで大量のファイルを開き、ファイルに加えられた変更を移動しました。しかし、タブにファイルを表示するたびに、常にファイルを開かなければならないことに気づきましたか?
開いているファイルをそのまま保存して、そのまま移動する方法があったとしたらどうでしょうか?
それがまさにVIMセッションの目的です。 VIMで複数のファイルを操作する場合は、VIMセッションを保存して、次にセッションファイルを開いたときに、すべてが元の状態に戻るようにすることをお勧めします。
VIMセッションをどのように作成しますか? まず、Esc
を押して、挿入モードを終了します。 鍵。次に、以下のコマンドを入力します。
:mksession <Session Name>.vim
これで、次にセッションを開きたいときに、次のように入力して、ターミナルから直接セッションを開くことができます。
vim -S <Session Name>.vim
または、VIM内でセッションファイルを開きたい場合は、次のように入力します。
:source <Session Name>.vim
3。 VIMのオートコンプリートテキスト
VIMは他のIDEやテキストエディタのオートコンプリート機能と比較できないと思いますか?さて、それを試してみてください。この機能をサポートするために人工知能や機械学習アルゴリズムを使用していませんが、十分に堅牢です。
VIMエディターでコードを編集しようとしているときに、以下のキーの組み合わせを押して、優れたオートコンプリートを確認します。
Ctrl+n

入力した文字に基づいて、エディターは入力した単語に最も近いものを見つけます。入力した内容は何も理解できませんが、非常にうまく機能します。
4。ブレースマッチングを実行するためのLinuxVIMコマンド
VIMエディターはテキスト内のパターンを検索することを前述したように、コーディング中にブレースマッチングが行われます。長いコードで作業しているときに、作業が非常に簡単になります。
これはかなり簡単です。カーソルを開閉中括弧に移動し、%
を押します。 キーボードにサインオンします。
そして、ちょうどそのように、カーソルは一致する中括弧にジャンプします。
5。 VIMでコードブロックをマークして折りたたむ
コードエディタは入力内容を理解せず、パターンマッチングでのみ機能するため、これは思ったほど簡単ではありません。
では、vimエディター内でコードを折りたたむにはどうすればよいでしょうか?折りたたみを開始する場所にカーソルを移動することから始め、そこからletter V
を使用します。 折りたたむ場所までコードのマーク付けを開始します。

コードにV
の文字を付けたら 、次に zf
を押します コードを折りたたむ。 f zfではfoldの略です 。折りたたまれたコードの最初の行を強調表示して、押すだけのコードを開くにはどうすればよいですか

ここでコードを開くには、折りたたまれたコードがある行にカーソルを移動します(上のスクリーンショットでわかるように、 6行:function1()を示す灰色の線 。カーソルがその行に移動したら、 zo
を押します。 ここで、oはオープンを表します 。
ただし、上記の方法は、コードが小さい場合に適しています。数百行のコードをジャンプしたい場合はどうなりますか?時間を半分に短縮する別のマーキング手法を紹介します。
- コードの折りたたみを開始する行に移動します
letter m
を押します マーキングに名前を付けるために他の文字が続きます。例: mk- コード内の中括弧のいずれかを強調表示して、%を押します 一致する閉じ中括弧に直接ジャンプします。
-
zf'k
を押します
'k
mk と入力して、指摘した「k」マークを探すようにfoldコマンドに信号を送ります。 開始時に。
6。 VIMを離れることなく、システム内のファイルを探索する
通常のGUIテキスト/コードエディタの人は、コードエディタウィンドウの左側のサイドバーに通常表示される「プロジェクトフォルダ」列を見逃していると感じるでしょう。 VIMはそれを複製できますか?
もちろんです!
2つのコマンド:Vexplore
および:Sexplore
、ウィンドウを2つのセクションに分割して、ファイルシステム全体を参照できます。両方のコマンドを見てください。


ご覧のとおり、どちらの場合もファイルマネージャーが開いており、作業中のコードファイルからフォーカスを失うことなくファイル内を移動できます。
VIMの分割画面機能についてはすでに見てきましたが、画面を2つに分割し、2つのコードを編集するにはどうすればよいですか?
7。分割VIMコードウィンドウ
VIMウィンドウを垂直方向または水平方向に分割し、他のウィンドウから離れることなく複数のコードファイルを編集できます。どのように?見てみましょう。
Vexplore
およびSexplore
コマンドを使用すると、ファイルを参照して、ターミナルの分割セクションにある任意のファイルを開くことができます。ただし、ファイルを開きたいだけの場合は、vsplit
を使用できます。 またはsplit
コマンド。
VERTICAL SPLIT :vsplit <filename> OR :vsp <filename> HORIZONTAL SPLIT :split <filename> OR :sp <filename>
上記のコマンドは、ターミナルを垂直に分割し、他のファイルを開きます。

コマンド | アクション |
---|---|
Ctrl-w← また Ctrl-w h | 左側の隣接する分割に焦点を当てます |
Ctrl-w→ また Ctrl-w l | 右側の隣接する分割に焦点を当てる |
Ctrl-w↓ また Ctrl-w j | 隣接する下部の分割に焦点を当てる |
Ctrl-w↑ また Ctrl-w k | 隣接する上部の分割に焦点を当てる |
Ctrl-w n + また Ctrl-w n – | 分割のサイズをnだけ増減します 行 |
TerminusなどのSSHクライアントソフトウェアを使用している場合 Linuxサーバーに接続するには、デフォルトのVIMコマンドを使用して分割を切り替えるだけで、接続が閉じられます。
Ctrl-W Terminusおよび他の多くのWindowsソフトウェアでタブを閉じるためのデフォルトのショートカットです。では、これについてはどうすればよいでしょうか?
VIMを使用すると、キーを再マップしてキーストロークを保存し、競合を回避できます。
8。 LinuxVIMコマンドの再マップと変更
VIMのいくつかのショートカットは非常に面倒で、すべての努力がそれだけの価値があるのかどうか疑問に思うかもしれません!
remap
、noremap
、nnoremap
、inoremap
、vnoremap
コマンドを使用すると、既存のVIMコマンドを設定したい他のキーに再マッピングできます。
マッピングコマンドの違いは、それらが機能するマップモードです。マップモードについては、このトピックの範囲外なので、お読みください。先に進み、:help map-modes
と入力します 。

これはマップモードの概要ですが、これらのモードの理解に興味がある場合は、ヘルプトピックに多くの詳細があります。
既存のvimコマンドのショートカットをマッピングするにはどうすればよいですか? 「map」コマンドを使用します。
構文 :
:map <new key-combo> <existing key-combo> For example: :map <C-J> <C-W><C-J> :map <C-K> <C-W><C-K> :map <C-L> <C-W><C-L> :map <C-H> <C-W><C-H> :map l gg
上記のマッピングにより、デフォルトの分割ウィンドウ切り替えコマンドが、追加されたCtrl-WではなくCtrl-J、Ctrl-Kなどに変更されます。
最後のコマンドはgg
を変更します l
へのコマンド 。したがって、lを押すたびに、最初の行に移動します。
必要な数のコマンドに対してこれを実行します。ただし、これらのマッピングはセッションベースです。 vimを終了すると、マッピングがリセットされます。
永続的なキーマッピングを設定するには、VIMrcファイルにコマンドを追加する必要があります。 :
を使用せずに、コマンドをコピーして貼り付けるだけです。 〜/ .vimrcで ファイル。ファイルが存在しない場合は、VIMの起動時に実行する必要のあるコマンドのみを使用してファイルを作成してください。
既存のデフォルトのvim構成に加えてこれらのキーマッピングを設定するには、以下のように元のファイルをコピーまたはシンボリックリンクするだけです。
root@ubuntu:~# ln -s ~/code/dotfiles/vim/vimrc ~/.vimrc
9。シンタックスハイライトを有効にするLinuxVIMコマンド
前のセクションから続けて、コマンドsyntax on
を追加できます。 〜/ .vimrc 構文の強調表示を有効にするファイル。それがもたらす違いを見てください。


以前に他のすべてのコマンドで行ったように、セッション中にも構文の強調表示をオンまたはオフにすることができます。
10。切り取り、コピー、貼り付けを行うLinuxVIMコマンド
コピーと貼り付けはCtrl-cCtrl-vほど簡単ではありませんが、非常に簡単です。
VIMでは、コピーアクションはヤンクと呼ばれます 、およびカットアクションは削除と呼ばれます 。貼り付けアクションは引き続き貼り付けと呼ばれます 。
したがって、ショートカットにはこれらの名前に従って名前が付けられます。たとえば、何かを「ヤンク」する必要がある場合は、 y
と入力できます。 選択したテキストがヤンクされます。
テキストを切り取るには、コマンドはdeleteと同じで、文字 d
。したがって、テキストを削除しても、VIMエディターは実際にテキストを別の場所に貼り付ける準備をしていることがわかります。
カーソルがどのセクションにある場合でも、コピーまたは削除されます。コピーしたテキストを貼り付けるには、p
と入力するだけです。 カーソルの後に貼り付けるには、P
カーソルの前に貼り付けます。
11。 VIMでのスペルチェック
この点を見ることを期待していませんでしたね?ええと、VImにはすでに利用可能な辞書ファイルに基づいて機能するスペルチェックオプションがあります。言語を設定するだけです。

〜/ .vimrcファイルに、次の行を追加します。
set spell spelllang=en_us

ご覧のとおり、スペルチェックを有効にすると、LoremIpsumのテキストがすぐに強調表示されます。
12。置換–VIMで検索して置換
すべてのGUIテキストエディタが提供する検索および置換機能は、VIMにもあります。どのように?パターンマッチングのため。
:%s /Lorem/JournalDev/g
上記の行は、各行で発生するすべてのLoremを即座に置き換えます( g )JournalDevという単語を使用します。
13。 VIMでLinuxコマンドを実行する
したがって、コードを編集していて、コマンドをすばやく実行する必要があります。コードを実行するためだけにVImを保存して終了する必要がありますか?そうではありません!
Vimを使用すると、コードを見失うことなく、エディター内からコードを実行できます。これは、コロンの後に感嘆符を使用することで実行できます。次に例を示します:
:!ping www.journaldev.com
それでおしまい!これで、出力後に終了するコマンドの場合は、ENTERキーを押してプログラミングに戻ることができます。ただし、このpingコマンドの場合は、キーボード割り込み Ctrl-Cを押すことができます。 次に、VIMエディタをバックグラウンドから失うことなくENTERキーを押します。
または、 :shell
と入力することもできます シェルを直接開くことができます。必要な作業が完了したら、exit
シェルを終了し、VIMに戻ります。VIMは以前の状態のままです。
14。複数の単語を削除する
カーソルの右側の単語を削除する必要があることを知っています。しかし、文全体ではありません。どうしますか?同じコマンドといくつかの追加パラメータを使用します。
d
コマンドは、その後に指定された番号を使用して、それらの多くの単語を削除します。以下のコマンドをご覧ください。どちらのコマンドも、カーソルの位置に基づいて機能します。
d3w #This will delete 3 words to the right d3b #This will delete 3 words to the left
15。変更を元に戻すためのLinuxVIMコマンド
VIMに慣れているうちに、不要なものを削除してしまうことがあります。 Ctrl-ZアプローチはVIMでは機能しないので、どのように作業を元に戻しますか?
u
文字u
ctrl-zと同じように、変更を自動的に元に戻します。
16。別のファイルからテキストを挿入
これは非常に便利な生産性ハックです。複数のファイルからコピーして貼り付けて、それらの間でマージする時間を節約できます。
それで、これは正確には何ですか?指定された別のファイルからテキストを読み取り、カーソルの直後にテキスト全体を挿入するだけです。

:r <file name>

17。 VIMのマクロ
VIMで多くのことができることはわかっていますが、コマンドラインエディターでマクロを記録できると想像しましたか?さて、このシンプルな外観のエディタには大きな可能性があるため、このエディタは強力と呼ばれているので、想像を始めたほうがよいでしょう。
マクロをどのように記録しますか?それは非常に簡単です!コマンドモードに入ります(挿入モードの場合は、Esc
を押すだけです。 ) 。
qb #The letter after q is just to identify the macro. Can be anything q #Stop recording macro @b #Replay the macro. The letter runs that specific macro
このマクロの用途は何ですか? VImエディター内で実行できることはすべて、マクロを使用して実行できます。たとえば、あなたは:
- 最初の単語に移動
- 最初の単語を削除する
- 他のものと交換してください
複数の行に対してこれを行う必要がある場合は、マクロを記録して再生するだけです。
18。コマンドのカウントの使用
「複数回入力する必要がある」ほとんどすべてのコマンドは、引数として数値を受け入れます。たとえば、削除コマンドd
、ラインジャンプコマンドk
、など。
したがって、6行を削除する場合は、dコマンドを6回実行するか、6d
とだけ言うことができます。 。
これは削除用です。テキスト内を移動するときにも削除できます。 3語移動したい場合は、3w
と入力するだけです。 または3e
カーソルを置きたい場所に応じて、最初または最後に。
19。ファイル内の進捗状況を知る
長いファイルをスクロールしていて、現在の場所を知る必要がある場合は、このコマンドを実行してください。これにより、ファイル内の現在の位置のパーセンテージがわかります。

上の画像でわかるように、カーソルの現在の位置がファイルの末尾から40%の位置にあることがわかります。これを行うコマンドは、Ctrl-G
と入力することです。 コマンドモードのとき。
20。 LinuxVIMコマンドのヘルプモジュール
便利なツールであるヘルプコマンドについて説明して、この投稿を終了します。 Linuxのマニュアルページと同様に、help
コマンドを使用すると、ユーザーはすべてのvimコマンドを詳細に理解できます。これは、削除コマンドに対してヘルプコマンドが表示する例です。
:help d

結論
これがvim-landでの旅の始まりになります。 VImの学習に合わせて探索するコマンドや機能はたくさんあります。
しかし、安心できることが1つあります。一度VIMを十分に学べば、他のエディターを使い始めたときにそれらの機能を期待することは、あなたにとって第二の性質になります!
参考資料
- ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf –VIMが提供するすべてのものを網羅したVImによる572ページの完全なガイドブック。