鶏口牛後な日々

心の赴くまま、やりたいことを仕事に。

いろいろ便利なvim/Unixコマンド倉庫(初心者向け)[WIP]

自分が覚えるためのメモ。 色々なところで知った内容をシンプルに記録。


移動系

vimでカーソル移動

h(左)
j(下)
k(上)
l(右)

vimで行移動

gj(下)
gk(上)

行の中で移動

0 行の先頭へ(インデント無視して先頭へ)
^ 行の先頭へ(文字がある先頭へ)
$ 行の末尾へ
+ 下の行の先頭へ
- 上の行の先頭へ

ページ単位で移動

ctrl + u 半画面分 上へ
ctrl + d 半画面分 下へ
ctrl + b 一画面分 上へ
ctrl + f 一画面分 下へ
{ 段落毎に上へ
} 段落毎に下へ
gg そのファイルの先頭へ
G そのファイルの末尾へ
:100 100行目へ

単語単位で移動

b 前へ
w 後ろへ
e 後ろへ

元へ戻す

u

vimで行番号を表示したい

:set number

vimで行番号を非表示にしたい

:set nonumber

行番号を恒常的に表示させたい

vi ~/vimrc に、以下を記述

set number

スペースで表示されているインデントをタブに変換

: set expandtab
: retab!

タブで表示されているインデントを空白に変換

: set expandtab
: retab

vimのコメントの色を変えたい

echo “hi Comment ctermfg=gray” >> ~/.vimrc

上記例では、コメントの色を灰色に変更しています。

下に一行追加したあと、insertに切り替える

o

削除

x カーソル上の文字を消す
s カーソル上の文字を消してインサートモードに切り替える
cc 当該行を削除したあと、insertに切り替える
dd 当該行を削除
D カーソル位置から行末まで削除
C カーソル位置から行末まで削除して, インサートモードに入る
cit タグの中身を消して、インサートモードに入る
(cはインサートモードへの切り替え、iは範囲選択、tはタグらしい。tの代わりに<などを入れると、<>で囲まれた範囲を消す)

参考: vimでhtmlをスラスラ書くためのレシピ - Qiita

コピー&ペースト

yy カーソル行をコピー
3yy カーソル行から3行をコピー
p ペースト
3p カーソル行から3行後にコピー
vで範囲指定 → y 範囲選択した後に、選択範囲をコピー

ヴィジュアルモード

v 範囲選択ができる

画面分割

:vsp 垂直方向に画面を分割
:10vsp のように数字を指定すると、画面幅を指定できる
ショートカットは、 ctrl + w のあと v
この場合でも、vの前に数字を入れることで幅を指定できる

:sp 水平方向に画面を分割
ctrl + w のあと s 同上

ctrl + w のあと l で右のウィンドウに移動
ctrl + w のあと h で左のウィンドウに移動、jで下、kで上に移動

Ctrl + w のあと o current window以外を閉じる
:help splits もしくは、 :h window でヘルプ参照

ディレクトリリストからファイルを開く

:e %:h これで今使っていたファイルのフォルダのlistが開くのでカーソルを合わせてEnterで開ける

画面を分割して複数ファイルを同時に見ながら作業する際に地味に便利。

検索

/ + Enter 後方検索
n 上記で検索した後、次の検索結果に進む(カーソルを進める)
N 前の検索結果に戻る(カーソルを戻す)
? + Enter 前方検索

文字列置換

