0.0 システムの理解#
- システムとは何か?
- マウスでクリックし、キーボードで入力し、映画を見たり、ソフトウェアをインストールしたりすることができる。簡単に言えば、人間とコンピュータのインタラクションに依存するものであり、起動時にはシステムに依存する。
0.1 Linux オペレーティングシステムの理解とオープンソースの提案:Linux の多様なバージョン#
- 現在、世界で人気のあるコンピュータシステム:
- Windows - ビル・ゲイツ
- GNU/Linux - リーナス・トーバルズ - オープンソース
- Unix(Linux の父) - トンプソンとリッチが共同で - 政府機関や企業などに有料で使用される
- Linux ディストリビューション:Ubuntu Centos Red Hat Kali ……
0.2 オープンソースの意味#
- 公開、共有、共同進歩
- オープンソースは必ずしも無料ではない。
0.3 Linux の用途と各種ディストリビューション#
- Linux は主にサーバーで使用される。
- Linux は厳密にはオペレーティングシステムのカーネルを指し、オペレーティングシステムには多くのユーザーグラフィカルインターフェースや他のユーティリティが含まれている。
GNU 一般公衆ライセンス(GPL)に従う限り、個人や機関は Linux のすべての基盤となるソースコードを自由に使用し、変更し、再配布することができる。
Linux の派生: - Debian - Ubuntu, Deepin, Raspberry Pi OS, Knopix
Fedora - RedHat, Centos, Moblin
OpenSUSE - GeckoLinux, openSUSE EcoLab Spin
1.1 Vmware 仮想マシン#
システムのインストール方法
- 実機
- デュアルシステム
- 仮想マシン
1.2 VMware 16#
- ソフトウェアのバージョンであり、大多数の人は新しいバージョンを追求するが、企業では安定性がより重要である。私たちは企業の基準に従って学ぶべきであり、企業が求めるものを学ぶ。
1.3 15 から 16 へのアップデートに関する言及#
-
Vmware15 は Ubuntu20.04 をサポートしていない。
アップデートバージョンは仮想マシンの復元に影響を与えない。
2.1 まずは Ubuntu を試す#
詳細は:Linux(Ubuntu)ゼロからの体験教育
PS:ソフトウェアのインストール履歴を確認することは学習に役立つ。
2.2 VMware Tools#
- Ubuntu のミラーソースを設定する
- VMware Tools のインストール
tar zxvf VMwareTools-10.3.22-15902021.tar.gz \
cd vmware-tools-distrib/
ls
sudu ./vmware-install.pl
2.3 Ubuntu 20.04 の設定#
詳細は 2.1 のビデオリンクを参照。
2.4 Linux の他のディストリビューションのインストールガイド#
- 商業ディストリビューション
- コミュニティディストリビューション
2.5 ダウンロードガイド#
- 公式サイトからダウンロード
3.1 Linux で私たちが学ぶべきことは何か?——Linux の 4 つの構成要素#
Linux の入門は「Linux」を学ぶことではなく、まずは各ディストリビューションの Linux を体験し、他のシステムとの違いや共通点を比較することだ。Linux で学ぶべきは Shell である。
Linux オペレーティングシステムの 4 つの部分
- Linux カーネル
- GNU(「GNU は Unix ではない!」)ツール
- GUI デスクトップ環境
- アプリケーション
- PS:IT 用語であり、通常の英語の音声記号に従っているわけではなく、専門用語である。
3.2 Linux はコマンドかグラフィカルインターフェースか?——GUI とは何か?GNU とは何か?GNU/Linux と Linux の違いは何か?#
Linux カーネルは以下に基づいている:
-
GUI - インターフェース
-
GNU - コマンド、システムツール
3.3 Linux カーネルの構成要素#
Linux カーネル
-
- ハードウェアデバイスの管理
-
- ソフトウェアプログラム(システム)、オペレーティングソフトウェア
-
- システムメモリ
-
- ファイル管理
3.4 ファイルシステム#
ファイルシステムは読み書きの標準である。
- Linux におけるパーティションの概念 ext ext2 ext3 ext4
- Windows のディスクファイル管理の概念 FAT32 NTFS exFAT
3.5 GNU コア:coreutils と shell#
GNU 組織
Unix 上に存在するいくつかのソフトウェアは、Linux カーネル自体には存在しないため、GNU は Unix を模倣し、Linux のためにいくつかの必要なソフトウェアを作成した。
GNU コア Coreutils
元々Unix 上にあったいくつかのコマンドとツールが Linux に移植され、Linux で使用される一連のツール、coreutilities ソフトウェアパッケージを含む:
-
ファイルを処理するためのツール
-
テキストを操作するためのツール
-
プロセスを管理するためのツール
-
GNU コア Shell
-
ユーザーが使用するためのソフトウェアであり、ユーザーはそれを使ってコンピュータを操作し、インタラクションを実現する。
-
コマンドラインシェルはコマンドラインインターフェース(CLI)を提供する。
-
グラフィカルシェルはグラフィカルユーザーインターフェース(GUI)を提供する。
3.6 Shell:CLI と GUI、コマンドとインターフェース#
Shell の種類:bash、zsh、korn、tcsh、oh-my-zsh
3.7 GUI デスクトップ#
Xwindows、KDE、GNOME、Unity
結論:経験の紹介
重点は Shell にある。
思考図を描いて Linux オペレーティングシステムの関係をまとめる。
4.1 CLI の準備#
- CLI 関連の設定、Preferences を選択
- Theme Variant テーマの変更
Open new terminals in 新しいターミナルを開く方法、Tab は同じウィンドウ内で新しいターミナルを作成し、Window は新しいウィンドウを開いて新しいターミナルを開く。
New tab position 新しいターミナルの位置、デフォルトは前回の位置。 - ショートカット設定、Ctrl+Alt+T で新しいターミナルを開く。
4.2 CLI ターミナル#
yeats@yeats-virtual-machine:~$
- ユーザー名 @マシン名:現在のディレクトリ $ はユーザーの入力を待っていることを示す。
- ~ はユーザーのホームディレクトリを示す。
/home
はすべてのユーザーファイルを格納するルートディレクトリである。
Settings の About でマシン名と関連情報を確認できる。
4.3 Linux コマンドのパラメータを理解し、さまざまなコマンドを自在に使用する —— 授けるのではなく、まずは ls で始める。#
ls
コマンドはターゲットリストを表示するために使用され、Linux で最も使用されるコマンドの一つである。ls -l
の略は ll であり、現在のディレクトリの可視ファイルの詳細情報をリストアップし、出力される情報は左から右にファイル名、ファイルタイプ、権限、ハードリンク数、所有者名、グループ名、サイズ(バイト)を含む。man
コマンドは Linux のヘルプコマンドであり、man コマンドを使用することで Linux 内のコマンドヘルプ、設定ファイルヘルプ、プログラミングヘルプなどの情報を確認できる。
推奨:Linux コマンド検索
4.4 Linux のルートディレクトリ、それらと Windows の違い#
- Windows はドライブレター、ファイルディレクトリは \(バックスラッシュ)
- Linux ではすべてがファイルであり、ファイルディレクトリは /(スラッシュ)
4.5 Linux のルートディレクトリの解析、fhs の権威ある論文、すべてのディストリビューションのフォルダ分布を理解する。#
/ linux
ルートディレクトリ/bin
バイナリディレクトリ GUN ツール コマンド/cdrom
光ディスク/etc
システム設定ファイル/home
ユーザーのホームディレクトリ/lib
ライブラリディレクトリ ライブラリファイルを格納/lost+found
システムエラーが発生した際に失われた断片をこのディレクトリに置く/mnt
マウント(外部デバイスとコンピュータを接続する)ディレクトリ/proc
擬似ファイルシステム/run
実行ディレクトリ/snap
パッケージ管理、ソフトウェアパッケージのインストール管理方法/tmp
一時ディレクトリ/var
可変ディレクトリ/boot
ブートディレクトリ/dev
デバイスディレクトリ/media
メディアディレクトリ/opt
オプションディレクトリ/root
root ユーザーのホームディレクトリ 管理者/sbin
システムバイナリディレクトリ、GNU の上級管理者が使用するコマンドやツール/srv
サービスディレクトリ/usr
ユーザーバイナリディレクトリ、GNU ツール- 詳細は:FHS ファイルシステム階層標準
4.6 cd コマンド#
cd
ユーザーのホームディレクトリに入るcd..
一つ上の階層に切り替えるcd –
前回の作業ディレクトリに戻る。
4.7 Ctrl + C? それは Linux ではコピーではない。#
- Ctrl+c(フォアグラウンドプロセスを終了する)は、SIGINT 信号をフォアグラウンドプロセスグループ内のすべてのプロセスに送信し、プログラムの実行を強制終了する。
- Ctrl+l 画面をクリアする。
4.8 絶対パス#
- 完全なパス D:\Study\Frank_FuckPPT\Linux
4.9 相対パス#
- 不完全なパス \Frank_FuckPPT\Linux
4.10 Linux のパスと Windows のパス#
gedit /Doucument/doc/1.txt
ルートディレクトリの操作 絶対パスgedit ~/Document/doc/1.txt
現在のディレクトリ 相対パスgedit ./Document/doc/1.txt
現在のディレクトリ 相対パスgedit Document/doc/1.txt
現在のディレクトリ 相対パス
4.11 どのように練習するか?経験の授業#
- 単点記号。現在のファイル
- 二点記号.. 現在のディレクトリの親ディレクトリ
4.12 ls の高度な使用法:フォルダ内のさまざまなマッチングフィルタ記号#
*
は複数の記号を置き換える?
は一つの記号を置き換える-a, --all
ディレクトリ内のすべてのファイルをリストアップし、「.」で始まるファイルも含む-l, --format=long, --format=verbose
各ファイル名の他に、ファイルタイプ、権限、ハードリンク数などの情報を追加表示する-F, --classify, --file-type
各ファイル名の後にそのファイルのタイプを示す文字を付加する。
4.13 touch コマンド#
touch
コマンドには二つの機能がある。
- 一つは既存のファイルのタイムスタンプをシステムの現在の時間に更新する(デフォルトの方法)。
- 二つ目は新しい空のファイルを作成するために使用される。
4.14 cp コマンド#
cp
コマンドはソースファイルまたはディレクトリをターゲットファイルまたはディレクトリにコピーする。- ソースファイル:ソースファイルリストを指定する。デフォルトでは、cp コマンドはディレクトリをコピーできない。ディレクトリをコピーするには、-R オプションを使用する必要がある。
- ターゲットファイル:ターゲットファイルを指定する。「ソースファイル」が複数のファイルである場合、「ターゲットファイル」は指定されたディレクトリである必要がある。
cp
コピーしたいファイルは? どこにコピーしたいのか?- -i 既存のファイルを上書きする前にユーザーに確認する。
-R/r
再帰的に処理し、指定されたディレクトリ内のすべてのファイルとサブディレクトリを処理する。
4.15 cp 再帰練習のテクニック#
pwd 現在の作業ディレクトリを表示する。
cp -R ./*.java ~/Documents/temp/
4.16 Linux ターミナルのカーソル移動テクニック#
- Tab 自動補完
- Ctrl + E 行の末尾に移動
- Ctrl + B カーソルを左に移動
- Ctrl + H カーソル前の一文字を削除(バックスペースに相当)
- Ctrl + T カーソル前の一文字を後ろに移動
- Ctrl + R 以前に使用したコマンドを検索
- Ctrl + W カーソル前の一単語を削除
- Ctrl + U カーソル前の内容を削除
- Ctrl + K カーソル後の内容を削除
4.17 lnk リンクファイルの紹介#
-
.lnk ショートカット
-
Linux リンクファイル
-
- シンボリックリンク(ソフトリンク)
ショートカットを指す。元のファイル / フォルダは存在する必要がある。
-
- ハードリンク
コピーを指す。元のファイル / フォルダは存在する必要がある。
4.18 シンボリックリンクとハードリンク#
ln
コマンドはファイルにリンクを作成するために使用され、リンクの種類はハードリンクとシンボリックリンクの二つに分かれる。デフォルトのリンクの種類はハードリンクである。シンボリックリンクを作成するには "-s" オプションを使用する必要がある。ln
元のファイル名 リンクのファイル名ls -l
確認する- ソフトリンク:指向があり、別のファイルである。
- ハードリンク:指向がなく、同じメディアである。
- ソフトリンクはリンクファイルをコピーする。
4.19 注意事項#
- シンボリックリンク
- ソフトリンク
4.20 mv コマンド#
- mv コマンドはファイルまたはディレクトリの名前を変更するために使用される。またはファイルを一つのディレクトリから別のディレクトリに移動する。
- 名前を変更する場合、mv 誰を変更するか 何に変更するか。
4.21 移動とトリッキーな操作#
- 移動する場合、
mv
移動するファイル 移動先のディレクトリ。 - 入力後、
cd !$
- !$ はコマンド履歴の中で最近の記録をリストアップして実行する。
4.22 rm—— 年間ベスト削除コマンド#
sudo rm -rf /*
このコマンドは非常に危険である。rm
コマンドはディレクトリ内の一つまたは複数のファイルやディレクトリを削除することができ、特定のディレクトリとその下のすべてのファイルおよびサブディレクトリを削除することもできる。リンクファイルに対しては、リンクファイル全体を削除するだけで、元のファイルはそのままである。rm -i
確認がある。rm -i -rf
確認なし。- 注意:Linux にはゴミ箱がない。
4.23 フォルダを作成し、フォルダを削除する。#
mkdir
ディレクトリを作成するために使用される。rmdir
空のディレクトリを削除するために使用される。
4.24 ファイルタイプ#
file
指定されたファイルのタイプを検出するために使用される。- Windows ではテキストは txt。
- Linux ではテキストは text。
4.25 cat、more、less#
cat
複数のファイルを接続し、標準出力に印刷する。短いテキストに適している。-n, --number
すべての行に番号を付け、1 から始まる。more
ファイルの内容を表示し、一度に一画面表示する。- b 前のページ space 次のページ q 終了
less
分割画面で上下にページをめくる。less
コマンドはユーザーがファイルを前後に閲覧できるようにし、more
コマンドは前にしか進めない。less
コマンドでファイルを表示する際、PageUp キーで上にページをめくり、PageDown キーで下にページをめくる。less プログラムを終了するには Q キーを押す。- ファイル内を検索するには / を入力する。
4.26 tail と head コマンド#
-
tail
指定されたファイルの末尾の数行を画面に表示する。tail -n 2 demo.c
-
head はファイルの先頭部分を表示する。
head -n 2 demo.c
5.1 タスクマネージャー#
- プロセス、パフォーマンス、ユーザー、サービス
- サービス:ユーザーの行動を監視し、ユーザーにサービスを提供する。
5.2 ps と top コマンド#
top
はシステムの全体的な実行状況をリアルタイムで動的に確認できる、情報を総合的に監視するための便利なツールである。ps
(プロセスステータス)は Linux で最も複雑なコマンドの一つであり、最も基本的で非常に強力なプロセス表示コマンドである。このコマンドを使用することで、どのプロセスが実行中であるか、実行状態、プロセスが終了したか、プロセスがゾンビであるか、どのプロセスが過剰なリソースを占有しているかなどの情報を確認できる。要するに、大部分の情報はこのコマンドを実行することで得られる。ps axo pid,comm,pcpu
# プロセスの PID、名称、CPU 使用率を確認する。ps -aux | grep named
# named プロセスの詳細情報を確認する。
5.3 kill コマンド#
ps -aux | grep named
# named プロセスの詳細情報を確認する。
kill pid
プロセスを終了する。
5.4 マウントの意味#
詳細は:linux マウントの役割 (https://blog.csdn.net/qq_35583154/article/details/86569903)
新しいハードディスクを挿入し、新しいディスク領域 sdb1 を分割したが、まだ / には属していない。新しいハードディスクの領域 sdb1 を作業ディレクトリの / Share / フォルダにマウントし、その後この / Share / フォルダにアクセスすることは、このハードディスクの sdb1 パーティションにアクセスすることと同じである。/Share/ に対するすべての操作は、sdb1 内のファイルに対する操作と同じである。
5.5 mount#
mount
は Linux システム外のファイルをマウントするために使用される。/mnt
は自動マウントポイントである。sudo fdisk -l
ハードディスクおよびパーティション情報を確認する。sudo mount /dev/sdc1 /mnt
sudo umount /mnt
- 自動マウントされたディレクトリはアンマウントできない。
5.5 マウントの意義 ——USB メモリを使用してみる?自動再生の悪意?#
- 企業では自動マウントを行わず、悪意のあるスクリプトの自動再生を防ぐ。
5.6 Android デバイスの接続とマウント#
- Android 接続プロトコル(SMB)マウントパス
/run/suer/1000/gvfs
5.7 df と du#
df
はディスクパーティション上の使用可能なディスクスペースを表示するために使用される。デフォルトの表示単位は KB である。このコマンドを使用して、ハードディスクがどれだけのスペースを占有しているか、現在どれだけのスペースが残っているかなどの情報を取得できる。h
または--human-readable
:可読性の高い方法で情報を表示する。du
も使用スペースを確認するが、df
コマンドとは異なり、Linux の du コマンドはファイルとディレクトリのディスク使用スペースを確認するものであり、df コマンドとはいくつかの違いがある。
5.8 sort コマンド#
sort
はテキストファイル内のすべての行をソートする。- デフォルトでは、各行の最初の文字をソートし、表示するが、元のファイルは変更されない。
-n
、--numeric-sort
数字でソートする。-M
、--month-sort
非月、1 月、12 月の順でソートする。-r
、--reverse
結果を逆順に並べ替える。
5.9 grep の基本的な理解、ファイルの検索#
-
grep
(グローバル検索正規表現(RE)および行を印刷する)は強力なテキスト検索ツールであり、正規表現を使用してテキストを検索し、一致する行を印刷することができる。 -
grep 543 ~/Templates/1.txt
5.10 パッケージ、圧縮、アーカイブ、解凍、それらの違いは何か?#
tar
パッケージ、圧縮tar -cvf 1.tar 1.txt
パッケージのみ、圧縮なし。tar -zcvf 1.tar.gz 1.txt
パッケージ後、gzip で圧縮。tar -zxvf /opt/soft/test/1.tar.gz
tar パッケージを解凍する。
6.1 親子シェルの概念#
- bash
- ps-f
- ps –forest
6.2 コマンド内のセミコロンの役割#
- コマンド間にセミコロン;を付けると、順次実行される。
- 子シェルを作成して実行する。
6.3 sleep と jobs#
-
sleep
現在の動作を一定時間遅延させる。後にs
は秒、m
は分、h
は時間、d
は日数を指定できる。バックグラウンドで実行し、終了するには
kill
コマンドを使用する。 -
jobs
作業の状態を表示し、-l
は作業情報に PID を追加で表示する。
6.4 バックグラウンド#
- バックグラウンドで実行
tar -zxvf ……;&
6.5 coproc コルーチン#
- Linux コルーチン処理コマンド。コルーチンは同時に二つのことを行うことができる。バックグラウンドで子シェルを生成し、その子シェル内でコマンドを実行する。
coproc sleep 10
coproc frank_av{ sleep 10; sleep 300;}
- セミコロンで終わる必要があり、大括弧内にはスペースが必要。
6.6 外部コマンドと内蔵コマンド#
- シェルが実行するコマンドは内蔵コマンド(built-in)と外部コマンド(external)に分けられる。前者はシェル内部に構築されている。
- 後者は独立したファイル(バイナリファイルまたはスクリプト)である。内蔵コマンドは現在のシェル自体によって実行され、echo、cd などが含まれる。
- 外部コマンドの実行では、シェルプロセスが子プロセスをフォークし、親プロセスはその後停止し、子プロセス内で外部ファイルを exec で読み込む。子プロセスが戻った後、親プロセスは実行を続ける。
6.7 alias エイリアス#
alias
エイリアスを定義または表示する。type
指定されたコマンドのタイプを表示する。alias li=’ls -li’
- しかし、現在のシェルを閉じると使用できなくなる。
7.1 環境変数とは何か?環境変数とは何かを徹底的に理解する!!!!!#
- 環境変数(environment variables)は一般に、オペレーティングシステムの実行環境を指定するためのパラメータを指す。例えば、一時ファイルフォルダの位置やシステムファイルフォルダの位置など。
- フォルダに書き込まれた環境変数は、そのフォルダにどこからでもアクセスできることを意味し、システムにこのディレクトリがどこにあるかを教えることになる。
7.2 グローバル環境変数とローカル環境変数#
- Windows:システム変数とユーザー変数
- Linux:グローバル環境変数とローカル環境変数
- グローバル環境変数
printenv
printenv USER
echo $USER
cd $HOME
7.3 ユーザーとローカル変数の定義#
- ローカル変数は現在のシェルでのみ実行され、子シェルまたは終了後は使用できなくなる。
- 注意:ローカル変数を定義する際は大文字を使用しない。
- グローバル変数は大文字で、アンダースコア命名法を使用する。
7.4 グローバル変数の定義#
export
シェル変数または関数にエクスポート属性を設定する。- 子シェル内で実行できるが、閉じると無効になる。
7.5 デフォルトの環境変数#
set
7.6 なぜ環境変数を使用するのか#
- 開発環境を構成するために使用する。
- 一時環境変数。
PATH=$PATH:/home/yeats/Templates/
7.7 永続的な環境変数の設定?#
-
スタートアップファイル:起動時にデフォルトで実行される環境変数。
-
bash shell
-
1 ログインシェル
-
2 非ログインシェルを開く。
-
3 スクリプトを実行する非対話型シェル。
-
cat /etc/profile
-
~/.bashrc
-
~/.bash_profile
-
~/.profile
-
~/.bash_login
-
cat bashrc
-
グローバル環境変数を追加する(vim を学ぶ必要がある)。
8.1 PMS システムとソフトウェアインストールの紹介#
- PMS パッケージ管理システム
- ツールの依存関係の問題を解決する。
apt install
apt-get install
apt-cache
aptitude(廃止)
8.2 インストール、更新、アンインストール#
apt -h
- 更新
sudo apt update
- アップグレード
sudo apt upgrade
- アンインストール
sudo apt remove oneko
8.3 他のディストリビューション?#
-
サーバーバージョンのミラーソースを設定する。
-
sudo vim /etc/apt/source.list
-
国内の阿里云ライブラリに変更:
8.4 第三者ソフトウェアのインストール例:例えば GitHub オープンソースソフトウェアのガイド#
9.1 ユーザー権限の意味と役割#
- ユーザーと権限
- すべての人にすべての権限を与えることは不可能であり、安全ではない。
- 攻撃を避ける。
- ユーザー ID UID
- システムユーザー UID<500
cat /etc/passwd
sudo cat /etc/shadow
9.2 ユーザーの作成、削除、変更#
- 作成
sudo useradd user1
- 削除
sudo userdel user1
- パスワードを変更
sudo passwd user1
chage
アカウントとパスワードの有効期限を変更する。
9.3 グループ#
-
linux グループ groups
目的:リソースの権限を共有する。
-
tail /etc/group
-
ubuntu ではすべてのユーザーを一つのグループにまとめることは許可されておらず、各ユーザーには個別のグループがある。
-
sudo groupadd groupfrank
-
sudo groupdel groupfrank
9.4 ファイル、フォルダの権限#
rwx
ファイル所有者(Owner)グループ創始者の権限
r-x
ユーザーグループ(Group)グループ下属メンバーの権限
r-x
その他のユーザー(Other Users)その他のグループメンバーの権限
詳細は:Linux chmod コマンド(Linux chmod コマンド | 菜鳥教程 (runoob.com))
9.5 chmod コマンド#
usermod
コマンドはユーザーの基本情報を変更するために使用される。usermod
コマンドはオンラインのユーザーアカウント名を変更することを許可しない。usermod
コマンドを使用してユーザー ID を変更する場合、そのユーザーがコンピュータ上で何も実行していないことを確認する必要がある。
付録:vi/vim キーボード図#
10.1 エディタの簡単な紹介:vim エディタの神; emac 神のエディタ#
- emacs - 神のエディタ
- vim - エディタの神
- Vim は vi から発展したテキストエディタであり、コード補完、コンパイル、エラージャンプなど、プログラミングに便利な機能が特に豊富で、プログラマーの間で広く使用されている。Emacs と並んで Unix 系システムユーザーに最も好まれるエディタである。
- vi エディタは通常 vi と略され、vi は visual editor の略である。出力、削除、検索、置換、ブロック操作など、多くのテキスト操作を実行でき、ユーザーは自分のニーズに応じてカスタマイズできる。これは他の編集プログラムにはない特徴である。
- Vim は vi の強化版であり、vi よりも使いやすい。vi のコマンドはほぼすべて vim で使用できる。
10.2 vim の簡単な使用方法#
- vim をインストールする。
sudo apt install vim
vim の作業モード、国外では一般に二つのモードと見なされる。#
-
通常モード(コマンド操作モード):ファイルを操作する。
-
挿入モード:編集する。
-
編集モードから通常モードに戻るには:ESC
国内では一般に三つのモードと見なされる。#
-
一般コマンドモード:略して一般モードであり、最初に入る作業モードである。vi + ファイル名を入力することで直接一般コマンドモードに入る。このモードではテキスト内容の表示、コピー、削除、置換などの機能を行うことができる。関連するテキスト内容を入力できない場合。
-
編集モード:一般モードで i または o または a を入力することで編集モードに入る。このモードではテキスト内容を入力できる。i を入力すると、作業画面は図のようになり、この状態でのみファイル内容を入力できる。入力が完了したら、ESC キーを押して編集状態を終了し、一般モードに戻る。
-
コマンドラインモード:一般モードで:または / または?を入力することでコマンドラインモードに入る。このモードでは関連するコマンドを入力できる。:wq を入力すると、このコマンドは保存して終了することを示し、Enter キーを押すと自動的にファイルが保存され、vi エディタから退出するか、ESC キーを押して再び一般モードに戻る。
三つの作業モードの関係は図のように示される。#
vim エディタの終了は一般に三つの状況に分かれる。#
:q
保存せずに終了する。:wq
保存して終了する。:q!
強制終了し、この時もファイルは保存しない。
10.3 カーソルの移動#
- 上:
k
- 下:
j
- 左:
h
- 右:
l
- 次の行:
b
- 前の行:
w
- 前の文字を検索:
N
- 次の文字を検索:
n
10.4 ページをめくる#
- 上にページをめくる(BACKWARD):
ctrl+B
- 下にページをめくる(FORWARD):
ctrl+F
- 上にスクロール:
ctrl+E
- 下にスクロール:
ctrl+Y
- 最後の行に移動:
G または shift+g
- 最初の行に移動:
gg
10.5 異なる方法でテキストを編集し、単語をジャンプする操作テクニック#
i
カーソル位置の前に挿入。a
カーソル位置の後に挿入。o
次の行に直接 Enter。x
カーソルのある文字を削除。dd
一行全体を削除。u
元に戻す。dw
現在のカーソルから単語の後ろを削除。b
単語の最初の文字にジャンプ。e
単語の最後にジャンプ。w
単語にジャンプし、最初の文字にジャンプしてから最後にジャンプ。shift+w
;shift+b
大きくジャンプ。
10.6 行の先頭と末尾にジャンプするテクニック#
shift+6
または0
現在の行の先頭にジャンプ。shift+4
現在の行の末尾にジャンプ。
10.7 大括弧でジャンプする関数段落のテクニック#
{}
大括弧でジャンプ。
10.8 vim のコピー、カット、ペースト#
p
ペースト。yw
一単語をコピー。y$
現在の位置から行の末尾までコピー。
10.9 Visual 可視化モード#
v
テキストを選択。V
行を選択。v G
全選択。ctrl+v
マトリックス選択。o
テキストの先頭と末尾を切り替える。vaw
単語を素早く選択。vab
括弧を含む。vaB
大括弧を含む。va<
尖括弧を含む。
10.10 ビジュアルモードのその他のテクニック#
v shift+<
左にインデント。v shift+>
右にインデント。shift+~
またはshift+u shift+U
大文字と小文字を変換。
10.11 検索と置換#
- 検索
/
- n を押して次を検索。
:s /const/let/g
一行の const を let に置換。:%s /const/let/g
すべての const を let に置換。set number
一時的に行番号を表示。:9,15s /const/let/g
9-15 行の const を let に置換。:%s /const/let/gc
確認付きで置換。
10.12 vim の基本設定#
touch .vimrc
vim .vimrc
以下のコードを.vimrc に書き込む。
set syntax=on
set tabstop=4
set softtabstop=4
set number
set enc=utf-8
set showmatch
- source .vimrc