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

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

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

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

Q&A

解決済

1回答

2600閲覧

vimにおいて連打系コマンドを入力すると1行上にズレる問題

yuki_90453

総合スコア326

Vim

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

0グッド

0クリップ

投稿2017/02/11 12:29

編集2017/02/11 13:22

いつもお世話にお世話になっております。
vimにおいて、「dd」や「yy」、それに<CR>を入力すると1行上にずれてしまいます。

###詳しい挙動
「dd」と入力時は1度目のdで上にカーソルが移動してしまいます。
NERDtreeではエンターキーを押すとカーソルの上にあるファイルが開かれます。
必ずこのような挙動になるわけではなく、70%ぐらいの確率でこういった挙動になります。
たまにまともに動く事もあります。

あと、jjjjと下にカーソル移動している際にkを押すと1度目では反応せず2度目で上に移動します。

おそらく設定ファイル、またはプラグインが問題を起こしているのではと思うのですが、一体どれが原因なのかわかりません。
ご指摘頂けないでしょうか。
###設定ファイル

" dein settings {{{ " dein自体の自動インストール let s:cache_home = empty($XDG_CACHE_HOME) ? expand('~/.vim') : $XDG_CACHE_HOME let s:dein_dir = s:cache_home . '/dein' let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim' if !isdirectory(s:dein_repo_dir) call system('git clone https://github.com/Shougo/dein.vim ' . shellescape(s:dein_repo_dir)) endif let &runtimepath = s:dein_repo_dir .",". &runtimepath " プラグイン読み込み&キャッシュ作成 let s:toml_file = fnamemodify(expand('<sfile>'), ':h').'/.dein.toml' if dein#load_state(s:dein_dir) call dein#begin(s:dein_dir, [$MYVIMRC, s:toml_file]) call dein#load_toml(s:toml_file) call dein#end() call dein#save_state() endif " 不足プラグインの自動インストール if has('vim_starting') && dein#check_install() call dein#install() endif " }}} "----------------------------------------------------------------------- "Qfixhowm キーマップリーダー "----------------------------------------------------------------------- let QFixHowm_Key = 'g' " howm_dirはファイルを保存したいディレクトリを設定 let howm_dir = '~/Documents/memo' let howm_filename = '%Y/%m/%Y-%m-%d-%H%M%S.txt' let howm_fileencoding = 'utf-8' let howm_fileformat = 'unix' " 個人的には以下を追加設定しておくのをおすすめします。 " キーコードやマッピングされたキー列が完了するのを待つ時間(ミリ秒) set timeout timeoutlen=3000 ttimeoutlen=100 " プレビューや絞り込みをQuickFix/ロケーションリストの両方で有効化(デフォルト:2) let QFixWin_EnableMode = 1 "----------------------------------------------------------------------- "複数カーソル "----------------------------------------------------------------------- nnoremap <C-e> :MultipleCursorsFind "----------------------------------------------------------------------- " quickrun.vim "----------------------------------------------------------------------- nnoremap qr :QuickRun<CR> " <C-c> で実行を強制終了させる " quickrun.vim が実行していない場合には <C-c> を呼び出す nnoremap <expr><silent> <C-c> quickrun#is_running() ? quickrun#sweep_sessions() : "\<C-c>" let g:quickrun_config = { \ "_" : { \ "runner" : "vimproc", \ "runner/vimproc/updatetime" : 60, \ "outputter/error/success" : "buffer", \ "outputter/buffer/split" : ":botright 8sp", \ "outputter/buffer/running_mark" : "バン(∩`・ω・)バンバンバンバン゙ン", \ "hook/time/enable" : 1, \ }, \} "----------------------------------------------------------------------- " NERDTreeを起動 "----------------------------------------------------------------------- let file_name = expand('%') if has('vim_starting') && file_name == '' autocmd VimEnter * NERDTree ./ endif " サイドバー表示/非表示 nnoremap kb :NERDTreeToggle<CR> "横幅 let g:NERDTreeWinSize = 20 " クリップボード有効化 set clipboard+=unnamed set clipboard+=autoselect set vb t_vb= "音を出さないようにする " 行番号表示 set number " オートセーブ オン let g:auto_save = 1 let g:auto_save_in_insert_mode = 0 let g:auto_save_silent = 1 " アンドゥの永久化 set undodir=$HOME/Vim/dotfiles set backupdir=$HOME/Vim/dotfiles set undofile "折り返し set wrap set linebreak set breakindent "インデント set shiftwidth=22 " vimを立ち上げたときに、自動的にvim-indent-guidesをオンにする " let g:indent_guides_enable_on_vim_startup = 1 set list listchars=tab:\¦\ "----------------------------------------------------------------------- " インデント関係 "----------------------------------------------------------------------- " 改行時に前の行のインデントを継続する set autoindent " 改行時に入力された行の末尾に合わせて次の行のインデントを増減する set smartindent " タブ文字の表示幅 set tabstop=1 " Vimが挿入するインデントの幅 set shiftwidth=1 " 行頭の余白内で Tab を打ち込むと、'shiftwidth' の数だけインデントする set smarttab "----------------------------------------------------------------------- " vimgrep "----------------------------------------------------------------------- nnoremap [q :cprevious<CR> " 前へ nnoremap ]q :cnext<CR> " 次へ nnoremap [Q :<C-u>cfirst<CR> " 最初へ nnoremap ]Q :<C-u>clast<CR> " 最後へ " Anywhere SID. function! s:SID_PREFIX() return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$') endfunction " Set tabline. function! s:my_tabline() "{{{ let s = '' for i in range(1, tabpagenr('$')) let bufnrs = tabpagebuflist(i) let bufnr = bufnrs[tabpagewinnr(i) - 1] " first window, first appears let no = i " display 0-origin tabpagenr. let mod = getbufvar(bufnr, '&modified') ? '!' : ' ' let title = fnamemodify(bufname(bufnr), ':t') let title = '[' . title . ']' let s .= '%'.i.'T' let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#' let s .= no . ':' . title let s .= mod let s .= '%#TabLineFill# ' endfor let s .= '%#TabLineFill#%T%=%#TabLine#' return s endfunction "}}} let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()' set showtabline=2 " 常にタブラインを表示 " The prefix key. nnoremap [Tag] <Nop> nmap t [Tag] " Tab jump for n in range(1, 9) execute 'nnoremap <silent> [Tag]'.n ':<C-u>tabnext'.n.'<CR>' endfor " t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ map <silent> [Tag]c :tablast <bar> tabnew<CR> " tc 新しいタブを一番右に作る map <silent> [Tag]x :tabclose<CR> " tx タブを閉じる map <silent> [Tag]n :tabnext<CR> " tn 次のタブ map <silent> [Tag]p :tabprevious<CR> " tp 前のタブ if has('mac') if has('gui_running') let IM_CtrlMode = 4 else let IM_CtrlMode = 1 function! IMCtrl(cmd) let cmd = a:cmd if cmd == 'On' let res = system('osascript -e "tell application \"System Events\" to keystroke (key code {104})" > /dev/null 2>&1') elseif cmd == 'Off' let res = system('osascript -e "tell application \"System Events\" to keystroke (key code {102})" > /dev/null 2>&1') elseif cmd == 'Toggle' let res = system('osascript -e "tell application \"System Events\" to keystroke (key code {55, 49})" > /dev/null 2>&1') endif return '' endfunction endif " 「日本語入力固定モード」のMacVimKaoriya対策を無効化 let IM_CtrlMacVimKaoriya = 0 " ctrl+jで日本語入力固定モードをOnOff inoremap <silent> <C-j> <C-^><C-r>=IMState('FixMode')<CR> endif "Rubyのファイルを開いたら自動でファイルタイプの設定 au BufNewFile,BufRead *.rb set filetype=ruby

