コマンドvimについて(初歩的な部分)

この記事は ウェブクルー Advent Calendar 2018の8日目の記事です。

昨日はk5jpWCさんの「業務フロー、整理してますか?」でした。

8日目は@hosokawaが担当致します。よろしくお願い致します。


はじめに

centosにおいていつもはviを使うのですがvimの方が多機能でオシャレなので少し調べました。基本的な操作を行うまでを記載しております。

御見苦しい点など多々ありますでしょうがどうぞご容赦ください。


vimとは

Viという世界でも広く使われているテキストエディタの拡張版

VimScriptというものでVimの拡張を自由に表現することが出来る

要するにviの細かいカスタマイズが出来る進化したバージョン。


インストール

ソースコードからインストールする場合もありますが今回はyum(パッケージ管理ソフト)を使います。

$ yum -y install vim-enhanced


とりあえず使ってみる

vimには通常のノーマルモードと入力時のインサートモードがあります。

ノーマルモードではテキストの閲覧のみで入力は出来ません。

入力時はインサートモード、カーソル移動などをするときはノーマルモードで移動したほうが安全です。

以下が簡単な操作です。

操作内容  
コマンド   

インサートモード
a or i

ノーマルモード
esc


k


j


l


h

一文字削除
x

一行削除  
dd

次行を新規行として挿入しインサートモード
   (インサートモードにて)o      

設定内容を保存して終了
(ノーマルモードにて):wq or :x

設定内容を保存せず終了
(ノーマルモードにて):q!

vimで開いてノーマルモードからインサートモード(a)、入力したらノーマルモード(esc)に戻し保存(:wq)。て流れです。

続いては移動コマンドです。全てノーマルモードで行います。~~(移動はノーマルモード、入力はインサートモード。

操作内容  
コマンド   

0     
行頭へ

$    
 行末へ

gg
ファイルの先頭へ

G
ファイルの最終行へ

/
マッチする文字を検索し移動

w
次の単語の先頭へ

e     
単語の最後へ

b      
前の単語の先頭へ

Ctrl+f      
次のページへ

Ctrl+b  
前のページへ

操作内容  
コマンド   

y
コピー

Y    
 行をコピー

p
ペースト

P
現在位置にペースト

x
カーソル下の一文字を削除

d
削除

D    
行内のカーソル以降を削除

dd
行を削除

u
元に戻す

C-R
操作を進める

r
変更(一文字)

R
変更(入力したもの全部)

c
 一文字消してインサートモードへ

C
一行消してインサートモードへ

A
行末に移動してインサートモードへ

a
カーソルの一つ右からインサートモードへ

I
行の始まり(文字の開始位置)からインサートモードへ

>
右へインデント

<
左へインデント

gu
小文字へ

gU
大文字へ

.
事前の操作を繰り返す

ここまではviとほとんど変わりません。

以降がvim特有のコマンドになります。


テキストオブジェクト

操作内容  
コマンド

daw    
         カーソル前後の単語を削除する

da      
カーソル前後()に囲まれた部分を()も含めて削除する           

di    
    カーソル前後の()に囲まれた部分を削除する

ca   
カーソル前後()に囲まれた部分を()も含めて変更する

ci   
    カーソル前後の()に囲まれた部分を変更する

das   
           カーソル前後の文を削除する

dat   
          カーソル前後のタグを削除する

基本的な操作は以上になります。

続いてvim特有のモードについてご紹介します。


ビジュアルモード

ビジュアルモードではテキストを文字単位、行単位、矩形単位で選択し、選択したテキストに対してVimのコマンドを適用出来ます。

Vimでは3種類のビジュアルモードが使えます。

文字単位で選択するビジュアルモード、行単位で選択するビジュアルラインモード、矩形(長方形)で選択するビジュアルブロックモードの3種類です。

ノーマルモードで下記コマンドを入力するとそれぞれのビジュアルモードが使用できます。

操作内容  
コマンド   

文字単位
v

行単位
V

短径
ctrl+l

ビジュアル解除
Esc


明日は、wc-takaharaさんです。よろしくお願い致します。

ウェブクルーでは一緒に働いていただける方を随時募集しております。

お気軽にエントリーくださいませ。

開発エンジニアの募集

フロントエンドエンジニアの募集