更新 2020.3.14 15:54閲覧 2841

Geany で html でも php の自動補完をできるようにする

紀永のような HTML ファイルに PHP を記述することができ、かつクラス属性に Bootstrap を指定できる環境では、Geany のスニペットを使うと入力作業が効率化するので snippets.conf 作成した。

GeanyはGTK+上の軽量なクロスプラットフォームのテキストエディタであり、Scintillaと基本的な統合開発環境 (IDE) 機能をベースとしている。他のパッケージにあまり依存せず、立ち上げ時間が短い設計になっている。Windows、Linux、macOS、BSD、Solarisなど、様々なオペレーティングシステムで動作する。サポートするプログラミング言語としては、C言語、Java、JavaScript、PHP、HTML、CSS、Python、Perl、Ruby、Pascal、Haskell、Lua などがある。

Geany - Wikipedia

スニペット(英語: snippet)とは、「断片」という意味である。情報処理の分野ではよく使う短いプログラムコードを統合開発環境から呼び出す機能の事である。また、呼び出される短いコードの事をスニペットと呼ぶ場合もある。

スニペット - Wikipedia

設定

ツール(T) → 設定ファイル(O) → filetype_extensions.conf
# Filetype extension configuration file for Geany # Insert as many items as you want, separate them with a ";". # See Geany's main documentation for details. [Extensions] ### 省略 ### Pascal=*.pas;*.pp;*.inc;*.dpr;*.dpk; Perl=*.pl;*.perl;*.pm;*.agi;*.pod; PHP=*.php;*.php3;*.php4;*.php5;*.phtml; # ← phtml の p を削除して保存 Po=*.po;*.pot; Python=*.py;*.pyw;SConstruct;SConscript;wscript; ### 以下略 ###
HTML=*.htm;*.html;*.shtml;*.hta;*.htd;*.htt;*.cfm;*.php; # ← 追記して保存

適用

ツール(T) → 設定ファイル(O) → snippets.conf https://gist.github.com/DOlDNa/4b62f9d7dcd8dfc7a225ae69492a6401 を [PHP] にコピペ。

チートシート

入力出力
ifif ( )
{
}
elseelse
{
}
forfor ($i=0, $c=count( ); $i < ; ++$i)
{
}
funcfunction ( )
{
  return
}
whilewhile ( )
{
}
dodo
{
  
} while ( )
switchswitch ( )
{
  case : ; break;
  default:
}
trytry
{
  
}
catch ( )
{
}
filfilter_input(INPUT_POST, ' ', FILTER_SANITIZE_STRING)
filvfilter_has_var(INPUT_POST, ' ')
varvar_dump( );
logconsole.log(' ');
a<a href=" "> </a>
abbr<abbr title=" "> </abbr>
absolute<div class="position-absolute"> </div>
acco<div class="accordion" id="a ">
  <div class="card">
    <div class="card-header" id="b ">
      <h2 class="border-0 mb-0">
        <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#c " aria-expanded="true" aria-controls="c "> </button>
      </h2>
    </div>
    <div id="c " class="collapse show" aria-labelledby="b " data-parent="#a ">
      <div class="card-body"> </div>
    </div>
  </div>
  <div class="card">
    <div class="card-header" id="d ">
      <h2 class="border-0 mb-0">
        <button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#e " aria-expanded="false" aria-controls="e "> </button>
      </h2>
    </div>
    <div id="e " class="collapse" aria-labelledby="d " data-parent="#a ">
      <div class="card-body"> </div>
    </div>
  </div>
</div>
addr<address> </address>
alert<div class="alert alert-danger "><a href=" " class="alert-link"> </a> </div>
baseline<span class="align-baseline"> </span>
bdg<span class="badge badge-secondary "> </span>
bgda<div class="p-3 mb-2 bg-danger text-white"> </div>
bgdk<div class="p-3 mb-2 bg-dark text-white"> </div>
bgin<div class="p-3 mb-2 bg-info text-white"> </div>
bgli<div class="p-3 mb-2 bg-light text-dark"> </div>
bgpr<div class="p-3 mb-2 bg-primary text-white"> </div>
bgse<div class="p-3 mb-2 bg-secondary text-white"> </div>
bgsu<div class="p-3 mb-2 bg-success text-white"> </div>
bgwa<div class="p-3 mb-2 bg-warning text-white"> </div>
bgwh<div class="p-3 mb-2 bg-white text-dark"> </div>
bold<p class="font-weight-bold"> </p>
bottom<span class="align-bottom"> </span>
br<br>
btn<button type="button" class="btn btn-primary "> </button>
btng<div class="btn-group ">
  <button type="button" class="btn btn-secondary "> </button>
  <button type="button" class="btn btn-secondary "> </button>
  <button type="button" class="btn btn-secondary "> </button>
</div>
cap<p class="text-capitalize"> </p>
card<div class="card">
  <img src=" " class="card-img-top" alt=" ">
  <div class="card-body">
    
  </div>
</div>
caro<div id=" " class="carousel slide" data-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src=" " class="d-block w-100" alt=" ">
    </div>
    <div class="carousel-item">
      <img src=" " class="d-block w-100" alt=" ">
    </div>
    <div class="carousel-item">
      <img src=" " class="d-block w-100" alt=" ">
    </div>
  </div>
