Movable Typeの月別コンテンツアーカイブリスト用テンプレート
Movable Typeの月別コンテンツアーカイブリスト用テンプレートのサンプルと解説です。
1.サンプル
<mt:IfArchiveTypeEnabled archive_type="ContentType-Monthly" content_type="コンテンツタイプ名">
<mt:ArchiveList type="ContentType-Monthly" content_type="コンテンツタイプ名">
<mt:ArchiveListHeader>
<nav class="widget-archive-monthly widget">
<h3 class="widget-header"><$mt:ArchiveTypeLabel$>アーカイブ</h3>
<div class="widget-content">
<ol class="widget-list">
</mt:ArchiveListHeader>
<li class="widget-list-item"><a href="<$mt:ArchiveLink encode_html="1"$>"><$mt:ArchiveTitle$> (<$mt:ArchiveCount$>)</a></li>
<mt:ArchiveListFooter>
</ol>
</div>
</nav>
</mt:ArchiveListFooter>
</mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
2.解説
1行目のMTIfArchiveTypeEnabledタグで、アーカイブが利用可能か判定します。
<mt:IfArchiveTypeEnabled archive_type="ContentType-Monthly" content_type="コンテンツタイプ名">
archive_typeモディファイアには月別コンテンツアーカイブなので「ContentType-Monthly」、content_typeには該当のコンテンツタイプ名を設定します。
2行目のMTArchiveListタグで、該当アーカイブをリスティングします。モディファイアはMTIfArchiveTypeEnabledタグと同じです。
<mt:ArchiveList type="ContentType-Monthly" content_type="コンテンツタイプ名">
3~8行目のMTArchiveListHeaderタグは初回のループ時に実行します。これを使ってリストのHTML開始タグを出力します。
<mt:ArchiveListHeader>
<nav class="widget-archive-monthly widget">
<h3 class="widget-header"><$mt:ArchiveTypeLabel$>アーカイブ</h3>
<div class="widget-content">
<ol class="widget-list">
</mt:ArchiveListHeader>
9行目のliタグでアーカイブ情報を出力します。MTArchiveLinkタグはアーカイブページのURL、MTArchiveTitleタグで「xxxx年xx月」、MTArchiveCountタグでその月のコンテンツデータ件数を出力します。
<li class="widget-list-item"><a href="<$mt:ArchiveLink encode_html="1"$>"><$mt:ArchiveTitle$> (<$mt:ArchiveCount$>)</a></li>
10~14行目のMTArchiveListFooterタグは最後のループ時に実行します。これを使ってリストのHTML終了タグを出力します。
<mt:ArchiveListFooter>
</ol>
</div>
</nav>
</mt:ArchiveListFooter>
15~16行目は1~2行目の終了タグです。
</mt:ArchiveList>
</mt:IfArchiveTypeEnabled>
MiniTool Partition Wizard(プロ・プラチナ版)レビュー
MiniTool Partition Wizard(プロ・プラチナ版)のレビューです。
1.MiniTool® Software Ltd.について
発売元の MiniTool® Software Ltd.は、カナダと香港に拠点をもつソフトウェアメーカーで、ディスクやパーティション管理・データ復旧・データバックアップのソリューションを提供し続けています。
2.MiniTool Partition Wizardについて
「MiniTool Partition Wizard」は2009年にリリースされた、Windows向けパーティション管理ソフトです。
第38回Vecotorプロレジ大賞「パーティン管理 部門賞」を受賞しています。
記事執筆時点のバージョンは12.7です。
3.機能について
MiniTool Partition Wizardには、大きく4つの機能があります。
- データ復元
- パーティション復元
- ディスクベンチマーク
- ディスク使用状況分析
以降、それぞれの機能を簡単に紹介します。
4.データ復元
「データ復元」をクリックすると、「データ復元モジュール」が開きます。
デスクトップやゴミ箱・フォルダを選択するなど、特定の場所から復元させることもできます。
例として、ゴミ箱から完全に消去したmp4ファイルを復元してみます。「ゴミ箱」にマウスをポイントして「スキャン」をクリック。
画面がゴミ箱のツリーに切り替わるので、ツリーを展開し、「ゴミ箱」をクリック。
最近削除されたファイルが表示されました。
ここでは、上から2つめのmp4ファイルを復元してみます。復元したいファイルを右クリックして「復元」を選択。
保存先を選択。別ドライブが推奨なので、外付けHDD(Fドライブ)の任意のフォルダ選択して、「OK」をクリック。
復元しています。
復元が完了しました。「回復されたファイルをビュー」をクリック。
復元したファイルがありました。
4.パーティション復元
(実際に試していないので機能の紹介のみです)
パーティション復元をクリックすると、ウィザードが開きます。「次へ」をクリック。
復元したいディスクを選択して「次へ」をクリック。
スキャン範囲の設定を行いまます。
スキャン方式を選択します。
パーティションを選択して「完了」をクリックすれば復元が開始します(実際にはこの後実行していません)。
5.ディスクベンチマーク
「ディスクベンチマーク」をクリックすると、下記の設定画面が開きます。
ドライブ・転送サイズ・キュー番号・クールダウンタイムなどを設定して「開始」をクリック。ここではデフォルト状態で実行します。
実行すると、ディスクをテストします。
完了しました。ベンチマークがこのように表示されます。
6.ディスク使用状況分析
「ディスク使用状況分析」をクリックすると画面が切り替わります。
ドライブを選択して「スキャン」をクリック。
分析を開始します。
分析が終了しました。「ツリービュー」ではツリー単位で、
- 親フォルダに対する占有率
- サイズ
- 項目
- ファイル
- フォルダ
を表示してくれます。ツリーを展開すれば、さらに詳細を表示できます。
「ファイルビュー」ではファイル単位に、
- ドライブ内での占有率
- サイズ
- 最終更新
- 属性
を表示してくれます。
「フォルダビュー」ではフォルダ単位に、
- ドライブ内での占有率
- サイズ
- 最終更新
- 属性
を表示してくれます。
7.その他
左側の「パーティション統合管理」をクリックすれば、パーティションに関する各種操作を行えます。
また、右上の「ブータブルメディア」をクリックすれば、ブータブルメディアビルダで起動CDおよびフラッシュドライブを作成できます。
「マニュアル」をクリックすれば、公式サイトのマニュアルを参照できます。
8.感想
一番使用頻度が高いのは「ディスク使用状況分析」です。音声や動画を編集する機会が増え、サイズの大きな不要ファイルを検索・削除するときに便利だと思いました。
メインの復元機能も、誤ってファイルを削除してしまった場合など、普段は利用する機会は少ないと思いますが、常にこのソフトを準備しておくことで安心してPCを操作できると感じました。
無料版も用意されているので、気になる方は一度使ってみてはいかがでしょうか。
9.Facebookプレゼント企画のお知らせ
Facebookでプレゼント企画を実施中です。
Movable TypeのWorkflowプラグインでDataAPIが利用可能になる「WorkflowDataAPIプラグイン」
これは「Movable Type Advent Calendar 2022」15日目の記事です。
Movable TypeのWorkflowプラグインでDataAPIが利用可能になる「WorkflowDataAPIプラグイン」の紹介です。
1.概要
Workflowプラグインを使ったワークフロー機能は管理画面上でしか利用・操作できません。
そこで、DataAPIを提供することで、任意のクライアントアプリケーションを通じてワークフロー機能を利用できるようにしてみました。
また、DataAPI機能をWorkflowプラグインに含めると、イニシャルコストが高くなるため、別プラグインとしています。
DataAPIを利用する場合は、Workflowプラグインに加えて、WorkflowDataAPIプラグインをインストールして頂く形になります。
2.主な機能
現状では下記の機能についてAPIを提供しています。
- 記事データの取得
- コンテンツデータの取得
- 記事データの承認依頼
- コンテンツデータの承認依頼
- 記事データの承認
- コンテンツデータの承認
- 記事データの差し戻し
- コンテンツデータの差し戻し
承認依頼・承認・差し戻しではメールの送信も行われます。
記事・コンテンツデータの取得では、ワークフローに必要な、承認者一覧が取得できます。
また、記事・コンテンツデータの承認依頼・承認・差し戻しではワークフローのステータスを更新することができます。
3.サンプル
DataAPIのサンプルを一部紹介します。
これはライターが公開状態のコンテンツデータについて承認依頼を行うサンプルです。
<script>
$.ajax({
url: "http://user-domain/cgi-bin/mt/mt-data-api.cgi/v2/authentication",
type: "POST",
dataType: "json",
data: {
'username': 'workflow_writer',
'password': 'password',
'clientId': 'test'
}
}).done(function(data){
sessionId = data.sessionId
accessToken = data.accessToken
// コンテンツデータ
data = {
// 承認依頼のステータス
status: "20",
authored_on: "20220407205922",
modified_on: "20220418222222",
// コンテンツフィールド
fields: [{
id: 7,
type: "single_line_text",
value: "test123456"
},{
id: 8,
type: "number",
value: "123"
},{
id: 182,
type: "content_type",
value: [ 1 ]
}],
label: "test",
identifier: "def6decc71301a52e9a760d6d8f7fdc497f54d8",
unique_id: "def6decc71301a52e9a760d6d8f7fdc497f54d8"
};
// コンテンツデータの承認依頼
var accessToken = "MTAuth accessToken=" + accessToken;
$.ajax({
url: "http://user-domain/cgi-bin/mt/mt-data-api.cgi/v4/sites/1/contentTypes/2/workflow_data/52",
type: "PUT",
data: 'content_data=' + JSON.stringify(data),
dataType: "json",
headers: {
'X-MT-Authorization': accessToken
}
}).done(function(data){
$('#test').text(data.status);
});
});
</script>
4.プラグインについて
WorkflowDataAPIプラグインの詳細は下記のページをご覧ください。
Movable Type AMI版(AWS)のアップデート
Movable Type AMI版(AWS)のアップデート方法を紹介します。
アップデートのたびにドキドキするので(笑)、実行画面を備忘録で残しておきます。
手順は下記に記載されています。
ちなみに現在のバージョンは5201です。
1.既存の環境のスナップショットを作成する
自分のEC2に行く方法も書いておきます。
ログインして、検索で「ec2」を入力。
検索結果の「EC2」をクリック。
地域を選択。ここでは「東京」を選択します。
これで自分のEC2になるので、「Elastic Block Store」→「スナップショット」をクリック。
右上の「スナップショットの作成」をクリック。
画面が切り替わるので、「ボリューム」を選択して、説明に適当な文字列を設定し、必要に応じて「タグ」を追加。
下部にある「スナップショットの作成」をクリック。
一覧の「スナップショットのステータス」が「完了」になればスナップショット完了です。
1.既存のデータをバックアップする
省略しています。
3.yumコマンドでアップデートする
ここではnginx版の手順を掲載します。
すべてのキャッシュを削除します。
[ec2-user@ip-xx-x-x-xxx ~]$ sudo yum clean all
Loaded plugins: priorities, update-motd, upgrade-helper
Cleaning repos: amzn-main amzn-updates movabletype
Cleaning up everything
いよいよアップデートします。
[ec2-user@ip-xx-x-x-xxx ~]$ sudo yum update movabletype
Loaded plugins: priorities, update-motd, upgrade-helper
amzn-main | 2.1 kB 00:00
amzn-updates | 3.8 kB 00:00
movabletype | 2.9 kB 00:00
(1/6): amzn-main/latest/group_gz | 4.4 kB 00:00
(2/6): amzn-updates/latest/group_gz | 4.4 kB 00:00
(3/6): amzn-updates/latest/updateinfo | 794 kB 00:00
(4/6): amzn-updates/latest/primary_db | 5.3 MB 00:00
(5/6): amzn-main/latest/primary_db | 4.0 MB 00:00
movabletype/x86_64/primary_db FAILED
https://repo.movabletype.jp/repo/mt7/F51C6CE5097FFEEBFA7DFEB6746625A5/x86_64/repodata/33e21287e2eff035f30827a094969cf6f4d9e8ff3234edf6d7d3950441eb03cc-primary.sqlite.bz2: [Errno 14] HTTPS Error 404 - Not Found
Trying other mirror.
To address this issue please refer to the below knowledge base article
https://access.redhat.com/articles/1320623
If above article doesn't help to resolve this issue please open a ticket with Red Hat Support.
movabletype/x86_64/primary_db FAILED
https://repo.movabletype.jp/repo/mt7/F51C6CE5097FFEEBFA7DFEB6746625A5/x86_64/repodata/33e21287e2eff035f30827a094969cf6f4d9e8ff3234edf6d7d3950441eb03cc-primary.sqlite.bz2: [Errno 14] HTTPS Error 404 - Not Found
Trying other mirror.
movabletype/x86_64/primary_db | 13 kB 00:00
Resolving Dependencies
--> Running transaction check
---> Package movabletype.x86_64 0:7.9.3-0 will be updated
---> Package movabletype.x86_64 0:7.9.7-0 will be an update
--> Processing Dependency: movabletype-extlib >= 2022.8-24 for package: movabletype-7.9.7-0.x86_64
--> Running transaction check
---> Package movabletype-extlib.x86_64 0:2020.11-13 will be updated
---> Package movabletype-extlib.x86_64 0:2022.8-24 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
movabletype x86_64 7.9.7-0 movabletype 18 M
Updating for dependencies:
movabletype-extlib x86_64 2022.8-24 movabletype 922 k
Transaction Summary
================================================================================
Upgrade 1 Package (+1 Dependent package)
Total download size: 19 M
Is this ok [y/d/N]: y
Downloading packages:
(1/2): movabletype-extlib-2022.8-24.x86_64.rpm | 922 kB 00:00
(2/2): movabletype-7.9.7-0.x86_64.rpm | 18 MB 00:00
--------------------------------------------------------------------------------
Total 50 MB/s | 19 MB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : movabletype-extlib-2022.8-24.x86_64 1/4
error: movabletype:10 unknown option 'su' -- ignoring line
error: movabletype:10 unexpected text
Stopping nginx: [ OK ]
Stopping php-fpm-5.6: [ OK ]
Stopping movabletype: [ OK ]
Stopping mysqld: [ OK ]
Updating : movabletype-7.9.7-0.x86_64 2/4
Starting mysqld: [ OK ]
Starting php-fpm-5.6: [ OK ]
Starting movabletype: [ OK ]
Starting nginx: [ OK ]
Cleanup : movabletype-7.9.3-0.x86_64 3/4
Cleanup : movabletype-extlib-2020.11-13.x86_64 4/4
Verifying : movabletype-7.9.7-0.x86_64 1/4
Verifying : movabletype-extlib-2022.8-24.x86_64 2/4
Verifying : movabletype-extlib-2020.11-13.x86_64 3/4
Verifying : movabletype-7.9.3-0.x86_64 4/4
Updated:
movabletype.x86_64 0:7.9.7-0
Dependency Updated:
movabletype-extlib.x86_64 0:2022.8-24
Complete!
以上です。
管理画面にアクセスするとアップグレード画面になります。
アップグレードします。
管理画面にログインしてバージョンアップされたことを確認します。
バージョンアップをちょっとサボっていたので、一気に5402になりました(笑)。
Adobe Premiere Proで書き出しがすぐに終わる場合の対処
Adobe Premiere Proで書き出しがすぐに終わる場合の対処方法を紹介します。
1.問題点
Premiere Proで2時間ほどの動画を編集した後の書きだしで、書き出しがすぐに終わり、書きだされたファイルのサイズが異様に小さいです。
タイムラインを選択状態にして、青枠で囲んでいます。
2.原因と対処
原因は、編集のときに使った「インをマーク」と「アウトをマーク」の範囲指定が残っている可能性があります。
わかりにくいのですが、下のキャプチャのように、再生ヘッド(青い縦線)の上部に棒が飛び出しています。これはタイムラインに0秒のインとアウトのマークが残っている目印です。
マークを消すには、再生ヘッドを右クリックして「インを消去」を選択。
続けて、再生ヘッドを右クリックして「アウトを消去」を選択。
インとアウトのマークが消去されて、再生ヘッド上部の棒が消えました。
これで書き出しが可能な状態になったと思います。
WindowsのエクスプローラーでExeclの内容を検索する方法
WindowsのエクスプローラーでExeclの内容を検索する方法を紹介します。
1.問題点
Excelに次のテキストを入力しました。
エクスプローラーの検索機能を使ってこの文字列を検索しても、Excelファイルは表示されません。
ということで、エクスプローラーでExeclの内容を検索する方法を紹介します。
2.エクスプローラーでExeclの内容を検索する
Execlの内容を検索するには、エクスプローラーに対して下記の手順を実施します。
「オプション」アイコンをクリック。
「検索」タブをクリック。
「ファイル名と内容を常に検索する~」をチェックして「OK」をクリック。
これで検索結果にExcelファイルが表示されます。
Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処
Movable Type 5で「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーになる場合の対処について紹介します。
1.問題点
過去のバージョンですが、Movable Type 5で管理画面にアクセスすると「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」というエラーに遭遇しました。
ログイン画面でこのエラーが発生するため、ログインすることもできません。
2.原因
サーバのPerlがバージョンアップされたため、MT5のPerlバージョンと適合しなくなったようです。
3.対処
調べたところ、「Got an error: Can't use 'defined(%hash)' (Maybe you should just omit the defined()?)」のエラーに遭遇するk所は下記の3ファイルでした。
extlib/Data/ObjectDriver/Driver/DBD.pm
extlib/I18N/LangTags/Detect.pm
extlib/SOAP/Lite.pm
それぞれ下記の修正を行います。
extlib/Data/ObjectDriver/Driver/DBD.pm
14行目
変更前
unless (defined %{"${subclass}::"}) {
変更後
unless (%{"${subclass}::"}) {
extlib/I18N/LangTags/Detect.pm
140行目
変更前
if defined(%{$module . "::Lexicon"}) or defined(@{$module . "::ISA"});
変更後
if (%{$module . "::Lexicon"}) or defined(@{$module . "::ISA"});
extlib/SOAP/Lite.pm
465行目
変更前
unless (defined %{"$protocol_class\::Client::"}
変更後
unless (%{"$protocol_class\::Client::"}
これでログインはできるようになりますが、ログイン後に別のエラーが発生します。
こちらの対処方法ついては、別エントリーで紹介します。
なお、操作によっては異なるエラーに遭遇するかもしれません。予めご了承ください。
4.参考サイト
Finaleで3連符の中に3連符を設定する方法
Finaleで3連符の中に3連符を設定(3連符の入れ子)する方法を紹介します。
完成イメージ
1.3連符の中に3連符を設定する
まず内側の音符から入力します。
3連符の設定をせず、2分音符を入力し、8分音符の3連符を入力します。
「連符ツール」をクリック。
2分音符をクリック。
連符定義ダイアログが開くので、「『4分音符3個』を『4分音符2個分』に入れる」を設定。この項目は小節全体に対してどう設定するかで考えてください。今回は3連符の入れ子は2分音符の中で設定するので、親の3連符は4分音符3個分、範囲は4分音符2個分(または2分音符1個分)になります。
3連符の表記位置を「音符の上」にして「OK」をクリック。これを設定しないと子の3連符と表示が重なります。
これで3連符の入れ子部分が完成です。
残りの拍も入力して、完成です。
2.参考サイト
参考サイト(Twitter)は下記です。ありがとうございます。
FInaleでトレモロを表示する方法
FInaleでトレモロを表示する方法を紹介します。
1.2音のトレモロ
完成イメージ
まず、表示させたい長さの半分の音価で入力。全音符の表示であれば2分音符で入力。
トレモロにしたい箇所を選択。
「プラグイン」→「TGツール」→「簡易トレモロ」をクリック。
「連桁の本数:」にトレモロの数を入力して「適用」をクリック。
これで完成です。
2.1音のトレモロ
音符を入力。
「アーティキュレーション」ツールを選択。
トレモロ記号を加えたい音符をクリック(または音符を囲むようにドラッグ)して、「アーティキュレーション」ツールを開く。
音符を囲むようにドラッグした場合は下記のダイアログが開くので「選択」をクリックすれば前述の画面に遷移します。
スクロールをして、34~36のいずれかを選択して「選択」をクリック(音符を囲むようにドラッグした場合は割付画面に戻るので「OK」をクリック)。
これで完成です。
Finaleで小節の繰り返し記号を表示する方法
Finaleで小節の繰り返し記号を表示する方法を紹介します。
完成イメージ
1.繰り返し記号を表示する
繰り返し記号を表示したい小節を選択状態にします。
「五線ツール」をクリック。
「楽譜スタイルの適用」→「スコア譜とパート譜」を選択。
「1小節の繰り返し表記」を選択。
これで完成です。
さくらインターネットのメーリングリストで警告が表示される・届かない場合の対処
さくらインターネットのメーリングリストで警告が表示される・届かない場合の対処方法を紹介します。
1.問題点
さくらインターネットのサーバの機能として用意されているメーリングリストを使っているのですが、メンバーによっては届いたメールで警告が表示されたり、届かなかったりするようです。
ということで、さくらインターネットのメーリングリストで警告が表示される・届かない場合の対処方法を紹介します。
2.原因
原因は、さくらインターネットのドメイン設定で「SPFレコード」が有効になっていないためのようです。
「SPF」とは「Sender Policy Framework」の略で、電子メールの送信者偽称を防ぐ送信ドメイン認証方法のひとつです。
「SPFレコード」は、メール送信側が、自ドメインの権威DNSサーバ上に、自ドメインの送信者がメールを外部に向けて送出する可能性のあるメールサーバのIPアドレスの一覧をあらかじめ記述し、そのDNSリソースレコードを指します。
SMTP通信で、SPFを利用すれば、メールを受信したとき、そのメールが本当にメール送信者であると唱えられているメールアドレスのドメインから送られてきたものかどうかを確認することが可能になります。
3.対処
コントロールパネルから「ドメイン/SSL」→「ドメイン/SSL」をクリック。
メーリングリストを使用しているドメインの「設定」をクリック。
「SPFレコードの使用」をチェックして「保存する」をクリック。
これでメーリングリストの使用でSPFレコードが有効になります。
vi/vimで範囲指定して置換する方法
vi/vimで範囲指定して置換する方法を紹介します。
1.問題点
vi/vimで置換するには
:%s/[検索文字列]/[置換文字列]/
一括置換であれば
:%s/[検索文字列]/[置換文字列]/g
ですが、範囲を指定して置換する方法が分かりません。
ということで、vi/vimで範囲指定して置換する方法を紹介します。
2.範囲指定して置換する
範囲指定して置換するには、マーク機能を併用します。
まず、置換したい範囲の開始行で
ms
を入力します。
次に置換したい範囲の終了行で、
me
を入力します。
そして、コマンドモードで、
:'s,'es/[検索文字列]/[置換文字列]/
を入力すれば、指定した範囲だけが置換されます。
vimの場合、範囲外の行にある対象文字列が反転するようです。
WordPressでカスタムフィールドを表示する方法
WordPressでカスタムフィールドを表示する方法を紹介します。
この記事ではWordPress6.0.1で動作確認しています。
1.問題点
WordPressでカスタムフィールドを表示させたいのですが、手順を忘れてしまい、ネットで調べたのですが古い画面の手順しか出てきません。
みなさんユーチューバーになってしまったようです(笑)。
ということで、最新版のWordPressでカスタムフィールドを表示する方法を紹介します。
2.WordPressでカスタムフィールドを表示する
記事編集画面の右上にある「オプション」アイコンをクリック。
「設定」をクリック。
「パネル」をクリック。
「カスタムフィールド」を有効にします。
すぐに有効にしたい場合は「有効化してリロード」をクリック。編集中の場合は一旦保存してからこの操作を行ってください。
これでカスタムフィールドが表示されます。
vi/vimでマークした行に移動する方法
vi/vimでマークした行に移動する方法を紹介します。
1.問題点
vi/vimでは
m{mark}
でマークする機能があります。
{mark}にはアルファベット26文字×2(大文字・小文字)が登録できます。
たとえば、10行目にカーソルがある状態で
ma
と入力すれば、aに10行目が登録されます。
が、マークした位置にジャンプする方法が分かりません。
ということで、vi/vimでマークした行に移動する方法を紹介します。
2.マークした行に移動する
マークした行に移動するには、
'{mark}
と入力します。
先の例であれば、
'a
と入力すれば10行目にジャンプします。
コマンドモードに切り替える必要はありません。
vi/vimで複数行を一括削除する方法
vi/vimで複数行を一括削除する方法を紹介します。
1.問題点
vi/vimで複数行を削除する場合、"dd"または、削除したい行数の数字を入力した後、"dd"を入力していますが、指定した範囲をまとめて削除する方法がわかりません。
ということで、vi/vimで複数行を一括削除する方法を紹介します。
2.複数行を一括削除する
複数行を一括削除するには、まず削除開始行で、
ms
を入力します(コマンドモードに切り替える必要はありません)。
次に終了行で、
me
を入力し、そのあと、
:'s,'ed
を入力すれば、msからmeまでの行が削除されます。
3.解説
"m"はカーソルの位置を2文字目に記録するという機能があります。
"ms"と"me"は"s"と"e"にそれぞれカーソルの位置を記録します。
"s"と"e"はstartとendの意味なので、別の文字でも構いません。
話がそれますが、行番号で複数行削除するコマンドは、コマンドモードで、
:開始行,終了行d
となります。
たとえば、
:3,7d
と入力すれば、3行目から7行目までを削除します。
話を戻して、
:'s,'ed
は、":"でコマンドモードに切り替えて、"s"から"e"までを削除(d)するという意味になります。
開始を"mb"、終了を"mo"に変えた場合は、
:'b,'od
になります。