いろいろ便利な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
で、 before
を after
に置き換える。
:%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?
では、違うものが出てくる。
fileencodingは、ファイルの書き出し時に使う文字コード。
fileencodingsは、ファイルを開くときに、使ってね、という文字コードの指定で、複数指定できる。
という感じだと思われる。また読む。↓
vim エンコーディング・言語設定まとめ – MY ROBOTICS
これはまた読みたい。
ファイルを開くときに文字コードを指定したい
vim -c ":e ++enc=utf-8" filename.txt
-c
は、開いてすぐにコマンドを打つ、というパラメータです。
文字コードは、曖昧でも通るみたいです。
- EUC -> euc-jp, EUC-JP など
- Shift-JIS -> sjis, shift-jis, SJIS, SHIFT-JIS など
- JIS -> iso-2022-jp(JISコードの時)
- UTF-8 -> utf8, utf-8, UTF8, UTF-8 など
開いたファイルを別の文字コードで表示したい
開いた後に文字コードを指定して開き直す場合は、以下。 結果として、開くときに指定したのと同じことになります。
: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
もできる。
もっと知りたくなったらググる。