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

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

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

tmuxは、複数の画面を1つのターミナル端末で独立させて操作可能にする端末多重化ソフトウェア。複数のターミナルを開くことなくtmux上の擬似端末を切り替えて操作でき、画面分割して使用することもできます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Vim

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

3回答

6218閲覧

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

damalnylpo

総合スコア53

tmux

tmuxは、複数の画面を1つのターミナル端末で独立させて操作可能にする端末多重化ソフトウェア。複数のターミナルを開くことなくtmux上の擬似端末を切り替えて操作でき、画面分割して使用することもできます。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Vim

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2016/07/18 02:21

編集2016/07/21 13:39

###前提・実現したいこと
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"です。

###再現?方法

bash

1#ホストでのインストールなどは省略 2sudo docker pull ubuntu 3sudo docker run -it ubuntu 4apt-get update 5apt-get install tmux 6apt-get install vim 7adduser test 8#適当なユーザ情報を入力 9su test 10cd ~/ 11echo set number > ~/.vimrc 12tmux 13vim ~/.vimrc

再現

vim

1" 2 3call test 4 5set 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

です

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

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

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

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

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

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

thinca

2016/07/19 02:10

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

回答3

0

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

投稿2016/07/19 02:07

thinca

総合スコア1864

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

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

damalnylpo

2016/07/19 11:39 編集

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

0

ベストアンサー

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

投稿2016/07/20 01:34

TaichiYanagiya

総合スコア12141

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

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

damalnylpo

2016/07/21 11:24 編集

回答ありがとうございます! 今後の更新に希望をかけて再描画でごまかすのが無難でしょうか・・・ というわけで ```vim set lazyredraw au CursorMovedI * :redr! au TextChanged * :redr! ``` を追加して無理やり再描画することにしました。 なかなかのちかちかっぷりですが それでも大分ましになりました。 おそらくset lazyredrawは何の役にも立ってません。 ありがとうございました!
guest

0

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

TERM=vt100 export TERM

bash なら

export TERM=vt100

投稿2016/07/19 11:38

takasima20

総合スコア7458

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

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

damalnylpo

2016/07/19 11:52

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問