質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

Q&A

解決済

2回答

1828閲覧

GVimのフォント指定の方法がわからない

terai

総合スコア15

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

0グッド

0クリップ

投稿2017/08/07 11:29

編集2017/08/07 14:14

###実現したいこと
GVimで表示されるフォントを指定したいです。
指定したいフォントは源柔ゴシック等幅のRegularウェイトのものです。

###発生している問題・エラーメッセージ
エラーは出ないのですが、指定フォントが反映されているように見えません。

###該当のソースコード

Vim

1" .vimrc 2" nothing

Vim

1".gvimrc 2set guifont=源柔ゴシック等幅_Regular:h9:cSHIFTJIS:qDRAFT

###試したこと
指定するフォント名の打ち間違いを疑って次を実施すると、エラーが出てしまいます。
ここでエラーが出るということは恐らく上記の.gvimrcではうまくいかないと予想はつくのですが、
どう指定するのが正しいのかがわかりませんでした。

  1. set guifont=*にて希望のフォントを指定 (反映されます)
  2. set guifont=<TAB>にてフォント名を補完させる
  3. <CR>を押下してsetを実行する (エラー発生)

エラー

E596 無効なフォントです。: guifont=源柔ゴシック等幅_Regular:h9:cSHIFTJIS:qDRAFT

操作のアニメーション
操作のアニメーション

エラーの表示
エラーの表示

###補足情報(言語/FW/ツール等のバージョンなど)

  • Vimのバージョン: 8.0.862 (64bit)
  • OS: Windows 10 64bit

###追記
thincaさんの方法を試した結果
thincaさんの方法を試した結果

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

.gvimrcに

let &guifont='源柔ゴシック等幅 Regular:h9:cSHIFTJIS:qDRAFT'

と記述してみてください。
_はスペースに変えるのがポイントかなぁ?って所です。

set option名 はsetコマンドを利用した設定方法で、
let &option名 は &option名 がオプション変数となるのでletコマンドで直接値を代入する方法で結果的には同じことをしています。

ただ、setだとマルチバイト文字やスペース混じりの値があると上手くいかないので直接設定値の文字列を''でくくって一塊の値扱いにしてletコマンドで放り込んでいます。

投稿2017/08/08 14:46

yoshitia

総合スコア157

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

terai

2017/08/08 14:48

ありがとうございます。とても助かりました。
terai

2017/08/09 09:19

K.Takataさん、コメントありがとうございます。リンクのような議論がなされる場所があるのですね。取り上げてくださりありがとうございます。
terai

2017/08/09 09:27 編集

今回の件は、もしもバグが治ったなら"_"でも良さそうです。 しかし、今回のフォント名はマルチバイト文字が含まれるので、質問文中にあったsetでなくて、letにするという点を注意する、となると思います。
K.Takata

2017/08/09 15:55

setを使うか、letを使うかという点は、今回の件に関してはあまり違いはありません。(`\` でスペースのエスケープが必要か、`"` や `'` でくくる必要があるかという程度です。) もし、マルチバイト文字が含まれるかどうかで動作に違いがあるようであればVim本体のバグの可能性があります。
yoshitia

2017/08/09 16:07

vim-jpへのバグ報告ありがとうございます。 >setを使うか、letを使うかという点は、今回の件に関してはあまり違いはありません。 そうでしたか。以前に日本語名のフォントを設定で苦労した時に&guifontで上手くいったのでsetはマルチバイト文字の値が苦手だと早合点してました。今度似たような現象に出会ったら情報揃えて報告します。
K.Takata

2017/08/12 00:51

8.0.0907 で "_" も使えるようになったはずです。
guest

0

:set guifont=* でうまく行っているようなので、その設定をそのまま使ってみるのはどうでしょう?

set guifont=* で希望のフォントを設定した後、vimrc ファイルを開いて、

:put ='let &guifont = ' . string(&guifont)

としてみてください。
また、vimrc には :scriptencoding コマンドで vimrc のファイル自体のエンコーディングを正しく指定してください。

set encoding=utf-8 " もし既存の vimrc ですでに設定している場合。ない場合はなくてもよい " ... scriptencoding utf-8 " set encoding の後に書く。utf-8 の部分はファイル自体のエンコーディング " ... let &guifont = '...' " 先程の put で作った行。scriptencoding の後に書く

投稿2017/08/07 12:55

thinca

総合スコア1864

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

terai

2017/08/07 13:49

ありがとうございます。頂いた方法を実施してみましたがうまく設定できませんでした。質問文に追記してみましたが、操作に誤り等あるでしょうか。
yoshitia

2017/08/08 07:48

let &guifont=源柔ゴシック等幅_Regular:h9:cSHIFTJIS:qDRAFT は.gvimrcに書いてみたらどうでしょう?
terai

2017/08/08 10:21 編集

yoshitiaさん、コメントありがとうございます。.vimrcではなくて.gvimrcに頂いた内容を記載したところ、`E15: 無効な式です`と言われてしまいました。=の右側部分をthincaさんの回答と同じように、「'」で囲んでみると、エラーは出ないもののやはりフォントが反映されているようには見えませんでした。 (全然別の素朴な疑問なのですが、thincaさんもyoshitiaさんも、`set option名=値`を使わずに、`let &option名=値`としているようなのですが、設定可能な項目が違ったりするのでしょうか。)
yoshitia

2017/08/08 14:32 編集

すみません。実際にフォントインストールして試してみたら以下で通りました。 let &guifont='源柔ゴシック等幅 Regular:h9:cSHIFTJIS:qDRAFT' _はスペースに変えるのがポイントかなぁ?って所です。
yoshitia

2017/08/08 14:31 編集

追記 set option名 はsetコマンドを利用した設定方法で、let &option名 は &option名 がオプション変数となるのでletコマンドで直接値を代入する方法で結果的には同じことをしています。ただ、setだとマルチバイト文字やスペース混じりの値があると上手くいかないので直接設定値の文字列を''でくくって一塊の値扱いにしてletコマンドで放り込んでいます。
terai

2017/08/08 14:32

ありがとうございます。頂いた方法で設定できました。まさしく'_'をスペースに変えるのがポイントのようですね。`set`の場合でも、`set guifont=*`の後に`set guifont?`で表示される文字列の、'_'を'\ 'に変更すると動きました。 http://vim-jp.org/vimdoc-ja/options.html#E244 をみると、スペースの代わりに'_'でも大丈夫と読めたので、ここが問題とは思いませんでした。 (そもそもエラーになる文字列が`set guifont?`で表示されるのもハマリポイントでした。)ありがとうございました。
terai

2017/08/08 14:36

set, letの説明についてもありがとうございます。マルチバイト文字があると上手くいかない件は知りませんでした。上記で動いたとコメントしたのですが、letの方が良さそうですね。
terai

2017/08/08 14:41

今回の件、ベストアンサーはyoshitiaさんに差し上げたいです。もしも差し支えなければ回答欄にも記載をいただけないでしょうか。
yoshitia

2017/08/08 14:48

コメント欄に書いたものを軽く整理したものを解答としました。 私にとってもいい勉強になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問