プラグインリスト

# 基本は github.com のレポジトリーを指定するだけ [[plugins]] repo = 'Shougo/dein.vim' [[plugins]] repo = 'delphinus35/typescript-vim' rev = 'colorize-template-strings' [[plugins]] repo = 'elzr/vim-json' if = '''! has('kaoriya')''' [[plugins]] repo = 'vim-airline/vim-airline' depends = ['vim-airline-themes'] [[plugins]] repo = 'vim-airline/vim-airline-themes' [[plugins]] repo = 'osyo-manga/vim-precious' depends = ['context_filetype.vim'] [[plugins]] repo = 'Shougo/context_filetype.vim' [[plugins]] # toml syntax repo = 'cespare/vim-toml' on_ft = 'toml' [[plugins]] repo = 'scrooloose/nerdtree' [[plugins]] repo = 'evidens/vim-twig' [[plugins]] repo = 'w0ng/vim-hybrid' [[plugins]] repo = 'Shougo/neocomplcache' [[plugins]] repo = 'Shougo/neocomplete.vim' [[plugins]] repo = 'Shougo/neocomplcache-rsense.vim' [[plugins]] repo = 'fuenor/qfixhowm' [[plugins]] #使ってない repo = 'fuenor/im_control.vim' [[plugins]] repo = 'thinca/vim-quickrun' [[plugins]] repo = 'vim-scripts/vim-auto-save' [[plugins]] repo = 'tpope/vim-endwise' # [[plugins]] # repo = 'nathanaelkane/vim-indent-guides' [[plugins]] repo = 'Yggdroot/indentLine' # ログ・ファイルに色付けしてくれる [[plugins]] repo = 'vim-scripts/AnsiEsc.vim' # コメントON/OFFを手軽に実行 [[plugins]] repo = 'tomtom/tcomment_vim' [[plugins]] repo = 'Shougo/unite.vim' # Unite.vimで最近使ったファイルを表示出来る [[plugins]] repo = 'Shougo/neomru.vim' #Neobundleから移植 [[plugins]] repo = 'Shougo/vimshell' [[plugins]] repo = 'sjl/gundo.vim' [[plugins]] repo = 'terryma/vim-multiple-cursors'

