-
Notifications
You must be signed in to change notification settings - Fork 11
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
reletivenumber
の仕様が、:copy
などの 行数指定コマンド類と 非常に相性が悪い
#1432
Comments
前半のみ回答します。
いえ、 |
後半の折り畳みの動作は、現状では仕様なのかな?って思いました。
相対行番号指定時は、それまでの行に折り畳みがあったら、折り畳まれている行数を加味して指定しないといけない気がします。 でも、そんなの面倒くさいので、目的の行数までの折り畳みはopenしておく運用でカバーする感じでしょうか。
|
augroup cmdline-norelativenumber
autocmd!
autocmd CmdlineEnter : let s:save_relativenumber = &l:relativenumber
\ | setlocal norelativenumber
\ | redraw
autocmd CmdlineLeave : let &l:relativenumber = s:save_relativenumber
augroup END |
@h-east こちらの 前半、visual選択時の 具体的には、以下のショートカットキー操作 で確認しています:
そのわりに、 こちらの環境 特有の現象でしょうか? |
2番目、折り畳み時のコマンド実行での相対行数 については、
このあたり、 しかし、 具体的には、以下のとき、 :new
:0 r !seq 1 100
:10,14 fold " 10 ~ 14行目 を fold
:10 foldc " fold閉じる
:5 " 5行目 に移動
:.co+5 " 5行目 の内容を、5行目 + 5行目 に コピー 実行結果としては、foldを開いて確認すると、 5 # コマンド実行時 カーソル
6
7
8
9
10 # fold冒頭
5 # ← ここにコピー
11
12
13
14 # fold末尾
15 なので、10 ~ 14行目の折り畳み に対する、『折り畳みの最後の行に調整』、
上記の説明だと、 『ユーザ側が 折り畳み行数を 自分で加味しないといけない』とは むしろ逆の説明、と思ったのですが、 基本的には vim側で勝手に加味してくれる挙動 の実感ですが、 |
たしかに、現状だと、相対指定 避けたほうが無難そうですね。 |
うーん、こちらと現象違いますね。
|
@h-east 失礼しました、 |
内容
relativenumber
(行数表示を、相対行数 で表示する) の設定について、:copy
等の 行数を指定するコマンドと 非常に相性が悪い挙動をする気がします。これらの挙動、ちょっと使いづらいような気がしますが、どうでしょうか?
範囲指定 → コマンド の際、選択範囲 末尾 基準の行数を表示する
Shift-V
で、ビジュアルモードの 複数行数指定している際 の状況です。この際、
:'<,'> copy +N
(N行目 後 にコピー) を実行する際の基準行は、選択範囲の最初 (=
'<
) です。しかし、選択状態から、
:
で コマンド入力しようとすると、カーソルが 選択範囲 末尾 に移動するため、
relativenumber
の表示は、末尾基準 となります(コマンドウィンドウに
:'<,'>
と入力されるので、最後の'>
の位置 に移る、という意図?)。そのため、
relativenumber
表示 をそのまま使うと、意図しないところにコピーされます。実現方法
Pros 良くなる点
Cons 悪くなる点
relativeの指定行 までの間に fold範囲 があると、行数指定がズレる
相対行数での指定の際に、指定行の間に foldしている領域 が挟まる場合です。
以下、L10 ~ L14, L20 ~ L29 の 2つのfold がある状態で、
カーソルは、それより前の L5 にいます。
ここで、2つ目のfold範囲 L20 ~ L29 をコピーするため、
:+11 co -1
を実行すると、L16 (最初の fold を開いた状態での、5 + 11 = 16行目) がコピーされます。絶対行数指定で、
:20 co -1
をすると、L20 ~ L29 の fold範囲全体 がコピーされますが、そのつもりで実施すると、おかしな挙動になります。
実現方法
Pros 良くなる点
Cons 悪くなる点
Vimのバージョン
OSの種類/ディストリ/バージョン
その他
The text was updated successfully, but these errors were encountered: