Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vim超入門まとめ[.vimrcの例]

$
0
0

はじめに

私自身vimを使い始めたのは最近のことですので、詳しい方からしたら今更感のあるものとなってしまうと思います。
また、見様見真似で覚えたことが多いので、粗もあるかと思います。ここはこうした方がよいなどございましたら更新していくつもりですので、コメントいただけると幸いです。

vimとは

テキストエディタの一つで、ターミナル上で動作する。

vimを使い始めたきっかけ

Ubuntuを使い始めたこと

vimの利点[主観]

・ターミナル上で動作するため、ssh接続でテキスト編集ができる。
・キーボードのみで操作可能なので、ターミナル操作からの流れでキーボードから手を話すことなく作業が可能。
・コピー&ペーストが素早く、自分のソースコードを再利用したりオープンソースを活用しやすい。
.vimrcというファイルによって簡単に設定ができる。

vimの欠点[主観]

・メモ帳のイメージで使用するととてつもなく不便。
・コマンドを覚えるまでのハードルが(少し)高い。
・vim以外のテキストエディタを使えなくなる。(笑)

vim入門

1.基本操作

・基本的な移動は←↓↑→の順にh,j,k,l
iを押すとインサートモード。ここではメモ帳のようにテキスト編集可能。移動は十字キー
Escを押すとノーマルモードに戻る
:wで保存
:qでvimを閉じる
:wqで保存して終了

2.カット&ヤンク&ペースト

1行

コマンド動作
ddカット
yyヤンク
pペースト

n行 (コマンドのnには任意の数字を入れてください)

コマンド動作
nddカット
nyyヤンク
pペースト

ビジュアルモード

視覚的に見ながら複数選択ができるモード

wordでいうところの、Shiftキーを押したまま矢印キーを押すもの。
マウスで左を押したままカーソルを移動するもの。

vでビジュアルモードに移行
・ノーマルモードと同じ移動ができる
・選択中にyでヤンク、dでカット、自動でノーマルモードに戻るのでそのままpでペーストできる
Escでノーマルモードに戻ることができる

このとき、よく使うのがggvGyで、これは一番上から一番下までヤンクという意味です。:%yもほぼ同じですが、こちらの方が打ちやすく個人的には好きです。このとき、最後の行の1文字目までしか選択してくれないことには注意してください。

3.他のファイルからヤンク&ペースト

ここまで、コピーやペーストのやり方を記してきましたが、別でvimを起動すると貼り付けることができません。
そこで、vim上で他のファイルを開く必要があります。

vimを分割

そのまま別ファイルを開いても構いませんが、vimを分割した方が使いやすいです。

コマンド動作
:split縦に一つタブを作成して同一ファイルを開く
:vsplit横に一つタブを作成して同一ファイルを開く
:new縦に分割して新規ファイルを開く
:vnew横に分割して新規ファイルを開く

分割したタブへ移動したい時はCtrl+w wCtrl+w hCtrl+w jCtrl+w kCtrl+w lで移動できます。
分割したタブを閉じたい時は:qで閉じることができます。変更を加えていた場合は:wqとなります。

別ファイルを開く

:open filenameで指定したファイルを開く
:open path/to/filenameで別ディレクトリのファイルを開ける

このとき、開きたいファイル名やパスがわからない時は:open .のようにするとフォルダの中身の一覧が見られるし、ディレクトリ移動もできます。

4..vimrcについて

.vimrcとはvimを設定するファイルのことです。基本的にはホームディレクトリに置きます。ドットがついているので$ lsをした時には表示されないので邪魔にはならないので心配しないでください。もしあるか不安なら$ ls -aで存在を確認できます。

.vimrcの例

私が現在使用しているものです。他の方のものを見て好きなものを抜き出しているので、パクリがあるかもしれません。何かあれば消させていただきますので、ご指摘ください。

" タブ入力を複数の空白入力に置き換える
set expandtab
" 画面上でタブ文字が占める幅
set tabstop=2
" 連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅
set softtabstop=2
" 改行時に前の行のインデントを継続する
" set autoindent
" 改行時に前の行の構文をチェックし次の行のインデントを増減する
" set smartindent
" smartindentで増減する幅
" set shiftwidth = 2
" 行を表示
set number

