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

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

ただいまの
回答率

87.96%

dockerコンテナ内でのtmux+vim使用時の表示の崩れ

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,039

score 53

前提・実現したいこと

dockerコンテナ内でtmux+vimを使用したい

発生している問題・エラーメッセージ

ssh(teraterm)接続のubuntuホストで
ubuntuイメージのdockerコンテナ内でtmuxを使用していたのですが
vim使用時、改行すると
構文などのハイライトを行っているところで
行番号の部分が崩れてしまいます。
実際には行番号に限らず、左に表示している部分のスペースがエディタ部分の内容で上書きされてしまいます

.vimrc

11 ...
 12 ...     <-ここで改行
 13 call hoge
 14
 15 " Requiered
 16 set nocompatible


"o"で改行

11 ...
 12 ...
 13           
 14 call hoge        
 15   
" Required
set nocompatible


"u"でundo

11 ...
 12 ...
 13 call hoge
 14
" Required
" Reset nocompatible

といったようになります。
ホスト側でtmuxを動かしてdockerコンテナ内に入る分には通常通り動きます。
設定を最小限に落としてみましたがそれでも崩れます。
そもそもコンテナ内でtmuxを使うのが何か間違っているのでしょうか?

該当のソースコード

.vimrc

#行番号の追加
set number

.tmux.conf

無し

試したこと

host上でのtmux + vim、
dockerコンテナ内vim、
host上でのtmux + dockerコンテナ内vim、
はそれぞれ問題なく動きました。
ちなみにtmux起動オプションは"tmux -u -2"です。

再現?方法

#ホストでのインストールなどは省略
sudo docker pull ubuntu
sudo docker run -it ubuntu
apt-get update
apt-get install tmux
apt-get install vim
adduser test
#適当なユーザ情報を入力
su test
cd ~/
echo set number > ~/.vimrc
tmux
vim ~/.vimrc

再現

"

call test

set number


の状態にした後
call testの上の行から
改行連打すると
追加された行の行番号が空になっています。

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

それぞれ最新です。

2016/07/19
指摘ありがとうございます!
新PCにインストールしたてで怠けてしまいました。すみません

各バージョンは

vim 7.4.1689
tmux 2.1
teraterm 4.91
docker 1.10.3
ubuntu コンテナ、ホスト共に 16.04


です

追記
みなさんの回答を参考に
とりあえず改行毎に再描画するという解決方法を使わせていただきました!
しかしもし、根本的に解決する(できそうな)方法がありましたら引き続き教えていただきたいです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • thinca

    2016/07/19 11:10

    ツール等のバージョンについてですが、可能な限り具体的なバージョンを書いた方が良いです。今この質問が投稿された後も、Vim の最新バージョンは更新されています。リリース版や開発版などがあるツールもあり、「最新版」と言う表現は極めて曖昧なものです。

    キャンセル

回答 3

+1

同じ環境が用意できないのもあり問題の再現ができていないので適切な回答が難しいのですが、私の環境で再現しないことから teraterm が怪しい気がしています。
別の端末ソフト(例えば putty など)を使うとどうでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/19 20:32 編集

    回答ありがとうございます!
    putty使わせていただきましたが再発しました・・・
    それはそうとputtyいいですね、teratermやめます!!!!!!!

    キャンセル

checkベストアンサー

0

docker run + tmux + vi (set nu)の組み合わせで描画に問題があるようですね。
試しにコンテナ内で sshd を起動し、ホストから SSHログイン + tmux + vi (set nu) では問題なさそうです。
docker run の -t|--tty に原因がありそうなのですが、わかりませんでした。
適宜、Control-L で再描画しながら使うしかないのでは。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/21 20:24 編集

    回答ありがとうございます!
    今後の更新に希望をかけて再描画でごまかすのが無難でしょうか・・・
    というわけで

    ```vim
    set lazyredraw
    au CursorMovedI * :redr!
    au TextChanged * :redr!
    ```

    を追加して無理やり再描画することにしました。
    なかなかのちかちかっぷりですが
    それでも大分ましになりました。
    おそらくset lazyredrawは何の役にも立ってません。
    ありがとうございました!

    キャンセル

0

vi系がうまくうごかないときのおまじない(Bourne Shell)

TERM=vt100
export TERM


bash なら

export TERM=vt100

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/19 20:52

    回答ありがとうございます!
    ついでにxtermとxterm-r6も試してみましたがものともしませんでした・・・

    キャンセル

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

  • ただいまの回答率 87.96%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る