PHPの勉強 ③
progateでのPHPの勉強
途中で有料ページになってしまうため、内容が完全ではないです。
わかったこと
・オブジェクト指向
「もの」を中心とした考え方、ECショップサイトでいう「商品」や「ユーザ」や「カート」など、サイトを構成するものをベースにして、
サイト設計をし、それをコードで再現していく。
・オブジェクト→実体に例える、サイトを構成している目に見える「もの」のこと。
・クラス→オブジェクトの設計図のこと。
<?php class Menu{ } ?>
・インスタンス→クラスを基に生成された実体のこと。オブジェクトと同義と考えていい。
<?php class Menu{ →Menuクラスを定義
$menu1 = new menu();→新しいインスタンスを生成し、$menuに代入する。
$menu2 = new menu();
}
?>
・プロパティとメソッド
インスタンス(実体)がもつ「プロパティ」と「メソッド」をクラスに定義する。
プロパティ→インスタンスが持つデータ
<?php class Menu{
public $name; publicを用いてMenuクラスにプロパティを定義
}
?>
「インスタンス→プロパティ名」とすることでそのプロパティにアクセス可能
例 <?php class Menu{
public $name;
}
$curry = new Menu();
$curry -> name ="CURRY";
echo $curry -> name;
メソッド→インスタンスに関連する処理(関数)
・クラスプロパティとクラスメソッド
クラスプロパティ→インスタンスの数を個々ではなくクラス全体で管理する。クラスが持つデータのこと。
staticを用いて定義し、クラス名::$クラスプロパティ名でクラスプロパティにアクセスする。
コンストラクタ→生成されたインスタンス数が変化したときに自動的に更新する。(コンストラクタしたいプロパティの名前を()内に。
self→クラス内でクラスプロパティにアクセスする、クラス内で使用すると自分自身を指し示す。
self::$クラスプロパティ名というように使う。
例 public function __(←半角空白スペースにアンダーバー二つ)construct($プロパティ名){
self::$count;
クラスメソッド→個々のインスタンスのデータには関係のない処理をする。staticで定義し、クラス名::クラスメソッド名で呼び出せる。
class Menu{
private static $count = 0;
public static function getCount(){
return self::$count;
}
}
→メニューを増やすと値が更新される
・リンクの作成
<a>タグを用いて、show.phpにアクセスし、その内容を表示する
<a href="show.php">
<p><?php echo $menu -> getName(); ?></p>
</a>
PHPの勉強 ②
progateでの勉強 文字の連結まで
前日の記事の前に勉強はしていたので、内容が前日の記事よりも基本的なものになっています。
わかったこと
HTMLが決められたテキストの表示のみに対し
PHPは見る人や状況に応じて表示するテキストを変えられる
PHPはHTMLに埋め込んで使うことができる
<?php ~ ?>の中に命令を書く
phpコードで<?php echo '<h2>初級</h2>; ?>はhtmlコードだと<h2>初級</h2>のようにhtmlのコードに直して表示がされる
echoは出力命令のこと
「;」(セミコロン)を使って文を区切る※セミコロンを忘れるとエラーが起きる
//から行末まではコメント行
出力したい文字列はシングルクォーテーション「''」かダブルクォーテーション「""」で囲む
加減乗除と除算の余りを求めることができる
echo a+bなど※計算はクォーテーションで囲まない
文字列や数値などのデータの種類がある→データ型
文字列はシングルクォーテーションなどで囲んだ部分がそのまま出力される
数値はクォーテーションで囲まない。5+2であれば結果の7が出力される
変数
重要な概念の一つでデータの入れ物のこと
頭に$記号を付けることで変数名を指定する
「=」は右辺(数値や文字列)を左辺($変数名)に代入するという意味
変数のメリット
①データに名前を付けることでそのデータが何を表しているかを明確にできる
②複数回使うデータを一つの変数に入れる→変更があった場合も一か所の修正で済む
変数名のつけ方
ルール(必須)
①数字で開始しない
②日本語は用いない
ルール(望ましい)
変数名から内容が容易に想像できる
いい例
$date
$userName→「user」と「name」のように2語以上からなる変数名は後ろを大文字で区切る
変数の更新
変数の中に入っている値の変更が可能
一度値を代入してから出力し、再び代入すると後で代入した値によって変数の中身が上書きされる
<?php
$num=3;
echo $num; →3が出力される
$num=5;
echo $num; →5が出力される
?>
変数に数字を足す
「変数の値に10を足す」
$x = 10;
$x = $x+10;
echo $x; →20
簡略化して記入も可能
$x +=10;
$x -=10;
$x /=10;
$x %=10;
加減算の省略(前か後ろが1の場合のみ)
$x++,++$x; →「$xに1を足す」,「1+$x」
同じことが減算でも可能
文字列の連結
$lesson = 'php';
echo $lesson.'入門'
→つなげたい文字の間を.で区切る
「.=」を使って文字列の連結を省略する
$name = 'にんじゃ';
$name .='わんこ'; →$name=$name.'わんこ'
echo $name;→にんじゃわんこ
まとめ
とりあえずの処理の仕方などは理解できる、ただ、前述の記事の通り「何かをしたい」というときに、それがとっさに出てくるかどうかが
この場合は少し不安なので、流れで覚える練習をする。
ローカル開発環境の構築について
ローカル開発環境について
わかったこと
webサイトやシステムの開発環境には
・インターネット上のレンタルサーバを使う
・ローカル(コンピュータ)に仮想マシンでサーバを立ち上げる
の二つのやり方がある。
ローカル環境に仮想マシンを立ち上げるやり方
インストールが必要なもの
virtualbox
vagrant
PuTTY
FTPソフト
windows上にサーバを立ち上げる
1.windowspowershellを使用して、vagrantの設定をする
・windwspowershellを起動
・複数の仮想マシンを使用することを想定してそれらをまとめるフォルダ(大フォルダ)を作る
・作成したフォルダに移動して仮想マシンを作るフォルダを作成
・作成したフォルダに移動して仮想マシン設定用のvagrantfileを作成
vagrant init bento/centos-〇.〇 ← centosのバージョン
・ローカル側からvagrantfileの編集(エクスプローラでフォルダを作成した場所に移動しvagrantfileを開く)
ファイル内のIPアドレスの記載されている部分のコメント(#)を外す
・仮想マシンの起動(vagrant up)→起動途中の質問はすべてOK
・vagrant statusでvagrantの状態を確認(runnningであればOK)
・powershellを終了(exit+ENTER)
※ powershellを終了してもvagrantを通じて仮想マシンは起動したまま
2.PuTTYを使用して仮想環境上でwebサーバを立ち上げる
・PuTTYを起動して仮想マシンのIPアドレスを入力する
(ポート,接続のタイプはそのまま←接続のタイプがSSH以外であればSSHを選択)
・設定を保存する(saved sessionに名前を付けて保存)
・オープンをクリック、最初の警告は「はい」でOK
・ログインのIDとPASS→仮想マシンをvagrantで立ち上げた場合はvagrant(小文字)
・ログイン後の設定
OSを最新版にアップデートする
以下のスクリプトはdotinstall専用
スクリプトを入手するためのgitをインストール
gitを使ってアプリケーション設定用のスクリプトをダウンロード
CentOSのフォルダができるので移動する
スクリプトの実行
もろもろの設定を反映する
3.ファイル転送ツール(FTPソフト)でのファイルの追加(dotinstallではcyberduckについて説明)
インストール後に設定をする項目
(windowsのエクスプローラ側)
隠しフォルダ・隠しファイルが表示するになっているか
登録されている拡張子は表示市内のチェックが外れているか
(cyberduck側)
環境設定→編集→ブラウザタブからアンダーバーで始まるファイルを表示とダブルクリックしたファイルを外部エディタで開くにチェック
外部エディタ→ユーザ→エディタに使用するアプリケーションを選択→常に省略時エディタを使用にチェック
反映させるために一回閉じる
新規に接続を行う
SFTP(SSHによる暗号化接続)を選ぶ
サーバの欄にIPアドレスを入れる
ユーザ,passは「vagrant」(小文字)
接続
接続は保存しておくと便利
※FilezillaでのFTP接続
ファイルメニューもしくは左上のボタンからサイトマネージャを開く
自分のサイト→新しいサイトの順で選択
ホストにIPアドレスを入力
プロトコル→SFTPを使用
ログオンタイプ→通常
ユーザ,passはvagrant
ローカルで編集されたファイルを監視して修正のアップロードを促すにチェック
外部エディタにサクラエディタを設定
編集→設定→ファイルの編集
カスタムエディタを使用を選択
参照→sakura.exeを選択
4.ファイルを確認してみる
ex phpのファイルを作成後にファイルをブラウザで確認する
PuTTYを使用
確認したいファイルのあるフォルダに移動
php -s IPアドレス:8000→実行するとhttp://IPアドレス:ポート
PuTTY上でのコピーはなぞるだけでできる
→ブラウザを立ち上げてペーストする
学習の終了
PuTTYでwebサーバが立ち上がっている場合
ctrl+Cで終了する
exitと入力
powershellで仮想マシンを止める
終了させたい仮想マシンのあるvagrantファイルまで移動
vagrant suspend→仮想マシンの停止
(vagrantは停止させるくせをつけておく)
学習の再開
最初の手順通り仮想マシンのあるフォルダに移動(powershellで)
vagrant up
PuTTYの起動
(仮想マシンの起動→powershell,仮想マシンに接続して中の処理をする→PuTTY)
ファイル転送ツールの起動
の順番で進める
hostsファイルの編集
インターネット上でアクセスするIPアドレスに名前を付ける
windows+r→ファイルの実行
driversと入力しEnter
etcフォルダの中のhostsファイルを一度デスクトップにコピー
ダブルクリックで開いて編集→一番下にIPアドレス 指定したい文字列として指定
例 192.168.1.30 dev.dotinstall.com
保存してファイルを元あった場所に戻す
指定を反映したコンピュータに限り指定した文字列を入力してアクセスするとそのIPアドレスが割り振られたディレクトリ内にあるファイルがの内容が表示される
※指定を反映したコンピュータ以外でアクセスしても内容は表示されない
疑問点
・virtualboxとvagrantとPuTTYとFTPツールの関係
vagrantはvirtualbox(仮想サーバ)を動かす役割、PuTTYはサーバに接続してサーバに変更を加える役割、FTPツールはファイルをサーバに転送する
この解釈でいいのか→概ねOK
・スクリプトのダウンロードは必須条件か(PuTTY)
→git以外でダウンロードができるのか(dotinstallでのスクリプトの内容がCentOS6かつdotinstallの動画に合わせたスクリプトのような気がする)
=>これはdotinstall側でわかりやすくするために環境設定のスクリプトを作ったものなので、スクリプト自体が存在しない。
まとめ
裏でターミナルを実行しているということに慣れるのに時間がかかるかもと思う。
今までGUIベースでいろいろと操作してきているので、なるべく早くCUIベースにも慣れるようにしたい。
操作の手順を混同しないように、始めのうちはしっかり気を付ける。
PHPの勉強 ①
今回、まずprogateでPHPの勉強を始めました。
わかったこと
・文字列の連結(変数の展開)
「” “」(ダブルクォーテーション)で文字列を囲んだ場合、中の変数を{ }で囲むとその部分が変数に入っている値で置き換えられる。
※「’ ‘」(シングルクォーテーション)で文字列を囲んだ場合は{ }で囲んだ中の変数は変数としてみなされず(ただの文字列としてみなされる)そのままの状態で表示される。
例 $name = ‘にゃんこ’;
echo “こんにちは、{$name}さん”;
→結果として、こんにちは、にゃんこさんが出力される。
echo ‘こんにちは、{$name}さん’;
→結果として、こんにちは、{$name}さんが出力される。
・if
条件に応じた処理の分岐をする。
条件が成り立つ(真)→{ }の中の処理が実行される。
条件が成り立たない(偽)→何も実行されない
$i = 20; →まず変数を定義
if($i > 10){ →if文を定義
echo ‘$iは10より大きい’;→if文が成り立つ場合実行される
}
$i = 20;
if($i > 30){ →ここで条件式が成り立たない
echo ‘$iは30より大きい; →実行されない
}
・比較演算子
右辺を基準にして<, >, <=, >=,==, !=などがある
真偽値→true, falesからなるデータの種類。
・else →if(条件式){ }else{ }のように使う「もし~ならば○○そうでなければ○○」というようにifの分岐を増やす。
・else if → if(条件式){ }elseif(条件式){ }else{ }のように使う。「もし~ならば○○、それとも~であれば○○、すべてに当てはまらない場合は○○」というように、ifとelseの間に用い、分岐をさらに増やす。
elseifは、分岐の数だけ並べられる。
・複数条件の組み合わせ
「&&」→かつ。左辺と右辺の両方が真の場合、全体も真
「||」→または。左辺と右辺のどちらか(または両方)が真の場合、全体も真
(基礎理論内の組合せと考え方は同じ)
「!」→条件の否定→結果が全く逆になる。
$i = 20;
if($x>10&&$x<30){
echo ‘$iは10よりも大きくかつ30より小さい’;
} →真なので結果を表示する。
if($i<10||$i>30){
echo ‘$iは10よりも小さいかまたは30よりも大きい’;
} →偽なので何もしない
if(!$i == 30){
echo ‘$xは30ではない’;
} →!が頭についているので、これは真になる→結果の表示
・倍数の表し方
xを目的の倍数で割ったときの余りが0になると考える。
$x % 3 == 0 →xを3で割った余りが0という式
・switch文
ifやelseifなどで表すそれぞれの分岐をcaseに当てはめる。なにも当てはまるものがない場合は、defaultを実行する。caseの間と間にbreak(終了命令)を入れる。
例 コインの表と裏 (表が0で裏が1)
switch($coin){
case0:
echo ‘表’;
break;
case1:
echo ‘裏’;
break;
default:
echo ‘エラー’;
}
※途中breakを入れ忘れてしまうと。上のcaseと同一と考えて実行してしまう。
・配列
変数を用いると一つの変数に対して一つの値しか入らない
配列は複数の値をまとめて保存する(考え方は基礎理論内の配列と同じ)
構文:$配列名 = array(‘値1’,’値2’…);のように使う
$name = array(‘mie’,’gifu’,’nagano’) →左から[0], [1],[2]の箱に入る
echo ‘$name[2]; → naganoを表示
$name[1] = ‘aichi’; →[1]の値をaichiに上書き
echo ‘$name[1]’; → aichiを表示
・連想配列
配列との違いは、番号ではなく「キー」と呼ばれる文字列や数字で配列を管理する。
$配列名 = array(‘キー名’ =>’値1’);
$user = array(
‘name’ => ‘りんご’,
‘age’ => ‘40’,
‘gender => female’
);
配列と配列の間には「 , 」(セミコロン)を使う。
値の取り出し方
↑の例を使って、ageを取り出す
echo $user[‘name’];
値の追加
$user[‘level’]=’teacher’;
for文→繰り返し処理を行う
for ($i = 1; $i <= 100; $i++){
echo $i;
①$i = 1→初期化(初期値として用いる)
②$i <= 100→条件式(満たすべき条件)
③$i++→繰り返す処理(満たされるまで続ける処理)
④echo $i→変数の更新(処理後に出力しまた②に戻る)
while文
条件が真の場合でのみ繰り返し処理を行う。
while($i = 1; $i <= 10){
echo $i;
$i++;
一度ループ条件の真偽を判定してから都度繰り返し処理を行う。
無限ループ
条件式を何周してもtrueのままでループが終了しないこと。
break文
ループの強制終了をする。ifと一緒に用いる。
例 for($i =1; $i <= 10; $i++){
if($i > 5){
break;
}
continue文
ループの中の現在の周のみをスキップしてループそのものは継続する。
for($i = 1;$i <= 10;$i++){
if($i % 3 ==0){
continue;
}
}
foreach文
配列または連想配列に対して先頭のデータから順に繰り返し処理を行う。
foreach($data as $value){
echo $value;
foreach($colors as $key => $value){
echo $key. ‘:’ . $value;
・関数
組み込み関数 → もとから組み込まれた関数。あるまとまった処理を行い、値を返す。
「strlen」→組み込み関数の1つ、文字列の文字数を返す。
「count」→配列の要素数を返す。
「rand」→1つ目の引数、2つ目の引数の間のランダムな整数を返す。
関数の自作
function関数名(){処理} → 関数名()で呼び出し
戻り値→値を返す。
return 値*値
フォームを作る
htmlのformタグを使う。
action→データを渡す。
method→送信方法 get(送信先urlの表示)とpost(urlの非表示)
inputtype→テキストボックスを作る
データの受け取り
$_POST[連想配列];
<?php $_POST[‘name’] ?>
forで複数のタグを作る。変数の展開は” ”で囲む。
for($i = 1; $i < 4;$i++){
echo “option value = ‘{$i}’>{$i}</option>
まとめ
phpの言語は言語自体はわかりやすい、ただ、例えば練習などでこの処理をしろという問題に対して、何を使えばいいのかが時々わからなくなるので、個々の処理ではなく流れで覚えることが大切。
とくにforやifなどの文をいろいろと組み合わせると処理の仕方が混乱するので頭の中で流れを描けるくらいにしっかり練習をするのが大事。
あとは、細かな打ち込みミス(for()の後ろに{がなかったりといった)をしそうなのでそれも注意。
gitの勉強 2
今回は、gitの勉強。残りのdotinstallの#17~#22について
わかったこと
・ タグ → commitIDに別名をつける
git tag ~で直前のcommitIDにタグ付けをする(リセットする際にも別名が使える)
・ git show → コミットの内容を表示する
・ git tag v0.9 IDの7桁分 → 直前よりも前のcommitIDにタグ付けする場合。
git tag にタグの名前とタグ付けしたいcommitIDの7桁分を入力する。
・ git tag -d タグ名 → タグを消去できる
・ ailias → コマンドなどに短縮名をつける
git config --global ailias.co.checkout
ailiasの後ろは短縮名.コマンド名
・ git config -l → ailiasの一覧を確認できる
・ 共有リポジトリ → 複数人での開発を行う場合にリモートで接続する
(リポジトリ名には.gitを最後につける)
・ git init --bare → 共有しているという意味
・ git remote add origin ~/リポジトリ名
リモートに下記の場所(~/より下)のリポジトリをオリジナルとして追加する
・ git push origin master → masterの内容をgit内に保存
・ 共有リポジトリ内でのコミットはできない。自分のところに一度内容を引っ張て来て、編集を行う。
・ git clone ~/リポジトリ名/ 保存をしたいリポジトリ名
git内のリポジトリの内容を、丸ごと保存したいリポジトリに持ってくる
・git pull origin master → 内容をgit内から引っ張てくる
・ git commit -am "コメント" → addとcommitをまとめて行う
・ 共有時にコンフリクト(編集内容の衝突)が起こった場合
一度git pull origin masterと入力し、変更内容を引っ張ってくる
編集内容を確認し、修正後にpushをし直す。
(コンフリクトの解決は、下に書いた内容と同じ)
疑問点
・ 例えば共有リポジトリにお互いが同時期にpushを行った場合、何かエラーは出るのか。(そもそもそれができるのか?)
まとめ
vim、gitともに勉強をしていてこうなるというのはおおむね理解はできているはず、ただ勉強不足ではあるので、いまだに何がわからないかをわからない状態な部分もある。
今後疑問に思ったことはしっかりと補足、補完していきたい。
gitの勉強
今回はgitというバージョン管理システムについてです。Dotinstallの#1~#16までのまとめ。
わかったこと
・ git → バージョン管理システム
・ バージョン管理の流れ
1. ファイルを作成・修正
2. まとまりを一時保存
3. 最終的に保存する
・ 管理の流れと作業場所
1のファイルの作成や修正は作業ディレクトリ内。
2のまとまりを一時保存はステージエリア内
3の最終的な保存はリポジトリ内
(2のステージエリア内に一時保存をすることで、意味のあるまとまりをリポジトリ内に
きれいに保存することができる)
・ リポジトリの種類
ローカル → 一人で作業をする
リモート → web, ネットワーク上でコードを共有しながら作業をする
・ 設定
gitは保存する際にユーザ名とeメールを指定する。
git config –grobaluser.name “名前” ← 名前を指定
git config –grobaluser.email “email” ← emailの指定
ほかにも、
git config color.ui true → 色分けをする
などがある。
設定が終わったら、git config –lで設定が確認できる。
gitを使用する場合は、コマンドの前にすべてgitとつける。
・ git config –helpかgit help configでヘルプが確認できる。
・ git init → ディレクトリをgitで管理する
(指定したいディレクトリをカレントディレクトリにし、コマンドを実行)
Intalized emptygit~という文を確認できれば準備OK
・ vimでファイルを作成していく。
・ git add → ステージエリアに保存する
・ git commit → リポジトリに保存する、この際メッセージを追加する
・ git log → ログを確認する
Commit 〇〇〇← 長い数字はID
作成者
日時(更新や追加の)
というようなlogを見ることができる。
・ git log –oneline → 1行でログを表示する
・ git log -p → 具体的な変更を見る
・ git log –stat → どのファイルが何か所変わっているかを示す
・ git status → 今の状態を教えてくれる
・ git checkout → 変更を取り消す
・ git statusを使用しながらコマンドを探すことも有用
・ git diff → 変更点を教えてくれる
(変更後にステージエリアに追加し、まだリポジトリには追加していない場合)
・ git diff –cached → 変更点を教えてくれる
(変更後にリポジトリにまで追加した場合)
・ git add . → 今のディレクトリ以下すべてをステージエリアに追加したい場合
・ git管理をしない設定
vim git ignore → 作業ディレクトリに作る
*.log → logをすべて無視するという意味の一文を追加する
保存する
ファイルサイズが大きい、管理をするほどではないファイルがあるときに使う
git ignore → vimで指定した文面は、保存した場所から改装すべてに適用される
・ git commit –m “コメント” → エディタを立ち上げずにコミットすることができる
・ 直前のコミット内容に、新しくコミットするほどでもない些細な変更を加えるとき
例:index.htmlに”ライン2”という言葉を追加後、その行にインデント(字下げ)を加えた
① vim index.html → 編集後保存する
② git add .
③ git commit –amend → amendは変更するの意
④ ;wq → そのまま保存をする
・ 過去のバージョンに戻るとき
コミットする前に変更したい場合
git reset –hard HEAD → hardはディレクトリファイル全てを指定
HEADは直前のコミットのこと
git reset –hard HEAD^ → ^は前の前のコミットのこと
この2つか、もしくはコミットIDの上7桁をコピペする
gitは、コミットの全てを保存しているので簡単に過去のバージョンに戻れる
(オプションによってはディレクトリやファイルを消してしまうこともあるので注意)
・ branch → 分岐点のこと、別バージョンを並行して操作ができる
git branch → 分岐がすべてでてくる
*master → いまmasterという分岐にいる(*は今いる場所)
git branch hoge → hogeという分岐ができる
git checkout hoge → hogeにスイッチを切り替える
このhogeの中での作業をコミットすると、masterでの作業内容は残したまま新しく
コミットする。
・ 別のbranchに反映させる
git merge hoge → マージさせたいbranch(大元)から、マージさせるbranchを指定
(mergeは混ぜるの意味)
git branch –d → 不要になったbranchの削除
git checkout –b hogehoge →hogehogeというbranchを作り、スイッチも切り替える
・ マージの衝突 → 同じ部分を違うbranchで違った内容で書きこむ
コミットする際に、衝突が起きてることを知らせてくれる
→ vimで修正(違っている部分をどちらか選ぶか書き直しする、選ぶ場合は選ぶほうをしてそれ以外を削除)
→ 保存後にgit add.とgit commit –m “コメント”という風にコミットする。
→ 履歴は2つ残る
〇 まとめ
今までにまったく扱ったことないものなので、まとめてはいるけれどだいぶわかっていない。こういう使い方をするんだということ覚えたうえで、実際に練習して疑問点をしっかりと把握しておくのが大切。
vimの勉強 2
今回は、ドットインストールの#7~#18までのまとめです。
〇 わかったこと
・ カット(削除)やペーストの方法
x → 小文字で入力、一文字単位での削除
dd → 行単位での削除(3dd等と入力して、削除する行の指定が可能)
p → 貼り付け
yy → コピーをする(3yy等と入力して、コピーする行の指定が可能)
・ 検索の仕方
/ 検索語 → スラッシュの後ろに検索したい文字を入力して、検索ができる
→ 該当する文字が複数ある場合、n(小文字)で下方向に探すことができ、N(大文字)
で、上方向に探すことができる。
*,# → 今カーソルがある位置の単語を検索(※完全に一致する単語のみを検索する)
* → 下方向に検索
# → 上方向に検索
・ 置換する方法
:s/置換したい文字/置換後の文字 → 例 :s/lesson/Lessonなど
→ sはsubstituteのs、取り替えや代理に用いるというような意味
:s/置換したい文字/置換後の文字/g
→ 後ろにgをつけると同じ行内にある置換したい文字を、すべて置換する
:%s/置換したい文字/置換後の文字/g
→ %をつけることで、置換する範囲を全体にする。文書全体の置換したい文字と同じ
文字をすべて置換することができる
:%s/置換したい文字/置換後の文字/gc
→ cはconfirmのc、確認する、承認するなどの意で、実行する際に確認を行う
・ 操作の取り消し
u → undoのu、元に戻すの意
ctrl+r → redoというコマンド、やり直しの意(一度元に戻したものをもう一度行う)
一度コマンドを入力したが取り消したい → u
uを間違えて押したようなとき → ctrl+r
・ ウィンドウを分割する
sp → splitのsp、分割するの意で、上下(縦)に分割される
ctrl+w+w → ウィンドウ間を移動できる
vs → verticalsplitのvs、verticalは垂直という意味、左右(横)に分割される
close → 分割されたウィンドウを閉じて、元の画面に戻る
・ タブエディターを操作する
tabnew → 新しいタブを開く
tabe ファイル名 → ファイル名を指定してタブを開く
tabclose → タブを閉じる
$vim -p ファイル名 ファイル名2 → vimを起動する段階で、タブを複数一気に開く
tabdo %s/置換したい文字/置換後の文字/g
→ 開いているタブの全てに対して置換処理を実行する
・ 繰り返し操作 → ;(ピリオド)と入力して、直前のコマンドの操作を繰り返す
・ インデントをそろえる
tabキーを打つ →1行ずつそろえる
選択モード(v)に入り、全選択後に=(イコール)を押す → すべての行をそろえる
・ ctrl+n → 関数を補完する
・ 矩形選択後に編集をする
ノーマルモードからctrl+v → 矩形選択ができる
→ shift+i(I)を押して編集モードに入り、文字を編集する → escキーで戻る
→ 編集した文字が矩形選択した部分全体に反映される
・ ctrl+v+x → 矩形選択したすべての部分が消せる
・ テキストオブジェクト
ノーマルモードでcit(小文字)を入力する
cはchange、ほかにd(delete)やi(insert)などがある
iはinner、ほかにa(all)がある、オブジェクトの中身を編集するのか、
全体を編集するか
tはtag、ほかに『 " 』(ダブルクォーテーション)や『 )、] 』(カッコ)がある
・ 設定をする
set number → 行番号の表示
set no number → 行番号の非表示
syntax on → コードの色分け
syntax off → コードの色分けをオフ
set ignorecase → 検索での大文字と小文字の区別をしない
set no ignorecase → 検索での小文字と大文字を区別する
set tabstop → タブの文字数を規定する
〇 疑問点
テキストオブジェクトの編集について、このコマンドは今カーソルがいるところの
オブジェクトについてのみ編集できるという解釈でいいのか。
動画を見ていてその解釈をしてしまったけれど、少し不安。
もし、同じオブジェクトについて同じように編集をしたいときは何かほかにやりかたがあるのか。→ 他サイト、もしくは本などで調べる
〇 まとめ
ここまでvimコマンドを勉強して、実際に使う場合に迷いそうな部分
(オブジェクトの編集の仕方や矩形選択の編集など)があるので、実際に練習して
しっかり理解を深めることが大事。
ほかのコマンドについても時間を見つけて復習やその他の使えるコマンドを勉強しておく。