ソフトウェア/atomエディタ

(2905d) 更新


公開メモ

そろそろ秀丸ともお別れ?

もうかれこれ20年くらい秀丸エディタにお世話になってきましたが、 atom をさわってみたらかなり良いように思えたので、 乗り換えを考えています。

ここは個人的なメモとして使わせて下さい。

Sublime はキーボードショートカットが Windows と相性悪すぎて使えませんでした。。。

設定画面の出し方

Ctrl + ,

  • Scroll Past End = on
  • Show Indent Guide = on

フォント

Ctrl + , から Settings の Font Familiy で変更

プログラミング用フォントには皆さん一家言あるため、Web上にも情報は多い。

atom の特徴として、日本語に対応していない欧文専用フォントでも日本語フォントと並べて書けばちゃんと日本語も表示できるので、フォントの選択肢が非常に広いことが挙げられる。

フォント選択の肝としては、単に字形が美しいだけでなく、フォントサイズを小さくしても、aes とか 1il| とか S5 とか O0 とか +* とかが容易に見分けられるかが肝になる。あとは % # & ! * @ , あたりの形状や見やすさも差が大きい。(歳にもかかわらず文字を小さくしすぎなのがそもそもの問題???)

「文字サイズ」は縦方向の大きさで指定するので、フォントによって横幅はまちまちになる。

Inconsolata, M+ が MSゴシック とほぼ同じ幅で、全角と半角が 2:1 になる。 一方、Source Han Code JP は全角と半角が 3:2 になる。他はその間に入る。

当然横幅が大きい方が見やすい表示には有利なのだけれど、 字形の工夫により、大きさだけでは決まらない。

例えば、Inconsolata は文字幅が小さいにもかかわらず文字間も広いため フォントサイズを小さくすると見難い。 あと ( ) { } が見分けづらい。 一方、同じ大きさの M+ は Inconsolata と同じくらい小さいにもかかわらず、もう少し見やい。 今度は字間が詰まりすぎていて見難い気もするので間くらいが良いのかもしれない?

Source Han Code JP は文字幅が広いのでとても見やすい。 多少 aes の見分けが付きにくいのと、+ と * とか近いのと、1 の形が気になるくらい。他はかなり良い。 これならもう一段フォントサイズを小さくしても判別できそうだ(本末転倒)

  • Source Code Pro 系
    • Source Han Code JP
    • CodeM
  • Inconsolata 系
    • Ricty
    • Myrica

らしいので、Source Code Pro, CodeM, Ricty, Myrica を除外して、 いろいろ比べてみた。

Mac のみのフォントもあるけどいかんせん Windows 使いなので・・・
Monaco は a と o の区別つくんかいな。Menlo は良さそうに見える。

フォント幅がMSゴシックと等しいもの

MSゴシック
ms_gothic.png

Inconsolatazi4
inconsolata.png

M+
mplus_1m.png

Inconsolata は文字幅が小さいにもかかわらず文字間も広いため フォントサイズを小さくすると見難い。 あと ( ) { } が見分けづらい。 一方、同じ大きさの M+ は Inconsolata と同じくらい小さいにもかかわらず、ずっと見やい。 ただ今度は字間が詰まりすぎていて見難い気もするか?

Consolas と同じ幅

Consolas
consolas.png

Anonymous Pro
anonymous_pro.png

Camingo Code
camingo_code.png

Camingo Code はとても見やすい。 ちょっと角張ってるのが個人的には好みに合わないか。 数字が小さいのも嫌かも。

Consolas は 1 と i とが多少似ている。! が目立たない。が、他は問題ない。 Camingo と同様、文字幅は小さいのに頑張っている。

Anonymous Pro は ase の違いが全く分からん。

Cousine と同じ幅

DejaVu Sans Mono
dejavu_sans_mono.png

Hack
hack.png

Droid Sans Mono
droid_sans_mono.png

PT Mono
pt_mono.png

BITSTREAM VERA SANS MONO
bitstream_vera_sans_mono.png

Fira Mono
fira_mono.png

BPmono
BPmono.png

Cousine
cousine.png

Oxygen Mono
oxygen_mono.png

このサイズにはいろいろある。

四角い感じが気にならなければ Oxygen Mono はかなりいい。= を並べるとくっついちゃうのは = と == と === を見分けにくくてうれしくない。

Fira Mono も異色ながら頑張ってる気がする。

Cousine も非常に良いような?ああ、使ってみると大文字と小文字の区別が付かないや。Ctrl か ctrl かまったく分からん。大文字だけ縦に伸ばしたらとても見やすくなったりしない?

DejaVu Sans Mono, Hack, BITSTREAM VERA SANS MONO は 1 がなあ。それは l では無いのですか?

Hack の % も見づらい。

カンマ , のひげが小さいフォントが多いのはなぜなのか。

BPmono はいろいろ残念。

それより広い物

Lucida Console
lucida_console.png

Courier New
courier_new.png

Source Han Code JP
source_han_code_jp.png

Lucida Console は O 0 の区別が付かないが、文字が大きいだけあってかなり見やすい?

Courier New は論外か。

Source Han Code JP は高評判も頷けるだけの見やすさだけれど、 ここまで横幅が広ければ見やすいのも当然か。 これだけ大きいにもかかわらず aes の見分けが付きにくいのはなぜなのか?

結論

しばらくは Consolas, Fira Mono, Oxygen Mono, Source Code Pro を使い回して様子を見よう。