</div>
center<p class="text-center"> </p>
cite<cite> </cite>
clear<div class="clearfix "> </div>
close<button type="button" class="close" aria-label="Close"><span aria-hidden="true">&times;</span></button>
code<code> </code>
d1<h1 class="display-1"> </h1>
d2<h1 class="display-2"> </h1>
d3<h1 class="display-3"> </h1>
d4<h1 class="display-4"> </h1>
dd<dd> </dd>
del<del> </del>
div<div class=" "> </div>
dl<dl class=" ">
  <dt> </dt>
  <dd> </dd>
</dl>
dt<dt> </dt>
em<em> </em>
emb<div class="embed-responsive embed-responsive-16by9 "> </div>
fig<figure class="figure">
  <img src=" " class="figure-img img-fluid rounded" alt=" ">
  <figcaption class="figure-caption"> </figcaption>
</figure>
fixed<div class="position-fixed"> </div>
fixedb<div class="fixed-bottom"> </div>
fixedt<div class="fixed-top"> </div>
fl<div class="float-left"> </div>
flex<div class="d-flex justify-content-between ">
  <div> </div>
  <div> </div>
</div>
fr<div class="float-right"> </div>
h1<h1> </h1>
h2<h2> </h2>
h3<h3> </h3>
h4<h4> </h4>
h5<h5> </h5>
h6<h6> </h6>
h50<div class="h-50"></div>
hr<hr>
img<img class="img-fluid" src=" " alt=" ">
imgr<img class="rounded" src=" " alt=" ">
imgt<img class="img-thumbnail" src=" " alt=" ">
ins<ins> </ins>
inv<div class="invisible"> </div>
italic<p class="font-italic"> </p>
jumbo<div class="jumbotron "> </div>
kbd<kbd> </kbd>
lead<p class="lead"> </p>
left<p class="text-left"> </p>
li<li> </li>
lig<ul class="list-group">
  <li class="list-group-item">
    
  </li>
</ul>
light<p class="font-weight-light"> </p>
liin<ul class="list-inline">
  <li class="list-inline-item"> </li>
</ul>
lower<p class="text-lowercase"> </p>
mark<mark> </mark>
media<div class="media">
  <img src=" " class="mr-3" alt=" ">
  <div class="media-body">
    <h5 class="mt-0"> </h5>
    
  </div>
</div>
mh<div class="mh-100"> </div>
middle<span class="align-middle"> </span>
mono<p class="text-monospace"> </p>
mvh<div class="min-vh-100"> </div>
mvw<div class="min-vw-100"> </div>
mw<div class="mw-100"> </div>
nomal<p class="font-weight-normal"> </p>
ol<ol class=" ">
  <li> </li>
</ol>
p<p> </p>
pill<span class="badge badge-pill badge-primary "> </span>
pop<button type="button" class="btn btn-lg btn-danger " data-toggle="popover" data-placement="top " title=" " data-content=" "> </button>
pre<pre>

</pre>
prec<pre><code> </code></pre>
prog<div class="progress">
  <div class="progress-bar progress-bar-striped" role="progressbar" style="width: " aria-valuenow="10 " aria-valuemin="0" aria-valuemax="100"></div>
</div>
qt<blockquote class="blockquote nowrap">
  <p class="mb-0 wrap">
    
  </p>
  <footer class="blockquote-footer">
    
  </footer>
</blockquote>
relative<div class="position-relative"> </div>
right<p class="text-right"> </p>
row<div class="row">
  <div class="col- "> </div>
  <div class="col- "> </div>
</div>
s<s> </s>
samp<samp> </samp>
shadow<div class="shadow p-3 mb-5 bg-white rounded"> </div>
small<small> </small>
span<span> </span>
spin<div class="spinner-grow text-primary " role="status">
  <span class="sr-only">Loading... </span>
</div>
static<div class="position-static"> </div>
sticky<div class="position-sticky"> </div>
strong<strong> </strong>
tab<nav class="nowrap">
  <div class="nav nav-tabs" id=" " role="tablist">
    <a class="nav-item nav-link active" id="nav-home-tab" data-toggle="tab" href="#nav-home " role="tab" aria-controls="nav-home" aria-selected="true">Home </a>
    <a class="nav-item nav-link" id="nav-profile-tab" data-toggle="tab" href="#nav-profile " role="tab" aria-controls="nav-profile" aria-selected="false">Profile </a>
    <a class="nav-item nav-link" id="nav-contact-tab" data-toggle="tab" href="#nav-contact " role="tab" aria-controls="nav-contact" aria-selected="false">Contact </a>
  </div>
</nav>
<div class="tab-content" id=" ">
  <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab"> </div>
  <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab"> </div>
  <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab"> </div>
</div>
table<table class="table table-dark">
  <tr>
    <td> </td>
  </tr>
</table>
tb<span class="align-text-bottom"> </span>
text<p class="text-primary "> </p>
tip<button type="button" class="btn btn-secondary " data-toggle="tooltip" data-placement="top " data-html="true" title=" "> </button>
top<span class="align-top"> </span>
ttop<span class="align-text-top"> </span>
u<u> </u>
ul<ul class=" ">
  <li> </li>
</ul>
upper<p class="text-uppercase"> </p>
vh<div class="vh-100"> </div>
visible<div class="visible"> </div>
vw<div class="vw-100"> </div>
w50<div class="w-50"> </div>

コメント

当フォームより収集される個人情報は、返信を要する際に使用されるものであり、法令に基づく行政機関等への提供を除き、ご本人の同意を得ずに第三者に提供することはありません。また、コメントが掲載される場合であってもメールアドレスが本サイト内に記載されることはありません。