###環境
mac
kaoriya-vim

追記
ターミナルはiTermを使用しております。dein.tomlは94行、2桁
vim設定ファイルは209、3桁です。
表示出来る行数は59行です。幅は234です。

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

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

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

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

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

ikedas

2017/02/11 12:39

ターミナルの画面の行数/桁数はいくらになっていますか。
yuki_90453

2017/02/11 12:45

追記致しましたが、何か関係があるんでしょうか?
ikedas

2017/02/11 12:55 編集

ファイルの行数ではなく、iTermの画面がありますよね。このスクリーショットで黒くなっているところです: https://www.iterm2.com/features.html その高さ (表示できる行数) と幅 (半角での桁数) がわかればと。
yuki_90453

2017/02/11 13:00 編集

表示出来る行数は59行です。幅は234です。
guest

回答1

0

ベストアンサー

設定ファイル内で怪しそうなのは以下の部分です。

vim

1nnoremap kb :NERDTreeToggle<CR>

k がマッピングされてしまっています。これが原因の一つでしょう。
ただ、これだけだとおっしゃられている現象全てが説明できない気がします。
j<CR> などの怪しいキーにキーマッピングが設定されていないか確認してみてください。

vim

1:map <CR>

のようなコマンドを実行することで、キーマッピングの存在が確認できます。

投稿2017/02/11 14:13

thinca

総合スコア1864

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

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

yuki_90453

2017/02/11 14:21

ご指摘ありがとうございます。 該当部分をコメントアウトし、様子を見てみます。 ちなみにjや<CR>はマッピングされてませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問