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

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

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

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

Vim

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

コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

Q&A

解決済

1回答

5882閲覧

tmuxのコピーモードのスクロールがvim上でできない

skzwksk

総合スコア10

tmux

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

Vim

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

コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

0グッド

1クリップ

投稿2016/11/26 18:43

編集2016/11/26 19:47

###tmuxのコピーモードのスクロールをvim上でもしたい
iterm2でtmux 2.3とvim 8.0を使用しています。
コマンドラインではtmuxのコピーモードでスクロールが^+F^+Bでスクロールができます。

一方、vim起動中でコピーモードに入って^+B,kを押した際、ファイルの上にスクロールするのではなく、iterm上でvim ファイル名を入力したコマンドより上のコマンドにスクロールしてしまいます。

vim起動中でコピーモードに入って^+F,jを押した際、vimで開いたファイルの下にはスクロールできず、全く下にスクロールできません。

###実行環境
実行した.vimrc.tmux.confは以下のとおりです。
.vimrc

"" encoding scriptencoding utf8 set fileencoding=utf-8 set fileencodings=utf-8,iso-2022-jp,euc-jp,sjis "" Set Options " don't use backup or swap files set nowritebackup nobackup noswapfile " how many stock command history set history=1000 " use mouse if has('mouse') set mouse=a if has('mouse_sgr') set ttymouse=sgr elseif v:version > 703 || v:version is 703 && has('patch632') set ttymouse=sgr else set ttymouse=xterm2 endif endif " Indicates a fast terminal connection set ttyfast " カーソル移動で行を越えて移動させるか set whichwrap=b,s,[,],<,> " 新しい行のインデントを現在行と同じにする set autoindent " ファイルにカーソルの位置を記憶 if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif endif "" Search " case sensitive for search set noignorecase nosmartcase " Show matches while typing set incsearch " highlighted search index set hlsearch " wrapscan set wrapscan "" Appearance " the last window will have a status line always set laststatus=2 " モードを表示 set showmode " ルーラーを表示 set ruler " 打ったキーを表示 set showcmd " 括弧の対応の表示 set showmatch matchtime=1 "" Indent autocmd FileType sh setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab autocmd FileType apache setlocal shiftwidth=4 softtabstop=4 tabstop=4 expandtab autocmd FileType css setlocal shiftwidth=4 softtabstop=4 tabstop=4 noexpandtab autocmd FileType diff setlocal shiftwidth=4 softtabstop=4 tabstop=4 noexpandtab autocmd FileType html setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab autocmd FileType java setlocal shiftwidth=4 softtabstop=4 tabstop=4 expandtab autocmd FileType javascript setlocal shiftwidth=4 softtabstop=4 tabstop=4 noexpandtab autocmd FileType ruby setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab autocmd FileType eruby setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab autocmd FileType sql setlocal shiftwidth=4 softtabstop=4 tabstop=4 expandtab autocmd FileType tex setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab autocmd FileType vim setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab autocmd FileType xml setlocal shiftwidth=4 softtabstop=4 tabstop=4 noexpandtab autocmd FileType yaml setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab autocmd FileType zsh setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab autocmd FileType coffee setlocal shiftwidth=2 softtabstop=2 tabstop=2 expandtab "" Key Bindings " コマンドで空行挿入したい set t_Co=256 set t_ut= " 挿入開始以前の文字や改行も削除 set backspace=indent,eol,start "" Color set term=xterm-256color syntax on " シンタックスハイライト "" Plugin filetype plugin indent on " ファイルタイププラグインを有効にする

.tmux.conf

# reload config bind r source-file ~/.tmux.conf # zshでtmuxを起動 set-option -g default-shell /bin/zsh # browse URL bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; run-shell "$TERMINAL -e urlview /tmp/tmux-buffer" bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; new-window -n "urlview" '$SHELL -c "urlview < /tmp/tmux-buffer"' # max scroloback line set -g history-limit 10000 # ウィンドウのインデックスを1から始める set -g base-index 1 # ペインのインデックスを1から始める setw -g pane-base-index 1 # renumber the windows set-option -g renumber-windows on # キーストロークのディレイを減らす set -sg escape-time 0 # mouseでスクロール set-option -g mouse on bind -n WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M bind -n WheelDownPane select-pane -t= \; send-keys -M #---------------------------------------------------------------------------}}} # Color {{{ #------------------------------------------------------------------------------ # use 256colors set -g default-terminal screen-256color # pane border set -g pane-active-border-fg colour197 set -g pane-active-border-bg colour234 set -g pane-border-fg colour239 set -g pane-border-bg colour234 # message line set -g message-fg white set -g message-bg colour235 set -g message-attr bright #---------------------------------------------------------------------------}}} # Keybind (normal mode) {{{ #------------------------------------------------------------------------------ # set prefix key unbind C-b set -g prefix C-t bind C-t send-prefix # ペインの移動2 # Shift + 上下左右でペインを移動できるようにする。(<Prefix>不要) # 行頭に"bind -n"をつけるとPrefixが不要になる。 bind -n S-left select-pane -L bind -n S-down select-pane -D bind -n S-up select-pane -U bind -n S-right select-pane -R # コピーモードを設定する ## viのキーバインドを使用する setw -g mode-keys vi ## クリップボード共有を有効にする set-option -g default-command "reattach-to-user-namespace -l zsh" ## コピーモードの操作をvi風に設定する bind-key -t vi-copy v begin-selection bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy" unbind -t vi-copy Enter bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy" bind-key -t vi-copy C-v rectangle-toggle # vim like bind-key s split-window -v -c "#{pane_current_path}" bind-key v split-window -h -c "#{pane_current_path}" #---------------------------------------------------------------------------}}}

###調査したこと
.vimrcの方のマウスの設定が悪いのかと思っています。
マウスの下へのスクロールではしっかりVvimで開いたファイルを見ることができます。
上のスクロールでは、ファイルではなくコマンドラインを表示しています。

この設定が影響しているかもしれないので、自分でも調査しようと思っています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

残念ながら tmux のコピーモードで Vim のバッファのスクロールは行なえません。
tmux のコピーモードはあくまで端末のスクロールになります。Vim は端末の内容を書き換えて動作しているので、端末のスクロールを行っても Vim の外側の世界にしか干渉できません。

代替手段として、tmux には tmux のバッファ(コピーモードでコピーした際に内容が入る場所)を操作する機能があるので、これを Vim 側から呼び出せば、Vim のバッファの内容を tmux のバッファにコピーできます。
これを行えるプラグインとして fakeclip.vim があります。このプラグインをインストールして、Vim のコピーしたい範囲を選択し、"&y を実行することで、対象を tmux のバッファにコピーできます。
他にも tmux と連携できるプラグインはあるかもしれないので、よければ探してみてください。

投稿2016/11/27 01:36

thinca

総合スコア1864

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

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

skzwksk

2016/11/27 12:03

tmuxはitermのスクリーンをスクロールすることしかできないのですね。大変わかりやすく教えていただきありがとうございます。 `.vimrc`に以下を追加することで解決しました。 ``` call dein#add('kana/vim-fakeclip') " "&yでコピーした内容を外部のクリップボードと共有(kana/vim-fackclip) set clipboard=unnamed ``` これでvim実行中にコピーしたい範囲を選択して`"&y`を押すことで、外部のアプリケーションに`command + v`でコピー可能になりました また、外部のアプリケーションで`command + c`でコピーした内容を、vim内で`"&p`で貼り付け可能になりました。 大変快適となりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問