Warning: Declaration of FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Tags::wrap($content, $before, $sep, $after) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Category::wrap($content, $sep, $parents) should be compatible with FEE_Field_Terms::wrap($content, $taxonomy, $before, $sep, $after) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Thumbnail::wrap($html, $post_id, $post_thumbnail_id, $size) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Post_Meta::wrap($data, $post_id, $key, $ui, $single) should be compatible with FEE_Field_Post::wrap($content, $post_id = 0) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/post.php on line 0

Warning: Declaration of FEE_Field_Widget::wrap($params) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/widget.php on line 0

Warning: Declaration of FEE_Field_Comment::wrap($content) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Single_Title::wrap($title) should be compatible with FEE_Field_Term_Field::wrap($content, $term_id, $taxonomy) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0

Warning: Declaration of FEE_Field_Option::wrap($content, $key, $ui) should be compatible with FEE_Field_Base::wrap($content, $data) in /home/twfs/serverkurabe.com/public_html/blog/wp-content/plugins/front-end-editor/php/fields/other.php on line 0
Sabakura Blog - Part 19

Vim(gVim)でサーバー上のファイルを直接編集する

先日、Windows環境でサーバー上のファイルを透過的に編集するにはnotepad++が一番簡単であるという記事を書きましたが、思ったよりニーズがあるようなので他エディタの場合も書いておきます。

といっても私の知っている限りでは、SSHが使えない共用レンタルサーバー上のファイルを透過的に編集できるエディタはあまり多くありません。
FTPというプロトコルはセキュリティ面からやや時代遅れになりつつありますので、リモートでファイルを編集できる手段が少ないのは仕方ないのだと思います。

しかし逆に言えば、古典的かつ名エディタの代表格である「Vim(WindowsではgVim)」および「Emacs(WindowsではMeadow)」ではFTPを利用したリモート編集に対応しています。
※もしかすると秀丸とかにもあるのかもしれませんが、ほとんど使ったことないのでちょっと分からないです。

というわけで、今回はVim(Kaoriya版gVim)を使ってサーバー(レンタルサーバー)上のファイルを編集する方法をご紹介します。

↓参考画像:Vimを使って、サーバー上のファイル一覧を左ウィンドウに表示しつつ、複数のPHPファイルとCSSを編集している様子(クリックで拡大画像)。
Vimでサーバー上のファイルを編集

Vim(gVim)でサーバー上のファイルをFTPを使って直接編集する

今回は、仮に以下のようなサーバーに接続すると仮定します。

・FTPサーバー名:hogehoge.jp
・FTPアカウント名:foo
・パスワード:fugafuga

基本的な接続

最新版のVimでは「netrw」と呼ばれるファイルブラウザが用意されており、FTP接続をする場合でも、コマンドラインでFTP接続を指定してやるだけで接続できるようになっています。
具体的には、以下のようにコマンドを入力します。

e ftp
//hogehoge.jp/

上記コマンドを入力すると「Enter username:」と表示されてユーザー名を聞かれるので「foo」と入力、続けて「Enter Password:」と表示されるので「fugafuga」と入力します。

「続けるにはENTERを押すかコマンドを入力してください」と表示されるので適当なキーを押すと、サーバー上のファイル・ディレクトリ一覧が表示されます。

ユーザー名の入力を簡易化

上記作業でFTPサーバーに接続できますが、これだとVimを起動しなおすたびにユーザー名も入力しなおす必要があります。
これが面倒な場合は、以下のように@を使ってユーザー名もまとめて入力できます。
一度使えば、次回以降は補完を使えば入力はとても簡単になります。

e ftp
//foo@hogehoge.jp/

なお、パスワードに関してはセキュリティの観点からも毎回入力するのが望ましいです。

あるいはLinux/Unix環境などで.netrcが設定できる場合は、そちらにパスワード等を記入することで比較的安全にパスワード入力を省略することもできます。ただ、Windowsではこうした設定はできないようです。(もし知っている方がいたらぜひ教えてください)

netrwでのブラウザ

netrwを使ってFTP接続した場合の詳しい接続方法は、こちらのドキュメントを参考にしてください。

ただ、はじめのうちに戸惑いそうなところだけ補足しておきます。

ファイル・ディレクトリ一覧に戻る

netrwで表示された一覧から、水平分割(s)や垂直分割(v)を使わずに同一ウィンドウでそのままファイルを開いた場合、ファイルブラウザが見えなくなります。
この状態からファイルブラウザ(netrw)に戻るには、以下のコマンドを使ってください。

:Rexplore

:Rexploreがエラーになる場合

上記のコマンドでファイルブラウザに戻ろうとしてもエラーが表示されて戻れないことがあります。

これは、すでに一度「:Rexplore」でファイルブラウザに戻っている場合に、その戻ったディレクトリのパスもバッファとして格納されているために起こる現象のようです。
ようするに、同一バッファを二重に開けないのと同じで、このパスのバッファも二重に開くことができない、ということのようです。(と個人的には理解しています)

そのため、この状態でファイルブラウザに戻るには、バッファ一覧からパスのバッファを選択します。具体的には以下のように操作します。

:ls

これでバッファ一覧を表示します。

表示されたバッファ一覧に、パスがディレクトリで終わっているものがあると思いますので、その番号のバッファを開きます。たとえばパスのバッファが「5」だったとすると。

:b 5

これでファイルブラウザに戻ることができます。
なお、もちろんそのほかのバッファ切り替え操作でも切り替えられます。

ただ若干面倒なので、個人的にはファイルブラウザは左に常時出しておいて、ファイルはすべて他ウィンドウを分割して編集するようにしています。