if has("autocmd")
  " ファイルタイプの検索を有効にする
  filetype plugin on
  " ファイルタイプに合わせたインデントを利用
  filetype indent on
  " sw=softtabstop, sts=shiftwidth, ts=tabstop, et=expandtab
  autocmd FileType c           setlocal sw=4 sts=4 ts=4 et
  autocmd FileType html        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType ruby        setlocal sw=2 sts=2 ts=2 et
  autocmd FileType js          setlocal sw=4 sts=4 ts=4 et
  autocmd FileType zsh         setlocal sw=4 sts=4 ts=4 et
  autocmd FileType python      setlocal sw=4 sts=4 ts=4 et
  autocmd FileType scala       setlocal sw=4 sts=4 ts=4 et
  autocmd FileType json        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType html        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType css         setlocal sw=4 sts=4 ts=4 et
  autocmd FileType scss        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType sass        setlocal sw=4 sts=4 ts=4 et
  autocmd FileType javascript  setlocal sw=4 sts=4 ts=4 et
endif


" インクリメンタルサーチ(1文字入力ごとに検索する)
set incsearch
" 検索パターンに大文字小文字を区別しない
set ignorecase
" 検索パターンに大文字を含んでいたら大文字小文字を区別する
set smartcase
" 検索結果をハイライト
set hlsearch
" Escキー2度押しでハイライトの切り替え
nnoremap <silent><Esc><Esc> :<C-u>set nohlsearch!<CR>
" 行が折り返し表示されていた場合、行単位ではなく表示行単位でカーソル移動
nnoremap j gj
nnoremap k gk
nnoremap <down> gj
nnoremap <up> gk


" コマンドモードの補完
set wildmenu
" 保存するコマンド履歴の数
set history=5000


" マウスの有効化(カーソル移動・スクロール移動)
if has('mouse')
  set mouse=a
  if has('mouse_sgr')
    set ttymouse=sgr
  elseif v:version > 703 || v:version is 703 && has('patch632')
    set ttymouse=sgr
  else
    set ttymouse=xterm2
  endif
endif


" ペースト設定(クリップボードからコピーする際の自動インデント無効化)
if &term =~ "xterm"
  let &t_SI .= "\e[?2004h"
  let &t_EI .= "\e[?2004l"
  let &pastetoggle = "\e[201~"

  function XTermPasteBegin(ret)
    set paste
    return a:ret
  endfunction

  inoremap <special> <expr> <Esc>[200~ XTermPasteBegin{""}
  endif


" 自己流ショートカット
" コメントアウト
nnoremap <C-i> 0i//<Esc>
" アンコメントアウト
nnoremap <C-s> 0xx
" 空白行を追加するがノーマルモードを維持
nnoremap <S-o> o<Esc>

" カーソルの左右移動で行末から次の行への移動を可能にする
set whichwrap=b,s,h,l,<,>,[,],~
" カーソルラインをハイライト
color desert
set cursorline
" カレント行ハイライトを下線の代わりに文字強調にする
hi CursorLine term=bold cterm=bold guibg=Grey40

~/以外に置きたい場合は、任意の場所に.vimrcを置いて、開き方を$ vim -u path/to/.vimrc filenameとするとできます。

5.ここまでくればもうvimの良さに気がつくと思います!

 おまけ

その他のコマンド

先程は、触れやすくするために似たような動作をするコマンドを省略しましたので、それらを少しだけ紹介しておきます。

コピー系

コマンド動作
:set number行番号を表示
:n,m yn行からm行までヤンク
:n,m dn行からm行までカット
npn個ペースト

移動系

コマンド動作
Ctrl+d半ページダウン
Ctrl+u半ページアップ
Ctrl+f1ページダウン
Ctrl+b2ページアップ
zzカーソル行を中心
ztカーソル行を一番上

検索&置換系

コマンド動作
/namenameという文字列を検索
:s/before/afterカレント行の先頭のbeforeをafterに置換
:s/before/after/gカレント行のすべてのbeforeをafterに置換
n検索結果を次へ
Shift+n検索結果を前へ

矩形選択モード

一斉に字下げする際に重宝します。
Ctrl+vで矩形選択モードに移行
$で長さの違う行をすべて選択
yでヤンク、dでカット
Escでノーマルモードに戻る


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>