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

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

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

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Vim

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

Q&A

解決済

1回答

2634閲覧

ターミナルを文字化けさせずに英語化したい(英語化するとVimで文字化けする)

退会済みユーザー

退会済みユーザー

総合スコア0

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Vim

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

0グッド

0クリップ

投稿2019/09/24 08:50

概要

ターミナルやVimのモード表示を英語化したいのですが、英語化したらVimで編集したファイルが文字化けするようになってしまいました。

日本語に戻すと文字化けは直るのですが、できれば英語化しつつ文字化けを解消したいのでその方法があれば教えていただければと思います。

詳細

プログラミング初学者です。

ターミナル.app(bash)とターミナル版のVimを使って学習を進めています。

先日「ターミナルメッセージとかを英語にした方が学習の伸びが良さそうだな」「Vimのモード表示英語だったらかっこいいな」と思い、bashrcに以下のコードを追記しました。

bash

1# ~/private/etc/bashrc 2export LANG=en_US

すると、日本語が含まれたファイルをVimで編集した時・保存した時に文字化けするようになってしまいました。具体的には下記のような感じです(この時点では.vimrcにはエンコード関連の設定は何も記述していません)。

$ vim sample.rb(新規作成)

ruby

1# ~/sample.rb 新規作成(保存前)時点 2# :set enc? => encoding=latin-1 3# :set fenc? => fileencoding= (空白) 4p "hello" 5p "?~A~S?~B~S?~A??~A??~A?" ← こんにちは と打って確定するとこう表示される 6# :wq
$ ruby sample.rb => "hello" => "\u3053\u3093\u306B\u3061\u306F" $ vim sample.rb (もう一回開いてみる)

ruby

1# ~/sample.rb 保存後、もう一回開いてみたところ 2# :set enc? => encoding=latin-1 3# :set fenc? => fileencofing= (空白) 4p "hello" 5p "~A~S?~B~S?~A??~A??~A?"

試したこと① export LANG=en_USの削除

bashrcに記述した英語化コードを削除して読み込み直したところ、文字化けは解消されました。

とりあえずそれでもいいのですが、可能であれば英語化しつつ文字化けを無くしたいです。

試したこと② .vimrcにエンコード関連設定を記述

やっぱり英語化したいなあと思ったので、bashrcに英語化コードを記述して文字化けしてる状態で.vimrcにエンコード関連の設定を記述してみました(参考ページ)。

vim

1"  ~/.vimrcのエンコード関連部分 2set encoding=utf-8 3set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8 4set fileformats=unix,dos,mac

すると、エンコード設定をする前とは違う挙動になったものの、文字化け自体は直りません。文字コード設定の順番などがおかしいのでしょうか?具体的には、以下のような感じになります。

$ vim sample.rb(新規作成)

ruby

1# ~/sample.rb 新規作成(保存前)時点 2# :set enc? => encoding=utf-8 3# :set fenc? => fileencoding= (空白) 4p "hello" 5p "こんにちは" ← 日本語を打てるようにはなった 6# :wq
$ ruby sample.rb => "hello" => "\u3053\u3093\u306B\u3061\u306F" ← 保存して実行してみるとエンコード設定記述前と同じく文字化けする $ vim sample.rb (もう一回開いてみる)

ruby

1# ~/sample.rb 保存後、もう一回開いてみたところ 2# :set enc? => encoding=utf-8 3# :set fenc? => fileencofing=sjis 4p "hello" 5p "縺薙s縺ォ縺。縺ッ" ← ここの表示が変わった 6

質問まとめ

  • 英語化設定しつつ、文字化けを解消できる方法はありますか?
  • 英語化設定すると他にも何か致命的な不都合(?)があったりするのでしょうか?(日本語にしておいたほうが何かといいのでしょうか?英語の勉強になるかなと思って英語にしようと思ったのですが)

素人すぎて、まだ質問の仕方等もわかっておらずすみません。「こういう情報提示くれないと解決できないよ!」等ご指摘いただければすぐ対応しますので、何卒よろしくお願いいたします。

環境

  • macOS Mojave 10.14.6
  • terminal.app
  • bash 3.2.57
  • vim 8.1 macOS version
  • rbenv 1.1.2
  • ruby 2.6.3

現状の /private/etc/bashrc(全文)

bash

1# System-wide .bashrc file for interactive bash(1) shells. 2if [ -z "$PS1" ]; then 3 return 4fi 5 6PS1="\n[\033[36m]\t \w\n$ [\033[0m]" 7 8export LANG=en_US 9 10# Make bash check its window size after a process completes 11shopt -s checkwinsize 12 13[ -r "/etc/bashrc_$TERM_PROGRAM" ] && . "/etc/bashrc_$TERM_PROGRAM" 14

現状の~/.vimrc(エンコード設定)

vim

1set encoding=utf-8 2set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8 3set fileformats=unix,dos,mac 4

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

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

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

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

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

guest

回答1

0

ベストアンサー

Linuxだと再現しません。set encoding=utf-8しておけば十分。

p "こんにちは" ← 日本語を打てるようにはなった
:wq

の状態で、
cat sample.rbだとどう表示されますか?

:set fenc? => fileencofing=sjis

になっているのは、

set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8

で、sjisのほうがutf-8より前にあるからです。

投稿2019/09/24 11:50

otn

総合スコア84645

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

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

退会済みユーザー

退会済みユーザー

2019/09/24 12:07

ありがとうございます! .vimrcに `set encoding=utf-8` だけ書いた状態で sample.rb を新しく作成するところからやってみました。 > p "こんにちは" ← 日本語を打てるようにはなった > :wq のあと、 `cat sample.rb` すると ``` $ cat sample.rb p "hello" p "こんにちは" ``` と問題なく表示されました。そのまま `$ vim sample.rb` でもう一度開いてみても文字化けなく表示されていますが、 rubyで実行すると文字化けします。 ``` $ ruby sample.rb "hello" "\u3053\u3093\u306B\u3061\u306F" ```
otn

2019/09/24 12:18 編集

localeがen_USだけなので、RubyのEncoding.default_externalがISO-8859-1になってしまいます。 Encoding.default_external を utf-8 にするために、 案1:LANG=en_US.utf-8 にする 案2:ruby -Eutf-8 sample.rb で実行する 案3:export RUBYOPT=-Eutf-8 しておく 案4:ソースの1行目に、#! rubyのフルパス -Eutf-8 を書く 案5:ソースで、p の実行前に、Encoding.default_external = "utf-8" を実行する
退会済みユーザー

退会済みユーザー

2019/09/24 12:33

ありがとうございます。 案1をしてみたら、無事rubyが文字化けなく実行できました! そのほかのものについても試したり調べておきたいと思います。これでまた学習を進められます。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問