Notepad++のFTPプラグイン「NppFTP」の設定方法

この記事ではWindows環境で動く多機能エディタ「Notepad++」のプラグイン「NppFTP」の設定方法を解説します。

NppFTPは、FTPを利用して、エディタから直接サーバー上のファイルを編集できる(正確には直接編集しているように振舞える)ようにするプラグインです。
詳しくは、以下の記事も参考にしてください。

・参考:脱FTPクライアント!notepad++のすすめ

NppFTPの設定方法

なお、以下の設定はNotepad++ EUC-JP対応版のVer 5.8.7-6 (UNICODE) を元にした記述です。(NppFTPプラグインはソフト自体に同梱されています)

  1. Notepad++を起動します。
  2. メニューバー「プラグイン」→「NppFTP」→「Show NppFTP Window」をクリック。
  3. ウィンドウ右側に表示されるNppFTPウィンドウの「Settings(歯車マーク)」→「Profile Settings」をクリック。
  4. 「Profile Settings」ウィンドウ左下の「Add new」をクリックし、プロファイル名(通常はサイト名でOKです)を入力して「OK」をクリック。
  5. 「Connection」タブの「Hostname」にFTPサーバーのアドレスを入力します。
  6. 「Connection type」は「FTP」を選びます。(サーバーがSFTPなどよりセキュアなものに対応していればそちらを選んでもOKです)
  7. 「Port」にポート番号を指定。(多くの場合は21のままでOKです)
  8. 「Usernamae」と「Password」にFTPアカウント名とパスワードを入力します。
  9. 「Ask for password」のチェックを外すと、毎回のパスワード入力作業を省略することができます。お好みでチェックを外してください。
  10. 「Timeout」にサーバーをタイムアウトするまでの時間を設定します。
  11. 「Initial remote directory」に、サーバー上で最初に表示させたいディレクトリを指定します。(たとえば毎回「/public_html」にアクセスするなど設定できます)
  12. 「Cache」タブを開き、「Local path」の参照ボタンをクリックします。
  13. ローカルマシン内でサイトのファイルを保存しているフォルダを選び、「OK」をクリックします。
  14. 「External path」に、ローカルフォルダと同期させたい、サーバー上のディレクトリを指定します。
  15. 「Add new」をクリックします。
  16. 「Close」をクリックすると、設定は完了します。

設定のポイントは「Local path」と「External path」で、ここに記述したフォルダ(ディレクトリ)がローカルとリモート(サーバー)で同期されるようになります。

たとえばですが、Local pathを「C:public_html」、External pathを「/public_html」にすれば、Cドライブ直下のpublic_htmlフォルダと、サーバーのpublic_htmlディレクトリが同期されます。

なお、サーバー上のフォルダ構成はレンタルサーバーのサービスによっても異なりますので、よく確認のうえで設定するようにしてください。

notepad++のプラグイン「NppFTP」と「FTP Synchronize」の違いについて

先日、notepad++のFTPプラグインのおすすめ記事を書きましたが、そのなかで出てきた「NppFTP」と「FTP_synchronize(FTP Folders)」の違いについて少し調べたので備忘録がてらに書いておきます。

NppFTPとFTP_synchronize(FTP Folders)の違い

まず、どちらもnotepad++にFTP機能を追加するプラグインですが、どちらかといえばNppFTPの方が利用者は多いようです。
これは、EUC-JP版でもNppFTPが同梱されているところからも分かると思います。

でも、EUC-JP作者さんのホームページではおすすめプラグインではFTP synchronizeが挙がってるんですよね。ちょっとこの辺りの理由がよく分からないのですが。

どうやら2010年12月から、FTP_synchronizeの最新版がNppFTPと呼称されるようになった、というの正解みたいです(参考:Uploading files to your website with NotePad++)。
ただ、挙動の違いから前者を使い続けている方もいるみたいです。後継版ではありますが、それぞれ別のプラグインとして認識・利用できますので、以下の内容はそういう前提のもとで読んでいただければと思います。

機能面および使用感の違い

まずNppFTPではFTP接続の種類も、普通のFTP以外にFTPS、SFTPが使えるなど、よりセキュリティ意識が高い作りになっています。これはNppFTP自体にマスターパスワードを設定できるといった部分にも現われていると思います。

そのほかFTP_synchronizeでは「keep alive」といってFTPサーバーとの接続が途切れないようにする機能があります。ただ、NppFTPではkeep aliveがないかわりにauto reconnect(自動再接続)機能を入れることで、ほぼ同じ機能を再現しようとしているようです。

実際、私の環境でもkeep aliveはレンタルサーバーによっては有効にならないときがありますので、自動再接続の方がベターなのかもしれません。

以上のようにNppFTPの方が機能的には良い面が目立つのですが、個人的な使用感としてNppFTPはファイル・フォルダの一覧の取得がちょっと遅い気がします。具体的には、フォルダツリーをクリックしたときに展開されるのに、ちょっとひっかかるような感じがあります。

とはいえ、そうしょっちゅうツリーを展開させることもないと思いますので、これからnotepad++を使うのであればNppFTPをおすすめします。(最初から同梱もされていますし)

なお、NppFTPでのFTP接続の設定方法の解説も今週中に書く予定です。
 
 
にしても、notepad++は良いエディタなのですが、なにぶん日本語の解説記事が少ないのが残念です。たとえば文書切り替えの順番の「MRUを使用する」が「Most Recently Used の略」だとか、よく分からない略語も多いですし……。
当サイトでもまたこうした解説記事をときどき書いていければと思います。