VimまたはgVimでモノスペースでないフォントを使用できますか?


32

vimまたはで非等幅フォントを使用する方法はありますかgvim

gVimのフォントを次のように変更してみました:

:set guifont=Dejavu\ Serif\ 12

しかし、これはかなりratherい結果をもたらします:

ここに画像の説明を入力してください

メニューを使用しても同じ結果が得られます([編集]-> [フォントの選択])

:help guifont 言う:

Note that the fonts must be mono-spaced (all characters have the same
width).  An exception is GTK 2: all fonts are accepted, but
mono-spaced fonts look best.

だから、上記の結果は「見栄えが悪い」と見なされると思いますか?これをどうにか改善できますか?

私はまた、端末でモノスペースでないフォントを設定しようとしました(xterm)が、ほぼ同じ効果があるようです:

ここに画像の説明を入力してください

このbtwに別のターミナルエミュレータを使用しても構いません。


すでにここで回答されているようです:superuser.com/questions/357571/…–
guido

1
@guido ...私が最もupvoted答えはフォントが(ない答え)あるものの単なる説明である...そこに答えが表示されていない、と他の「答え」はさらに悪化している
マーティンTournoij

回答:


25

mltermこれをサポートするを見つけました。Emacsのビルトインターミナル(Mx用語)は別として、これをサポートしている唯一のターミナルです(15〜20種類のターミナルを試しました)。sceen ratioの設定により、Emacsよりもうまく機能する
ことがわかりましたmlterm。また、Emacsセッション内でVimを実行する必要がなくなりました(法的に許可されているかどうかもわかりません)。

スクリーンショット(ブラウザでスケーリングするためにフルサイズで開かない限り、見苦しいです):

ここに画像の説明を入力してください

ただし、いくつかの設定が必要です。開始後、Ctrl任意の場所で+中クリックを押すと、構成画面が開きます。これらのオプションを設定します

[フォント]タブで:

  • 「アンチエイリアス」をチェックしてください
  • 「可変列幅」をチェックしてください。これは、他のほとんどの端末エミュレータにない「キー機能」です
  • フォントを「DejaVu Sans Book 16」に設定します
  • 「フォントサイズに対する画面比率」の幅を60に設定します。これは端末の幅に関するプログラムにあります。これをしないのは、画面サイズの50%しか使用していないからです。これに最適な値は、使用するフォントによって異なりますので、少し試してください...

右クリックの設定画面は少し不安定に見えます~/.mlterm/vaafontが、更新されていないので編集しました:

ISO10646_UCS4_1 = 22,DejaVu Sans 18;21,DejaVu Sans 16;16,DejaVu Sans 16

そして、私の~/.mlterm/main(これらは私が上で設定した設定といくつかの個人的な好みです):

type_engine = xft
bel_mode = none
scrollbar_mode = none
fontsize = 22
use_anti_alias = true
use_variable_column_width = true
line_space = 5
use_multi_column_char = true
col_size_of_width_a = 1
screen_width_ratio = 50

予想されるいくつかのアーティファクトがありますが、このようなメールや投稿を書くことは非常にうまくいくようです!

このためにシェルでエイリアスを作成しました:

alias pvim mlterm -e vim

また、ほとんどのUIクロムを削除する小さな関数を作成しました。

fun! WriteMode()
    " Disable a lot of stuff
    setlocal nocursorline nocursorcolumn statusline= showtabline=0 laststatus=0 noruler

    " Hack a right margin with number
    setlocal number
    setlocal numberwidth=3

    " White text, so it's 'invisible'
    highlight LineNr ctermfg=15
    " If you're using a black background:
    " highlight LineNr ctermfg=1
endfun

goyo.vimもありますが、これはほぼ同じですが、私にはあまりうまくいきませんでした(余白をいじりすぎています)。しかし、YMMV。


UbuntuリポジトリのMLTermでUbuntu 18.04の中間ではなく、Ctrl + RightClickを使用する必要がありました。そうしないと、マウスカーソルの周りに奇妙な正方形のフレームが表示されるだけで、ダイアログは表示されません。
ルスラン

垂直分割:スクリーンショットを使用すると、面白く(使用できません)見えます。しかし、それは端末ベースのソリューションから期待されることです。
ルスラン

7

GUI Vimでサポートされていないことは間違いありません。希望する方法でプロポーショナルフォントをサポートするターミナルエミュレーターが数個以上あると、驚かされます。中古。Unixおよび他のコマンドライン環境の非常に多くの部分が等幅フォントを想定しているため、このタイプのディスプレイは汎用端末として使用できなかったため、端末の開発者は少しの利益のために追加作業を行わなければならなかったでしょう。

ただし、Webテクノロジー(Ajaxterm)を使用して実装されたターミナルエミュレーターが少なくとも1つ存在し、レンダリングにHTML / CSSを使用するため、CSSを使用してプロポーショナルフォントを使用することができます。CJS Haywardはこれを実行しましたが、非常に古いブラウザーを使用する必要があります。

そのような端末でVimを実行する場合、求めているものが得られます。列ベースの機能を使用するときは、奇抜なhijinxに備えてください。(たとえばjkブロック単位の視覚モード、または'colorcolumn'オプション)

更新元の質問質問者Carpetsmokerがコメント指摘しているように、Emacsは適切なプロポーショナルフォントをサポートしており、ターミナルエミュレーター(M-x term)が含まれており、その中でVimを実行できます。熱心なプロポーショナルフォント愛好家は、Emacsの悪を調べて、Emacs内でVimのような体験をすることもできます。


4

比例フォントは、Oni、Neovim GUIでサポートされています。最良の結果を得るには、「webgl」レンダラーを使用してください。

 "editor.renderer": "webgl"

https://github.com/onivim/oni/issues/2359も参照してください


おもしろそう!残念ながら、このプロジェクトを実行することはできませんし、デバッグする時間もありません:
Martin Tournoij

github.com/onivim/oni/releasesにビルド済みのアーカイブがあります。
ジャスティンM.キーズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.