:s が置換に当たる。
:%s で、今開いているファイル内で置換する、という意味になる。
:%s/before/after で、 beforeafter に置き換える。
:%s/before/after/g で、1行内に、複数回 before が出てきた場合も、全て置換する。
:%s/before/after/gc で、検索で引っかかった before ごとに確認しながら置換する。(置換する時は、 y

小文字→大文字

Shift + ^ もう一度おすと、小文字に戻る。こいつ地味に便利。

直前の動作を繰り返し

.(ドット)  インデントや、行頭一文字削除などの操作をして、同じ動きを繰り返したい時などに便利。

やり直し

u 直前の動作をなかったことにする
Ctrl + u redo

インデント

>> 右へインデント
<< 左へインデント
v を押してヴィジュアルモードで複数行選択し、>> でインデント、そのあとさらにインデントしたい場合は . で直前の動作を繰り返すと、複数行の複数インデントが可能になる(便利)

複数行を一気にコメントアウト

Ctrl + v で visual blockモード(矩形モードというらしい)に切り替え
j で範囲を選択
Shift + i で、 //# を入力
esc で全行に反映

複数行一気にコメントアウトしたものを、戻す

Ctrl + v でvisual blockモードに切り替え
j で範囲選択
d  で、先頭文字削除
もしコメントアウト// の場合は、 .(ドット) を押せば良い(=1つ前の動作を繰り返してくれるので)

文字コードを確認する

 :set fenc?
:set fileencoding?

fenc と、 fileencoding は同様に認識されます。

一方で、「fileEncoding」とかちょっと適当にすると、 Unknown option と出ますので、上の二つのどちらかにしましょう。

結果は、→ fileencoding=latin1 といったように表示される。

確認するだけなのに、 set と入れるのは、ちょっと誤解を生みますよね〜。

set コマンドというのは、オプションを設定するコマンドで、 set <オプション名> と書く。

上の方でも、 set number とか、 set expandtab とか書いています。

それに ? をつけると、現在のオプション値がわかるというもの。

set fenc? ということで、オプション「fileencoding」の値が何か? って聞いているってことですね。

文字コード変わっちゃったら怖いから、毎回メモ(このブログ記事)を見返しているというw

そろそろ覚えないと。

shift-jis は、latin1 と表示されるので、違うものと勘違いしない。


継続調査中: encとfenc のちがい。

fileencodingと、encoding。 set fenc? set enc? では、違うものが出てくる。

エンコーディングは、vim内部で使用される文字コード

fileencodingは、ファイルの書き出し時に使う文字コード

fileencodingsは、ファイルを開くときに、使ってね、という文字コードの指定で、複数指定できる。

という感じだと思われる。また読む。↓

vim エンコーディング・言語設定まとめ – MY ROBOTICS

これはまた読みたい。


ファイルを開くときに文字コードを指定したい

vim -c ":e ++enc=utf-8" filename.txt

-c は、開いてすぐにコマンドを打つ、というパラメータです。

文字コードは、曖昧でも通るみたいです。

開いたファイルを別の文字コードで表示したい

開いた後に文字コードを指定して開き直す場合は、以下。 結果として、開くときに指定したのと同じことになります。

:e は、edit の意味で、同じファイルを開き直すコマンドです。

省略形ってだけなので、 edit とちゃんと打ってももちろん良い。

:e ++enc=shift-jis ShiftJISで表示
:e ++enc=utf-8 utf-8で表示
:e ++enc=euc-jp euc-jpで表示

++enc は、 e コマンドのオプションで、 edit するエンコーディングを指定します。

文字コードを変更する

:set fenc=shift-jis

変更した時は、:wq で保存して閉じる。 こちらは、表示だけでなく、変わってしまうので要注意。


Unixコマンド

OSの情報を見る

uname -a (-a は、全て見るオプション)

今使っているシェルを確認する

echo $SHELL

使えるシェルの一覧を取得する

cat /etc/shells

shellを変更する

上で確認したパスを指定する

chsh -s /usr/local/bin/bash

ログファイルなんかを開いて、一番下を監視

tail -f <ファイル名>

どのファイルか分からないけど、Hogeディレクトリ配下で、piyoという文字列を含んでいる部分とそのテキストファイルを知りたい。

find ~/Hoge -name '*.txt' | xargs grep "piyo"

コマンド履歴を見る

history

コマンド履歴の表示する個数を制限

history 50

→50個表示。

実際は数字を指定しないと、ずっと開いたままのterminalだとダバーーーっとたくさん出てきすぎるので注意。

コマンド履歴から実行する

!<履歴番号>

ログファイルなんかを開いて、一番下を監視

tail -f <ファイル名>

ファイルの文字コードを調べる

file -i ファイルパス

ファイルの中身をクリップボードにコピーする

pbcopy < ファイル名

これ知るまで、ファイルをvimで開いて、トラックパッドで範囲指定して、 ctrl + c してました。 こういうの絶対あると思っていたんだよなぁ。

screenコマンド

screen -ls

一覧を確認できる

ctrl + t

普通はctrl + a らしいのだが、先輩の影響でか私はtになっている。ので参考にしないでください。

command + shift + [

これで→キーで画面を上下でき、上の方まで確認ができる。スクロールできない画面も多いので、そういう時に便利。 git graphみたいなのとか、コマンドラインでエラーを見た時に上を確認したい場合など。

zipコマンド

 zip -r hogedir.zip hogedir/

-rはフォルダを再起的にzipする場合。

注意するのは、zipの後、output、input の順に入力すること。

間違えていると、 zip error: Nothing to do! というエラーが出る。

unzip もできる。

もっと知りたくなったらググる