Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

n/N で normal!, noremap した時とデフォルトのfoldの扱いが違う #644

Closed
haya14busa opened this issue Sep 28, 2014 · 5 comments

Comments

@haya14busa
Copy link
Member

TL;DR

  • デフォルトn/N => カーソル下のfoldを開く
  • :normal! n => foldを開かない (開いて欲しいけど仕様?)
  • :nnoremap <Leader>n n して <Leader>n => foldを開かない(開いて欲しい)

再現手順

test.txt

" vim: foldmethod=marker

destination

fold {{{
    inner fold {{{
        destination
    }}}
}}}
  1. vim -N -u NONE test.txt
  2. /destination
  3. n => fold が開かれる(なおnormal! nだと開かれないので直接打つ)
  4. :normal! NzM
  5. :nnoremap <Leader>n n
  6. <Leader>n => foldが開かれない

normal!だと直接打った場合と違う仕様になってるというのは他のマップでもそういうものがあるので問題ないとは思うのですが、:noremap によって挙動が変わってしまうのは混乱を招くと思われます

@mattn
Copy link
Member

mattn commented Sep 29, 2014

:set foldopen?

の値も教えて下さい。

追記
あーデフォルトか。自分で調べます。。。

'foldopen' 'fdo'    string (default: "block,hor,mark,percent,quickfix,
                                 search,tag,undo")

@mattn
Copy link
Member

mattn commented Sep 29, 2014

foldopen=all にしたら飛びますね。どれがそれにあたるか分かりませんが。

@haya14busa
Copy link
Member Author

:h 'foldopen'

NOTE: コマンドがマッピングの一部として実行されたときは、このオプション
は使われない。同じ効果を得るには、マッピングにコマンド |zv| を加えるこ
と。

なるほど 'foldopen' のヘルプにマッピングとして実行されたときはこのオプションは
使われないと書いてあるので仕様だったということですね。申し訳ありません。

ただ :set foldopen=all するとマッピングの一部でも上記のNOTE:関係なく飛ぶと
いうことのようですかね...

@h-east
Copy link
Member

h-east commented Sep 30, 2014

foldopenオプションのキーワードって
all == block, hor, insert, jump, mark, percent, quickfix, search, tag, undo
だと思い込んでいたんですが違うんですね!驚き。

src/option.h : 468

# define FDO_ALL                0x001
# define FDO_BLOCK              0x002
# define FDO_HOR                0x004
# define FDO_MARK               0x008
# define FDO_PERCENT            0x010
# define FDO_QUICKFIX           0x020
# define FDO_SEARCH             0x040
# define FDO_TAG                0x080
# define FDO_INSERT             0x100
# define FDO_UNDO               0x200
# define FDO_JUMP               0x400

FDO_ALL でソースをgrepするとFDO_ALL単独での比較しか出てこないw

@mattn
Copy link
Member

mattn commented Sep 30, 2014

せめて any にしてほしいww

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants