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

Notepad++でのSSH接続にはOpenSSH形式の秘密鍵を利用する

Windows用高機能エディタ「Notepad++」には、エディタ内から直接サーバーに接続してファイルの削除やリネーム、編集を行うことができるプラグイン「NppFTP」が付属しています。(参考:Notepad++のFTPプラグイン「NppFTP」の設定方法

じつはこの「NppFTP」では通常のFTP以外にも、FTPS(FTP over SSL)、さらにSFTP(SSH)にも対応しています。

しかし先日、契約しているVPSにSSH接続(公開鍵認証)で繋ごうとしたところ、下記のようなエラーが出て接続が行えませんでした。

[NppFTP] Everything initialized
Connecting
[SFTP] Host key accepted
[SFTP] Error during authentication: Invalid private key file.
Unable to connect

Disconnected

「Invalid private key file」という部分から察するに、どうも秘密鍵の認証が上手くいっていないようです。しかし、この秘密鍵は通常はSSHクライアントのPoderosaで問題なく認証が通っているファイルです。

で検索してみたところ、ある情報にたどりつきました。

If it says Invalid private key file, the key probably isn’t an OpenSSH key
・NppFTP not working via SSH – sourceforge

つまりNotepad++でのSSH接続には、秘密鍵がOpenSSH形式である必要があるとのことです。

Poderosaで使っている秘密鍵は独自形式のため、これをOpenSSH形式に変換する必要があります。変換については、Putty付属のツール「puttygen.exe」を用いるのがもっとも簡単だと思います。これについては以下の記事が参考になりました。

・poderosaの秘密鍵をOpenSSH形式に変換する – (゚∀゚)o彡 sasata299’s blog

上記記事の手順に従い、秘密鍵をインポートして変換後、メニューバーからOpenSSH形式でエクスポートすることで新しい秘密鍵が作成できます。
これを用いてNotepad++からの接続を試したところ、正常に認証がとおり接続可能となりました。

Notepad++のスタイル設定をカスタマイズする

海外で人気の多機能エディタNotepad++において、色設定(シンタックスハイライト)をカスタマイズする方法について説明します。

なお「Notepad++ v5.8.7-6(EUC-JP対応版)」をもとに解説します。

Notepad++の色設定について

プログラミング言語ごとに色設定を変えるシンタックスハイライトが、Notepad++ではかなり柔軟に設定できるようになっています。プロポーショナルフォントや日本語フォントも問題なく利用できますし、色だけでなく、太字・斜体・下線などの書式もこまかく設定できます

ただそのぶん設定方法がいくぶん分かりにくく、Notepad++を使い出した頃は自分もどう設定するかよく迷ったので、ここで解説してみます。

スタイル設定のカスタマイズ

Notepad++では色設定は「スタイル設定」と呼ばれています。
メニューバーの「設定」→「スタイル設定」をクリックし、「テーマを選択」のリストボタンから既存のいくつかのスタイルを設定できます。
今回はこの一覧にオリジナルのスタイルを追加し、自由にカスタマイズしてみます。

スタイルの追加

いちから自分のスタイル設定ファイルを作るのは大変ですので、既存のスタイルファイルをコピーしてカスタマイズすることにします。

  1. Notepad++をインストールしたフォルダの「theme」フォルダを開き、既存の適当なスタイルをコピーして名前を変更します。(今回の例では「zenburn」をコピーして「MyStyle」にしました)
    スタイルコピー → スタイルコピー
  2. Notepad++を再起動します。
  3. メニューバーの「設定」→「スタイル設定」をクリックし、「テーマを選択」の一覧に新たに追加されている「MyStyle」を選択します。

Global Stylesのカスタマイズ

Notepad++では、各言語別の設定とは別にGlobal Stylesと呼ばれる設定があります。言語それぞれの設定をしていない場合でも、このGlobal Stylesがまず反映されます。

  1. スタイル設定画面の「言語:」から「Global Styles」を選択します。
  2. 「コメント:」の「Global override」を選択します。

    • 「Global override」は他言語すべての設定を上書きするものです。
      フォントや色をここで設定し、なおかつ「~を他のスタイルにも適用」にチェックを入れていると、各言語のフォントや色を個別に設定しても反映されなくなります。(=各言語の設定よりも「Global override」が優先的に選択されます)
    • 色などは言語別に個別に設定したいことが多いと思いますので、「Global override」を使うのは「背景色」「フォント名」「フォントサイズ」あたりにしておくことをおすすめします。
  3. そのほかの「Global Styles」を設定します。各設定は以下に示します。

Default Style
基本的な文字色や背景色、フォント名…etcを設定します。(Global overrideで「他のスタイルにも適用」にチェックを入れていない場合は、この項目がデフォルトになります)
Indent_guideline_Style
開始タグと終了タグの対応関係を示す点線部分に適用されるスタイルです。
Brace highlight style
タグや括弧の前後にカーソルがある場合に、対応するタグor括弧が強調表示されます。その強調表示のスタイルです。
Bad brace colour
きちんと閉じられていないタグや括弧を強調表示する際のスタイルです。
Current line background
現在行を強調表示する際のスタイルです。
Selected text colour
テキストを選択した際のスタイルです。
Caret colour
キャレット(カーソル)のスタイルです。
Line number margin
行番号のスタイルです。
Fold
行の折り畳み操作部分のスタイルです。
Fold margin
行の折り畳み操作部分の背景のスタイルです。
White space symbol
タブ・空白スペースのスタイルです。
Smart HighLighting
特定の単語をダブルクリックで選択した際、ファイル内の同じ単語を強調表示する「スマートハイライト」のスタイルです。
Incremental highlight all
インクリメンタルサーチを行う際の強調表示スタイルです。
Tags match highlighting
開始タグに対応する終了タグを強調表示する際のスタイルです。(Brace highlight styleと似ていますが、Brace~は括弧全般にも反映されるのに対し、Tags match~はタグのみに設定されます)
Tags attribute
タグ内の属性部分のスタイルです。
Active tab focused
タブ一覧部分における、現在のタブのスタイルです。
Active tab unfocused
ビューを二画面にしている場合に、アクティブになっているのにフォーカスされていないタブのスタイルです。
Active tab text
現在のタブの文字色のスタイルです。
Inactive tabs
現在選択されていないタブのスタイルです。
Find Mark Style
検索時に「Mark」タブから「すべて検索」を実行した際に検索結果を強調表示する際のスタイルです。

※「Edge colour」は公式だと「Color of the vertical edge.」となってるんですが、ちょっと使いどころが分からなかったです。

言語別のカスタマイズ

次に各言語別の設定を行います。
言語ごとに設定項目が違いますが、ここでは「HTML」を例にとって説明してみます。

DEFAULT
メニューバーの「言語」からHTMLを選択した場合のデフォルトの設定です。(ただし「Global override」を設定している場合は「Global override」が優先されますので注意してください)
COMMENT
コメント部分のスタイルです。
DOUBLESTRING
ダブルクォーテーションで囲まれた文字列のスタイルです。
SINGLESTRING
シングルクォーテーションで囲まれた文字列のスタイルです。
TAG
タグ部分のスタイルです。
TAGEND
<br />のような「/>」部分に適用されるスタイルです。
TAGUNKNOWN
Notepad++がHTMLタグとして認識していないタグに適用されるスタイルです。
ATTRIBUTE
タグ内の属性部分のスタイルです。
ATTRIBUTE
Notepad++が認識していない属性部分に適用されるスタイルです。
SGMLDEFAULT
SGML(標準一般化マーク付け言語)のデフォルトスタイルです。
CDATA
CDATAのスタイルです。
ENTITY
文字実体参照部分のスタイルです。

すべての設定が終わったら「保存して閉じる」をクリックします。

まとめ

一番注意しないといけないのは「Global Styles」内の「Global override」だと思います。重ねて書きますが、ここで「~を他のスタイルにも適用」にチェックを入れると、他のすべての設定を上書きしてしまうので注意してください。

Global overrideを使うと設定はすぐに済みますが、こまかな設定はしにくくなります。徹底的にカスタマイズしたい場合は、Global overrideは使わずにおくことをおすすめします。

Notepad++の場合、しようと思えば「タグ」「文字列」「コメント」それぞれにすべて違うフォントを設定したり、コメント部分だけ文字サイズを小さくしたりなど、とても柔軟な表示設定ができます。ぜひ自分好みの環境をつくりあげてください。

Vimでのウィンドウ分割方向の設定(netrw含む)

Vimでウィンドウ分割方向を設定

Vimの初期設定ではウィンドウの分割は、水平分割は上側、垂直分割は左側に新規ウィンドウが表示されます。このウィンドウ分割を逆方向(下側と右側)にしたい場合の設定方法です。

通常ウィンドウ分割方向

_vimrc(_gvimrc)に以下のように記述します。

" 新しいウィンドウを下に開く
set splitbelow
" 新しいウィンドウを右に開く
set splitright

netrwのウィンドウ分割方向

さて通常ウィンドウの分割は比較的すぐに情報が見つかるのですが、先日紹介したnetrwでのウィンドウ分割は、上記の設定では反映されません。この設定を調べるのにちょっと苦労したのでメモしておきます。

" netrwで新しいウィンドウを下に分割する
let g:netrw_alto = 1
" netrwで新しいウィンドウを右に分割する
let g:netrw_altv = 1

以上で、通常ウィンドウもnetrwからでも常にウィンドウが下側・右側に分割されるようになります。