表示スタイルの変更

Ctrl + , から Themes で以下を選択

  • UI Thema : Atom Dark
  • Syntax Thema: Base16 Tomorrow Dark

[File]-[Style Sheet] から styles.less を編集。

LANG:less
atom-text-editor::shadow {

  // 折りたたまれている行を見やすく
  .fold-marker {
    background-color: #888;
    padding: 0px 10px 0px 8px;
    border-radius: 3px;
    margin-left: 4px;
    &:after {
      content: '...';
      font-weight: bold;
      color: black;
    }
  }

}

// アクティブでないペインを少し明るく
atom-pane:not(.active) atom-text-editor {
  background-color: #282828;
}

パッケージ

  • 言語関連
    • language-haml
    • language-plantuml
    • plantuml-viewer
    • language-verilog
  • 動作
    • Sublime-Style-Column-Selection 矩形領域選択のため
    • file-icons ファイルタイプ別にアイコンが付く
    • minimap コード全体を縮小表示 absolute mode が良い

キーマップ

LANG:json
'body':
  'ctrl-tab ^ctrl': 'unset!'
  'ctrl-tab': 'pane:show-next-item'
  'ctrl-shift-tab ^ctrl': 'unset!'
  'ctrl-shift-tab': 'pane:show-previous-item'

'atom-text-editor':
  'ctrl-f2': 'bookmarks:toggle-bookmark'
  'ctrl-k ctrl-up': 'pane:split-up-and-move-active-item'
  'ctrl-k ctrl-down': 'pane:split-down-and-move-active-item'
  'ctrl-k ctrl-left': 'pane:split-left-and-move-active-item'
  'ctrl-k ctrl-right': 'pane:split-right-and-move-active-item'
  'ctrl-k up': 'window:move-active-item-to-pane-above'
  'ctrl-k down': 'window:move-active-item-to-pane-below'
  'ctrl-k left': 'window:move-active-item-to-pane-on-left'
  'ctrl-k right': 'window:move-active-item-to-pane-on-right'
  'ctrl-up': 'editor:add-selection-above'
  'ctrl-down': 'editor:add-selection-below'

Ctrl+Tab で表示順にタブを切り替えるようにするには 上記のように 'ctrl-tab ^ctrl': 'unset!' が必要なのだそうです。 https://github.com/atom/atom/issues/5344#issuecomment-198206865 これを見つけるのにずいぶん長いことかかりました。。。

Tree View の右クリックメニュー

  • Add Project Folder
  • Remove Project Folder

を使うと便利。1つ上に上がるとか、別のフォルダを指定して開き直すとか、そういうのもあればいいのに。

Ctrl + Alt + [ で折りたたみ

関数全体を折りたたんだりできて便利。

Ctrl + Click で複数位置にキャレットを置く

複数キャレットが現れている状態でキー入力すると、一度にあちこちに入力できる。

ctrl+上 / ctrl+下 で、上下方向にキャレットを伸ばすこともできる。

デフォルトではこれらのキーで行の入れ替えになるのだが、 危険以外の何者でもないので置き換えた。

この機能、便利ではあるけれど、気づかずにこれをやっちゃうと危険なので気をつけないと。

キャレットを複数選択した場合に点滅速度がとても早くなるとかすれば、 少しでも気づきやすくなるような???

atom のソースに手を入れて良ければこんな感じで行けそうなのだけれど、 カスタムパッケージからではこの部分はいじれなさそう。

https://github.com/atom/atom/blob/c2c3217c9dd5c4fba75fba16165fced81dd90072/src/text-editor-presenter.coffee

LANG:coffee
class TextEditorPresenter
  getCursorBlinkPeriod: -> 
    if @model.getCursors().length > 1
      @cursorBlinkPeriod / 2
    else
      @cursorBlinkPeriod

pane 操作

ctrl+k ctrl+arrow
矢印方向に分割して現在の内容をそちらへ移す
ctrl+k arrow
矢印方向の pane に現在の内容を移す
ctrl+k ctrl+w
現在の pane を閉じる(複数の文書がスタックされていればすべて閉じる)
ctrl+w
現在の文書を閉じる
ctrl+k ctrl+n
次の pane へフォーカス
ctrl+k ctrl+p
前の pane へフォーカス
alt+数字
番号のタブを開く

気になってること

  • 起動に時間がかかりすぎる
  • 関数一覧とか、そいういうのを出す機能は?
  • キーバインドがかぶっていたりするのを何とかしないと
  • 検索・置換えのオプション(単語単位、選択領域など)を選ぶと選択が解除される?
    • キーボードショートカットで押せばいい
    • Ctrl + Shift + /
    • Ctrl + Shift + C
    • Ctrl + Shift + S
    • Ctrl + Shift + W
    • Ctrl + Enter
  • キーマクロの記録・再生、みたいな機能は無いのかしら
    むー、それだけのために秀丸立ち上げることになりそうな・・・
  • 検索・置換えも秀丸の方が慣れてる分ずっと早いなあ
  • ダイアログのボタンはキーボードから Y とか N とかで押したいのだががががが
  • ファイルツリービューのファイル名がオレンジになっていたりする理由は?
  • 普段ハードタブは使わないのだけれど、例えば Makefile ではタブ文字を使いたい
    • 自動で何とかならないのか
  • 結局、秀丸の使用頻度はゼロにできない感じ

Counter: 9960 (from 2010/06/03), today: 1, yesterday: 0