ggをgに再マッピングする方法は?


8

通常モードg combinationsではgg、以外は使用しません。g一度押すだけで十分になるようにするにはどうすればよいですか?

nnoremap g ggコマンドの継続を3秒ほど待機させます。マッピング解除g、私はにマップすることはできませんので予めことは、どちらか動作しません。gg私はアンマップ場合g。私はそうではないすべての組み合わせのマッピングを解除する必要がありggますか?


7
g現在マッピングを使用していないからといって、将来使用しないという意味ではありません。中にはかなり便利なものがいくつかあります。例えばgEg_gtgTg,g;gugUgn、、私の個人的に好きなgf:h gすべてのgマッピングのリストについては、を参照してください。
Peter Rincker、2015

そうそう、gfは素晴らしい。でも今はあまり必要ないです。必要になったときに別のホットキーに移動するかもしれません。(私たちの名前はとても陽気に模倣されているので、私が私のものを選んでいたときにあなたの名前を見ていたのではないかと思います)。
ペレフィンクター

そして、可能であれば、vimとそれ以下も同じように動作させたい。Lessはシングルを使用しgます。
Peret Finctor

3
私はおそらくgv約90秒ごとに使用します
the_velour_fog

1
など、そのデフォルトのマッピンググラムで始まるいくつかのプラグインもありますgc解説が。あなたはまた、ことを考慮すべきであるあなたがします実行キーのうち、あなたが長い時間のためのVimを使用し続けた場合、あなたが与えられたマッピングに慣れるの後に、それはあなたの筋肉の記憶を訓練するためにいくつかの時間/労力を要していること。
mMontu

回答:


22

新しいバージョンのVim(7.3.1261+)があるとすると、 <nowait>

nnoremap <nowait> g gg

ただし、一部のgマッピングの有用性は強調できません。以下は、有用なgマッピングの短いリストです。

  • gE -単語の動きの逆方向の終わり
  • g_ -行の最後の非空白文字まで
  • gtgT-タブナビゲーション
  • g,g;-変更リストを行き来する
  • gugU-ケースの変更
  • gn -現在のパターンを視覚的に選択
  • gv -前のビジュアル選択を再選択します
  • gi -挿入モードを最後に停止したのと同じ位置で挿入モードを開始します
  • gf -カーソルの下のファイルに移動(私の個人的なお気に入り)

:h gすべてのgマッピングのリストについては、を参照してください。

個人的にはgg、それが良い習慣であり、優れたVi / Vimエミュレーターであるとは知られていないため、使い方を学ぶだけです。

詳細については、以下を参照してください。

:h g
:h :map-nowait

9
giまた、かなり素晴らしいです(以前に残した場所から挿入モードに入ります)。コード行を入力している最中はいつもそれを使用しており、ファイルの他の場所をチェックする必要があります。
ドアノブ

1
うん。これは、マップの人々のようなものw:w<CR>してqまで:qall<CR>、それはだから「速いです。」あなたはvimの利点を自分から奪っているだけです。
wchargin 2015

@WCharginああ、私は最初のものではありません。この種のリマップについてもっと知っていますか、私をそれらの人々にリダイレクトできますか?
ペレットフィンクター

2
@PeretFinctorあなたが冗談を言っているかどうかわからない—私の要点は、これらの種類のリマップは非常に悪い考えだということです。これを行う人々は、vimを普通のエディターとして使用しようとしています。wq、およびgすべてのオファー編集中に頻繁に使用する必要がありますが、あなたが保存ときに、第2の画分をオフに剃るために抑制されていることを非常に広範囲な機能。私はあなたのことは知りませんが、一言進めるよりも保存の頻度ははるかに少ないです!
wchargin

1
@PeretFinctor:ワードフォワードとワードバックワードにw / Wとb / Bを使用しないのはなぜですか、Vimはすぐに使える方法です?-ここにパターンが表示されますか?あなたはしようと格闘のVimで。一緒に移動、提供さているものをそのまま使用します。そうすれば、より簡単になり、長期的にはワークフローにとってより有益になります。
DevSolar

7

ちょうど1つのキーが本当に必要な場合-引き続き使用できます... のキー(つまり、それほど必要としないキー)を使用できます!このようにして、有用なgプレフィックスをそのままにしておくことができます。

たとえば、「オーバーロード」0して機能を切り替え0たり^、繰り返し押すと、^代わりに使用したりできます(直感的な上昇文字であるため)。

これは完璧ではないに違いありませんが、以下にクイック・アンド・ダーティーの概念実証があります。

function! ToStartOrNonBlankToggle(mode)
    if (a:mode == 'x')
        normal! gv
    endif
    let sp = col('.')
    normal! ^
    let ep = col('.')
    if (sp == ep)
        normal! 0
    endif
endfunction

nnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('n')<cr>
onoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('o')<cr>
xnoremap <silent> 0 :<c-u>call ToStartOrNonBlankToggle('x')<cr>
noremap <silent> ^ gg

上記はまだ0をモーションとして使用でき、ビジュアルモードからも使用できます。インデントされた行で、y0カーソル位置から最初の空白以外の文字にコピーするようになりました。代わりに開始列にコピーする場合は、視覚的に行う必要があります。v00y

を使用13^して、13行目に移動することもできます。


1
それは本当に良い考えです、ありがとう!
Peret Finctor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.