2011-10-26 10 views
1

でPageUpキーにマップfは私がグラムVI

imap jj <Esc>

に 'JJ' をマッピングすることができますし、私もタブナビゲーション

map tj :tabprevious<CR> 
map tk :tabnext<CR> 

に手紙をマッピングすることができますしかし、私はマップすることはできませんページアップ(偶数ページダウンなど、スペースバーの行為が)

map <Space> <PageDown> 
map g <PageUp> 

によるthis "複数のキーシーケンスをマップしようとすると、小文字または大文字で始めることはできません("マップするのは危険です ")が、句読点や制御文字はフェアゲームです。 "誰でもこれを確認できますか?

もしそうなら、どのように1は、「G」のようにマップされていないキーに

+1

グラムは奇妙な1のビットです。それは自分では何もしませんが、正確には「未使用」ではありません。 vim(viコマンドはほとんどのシステムでvimにリンクしています)では、ggはファイルの先頭に、100ggは100に、gjとgkは長いラップされた行をナビゲートするために使用されるため、おそらく最良の選択ではありません。私はいくつかの新しい情報で私の答えを更新しました。 PageUp/Downの番号1と2をお勧めします。 – davur

+0

あなたはすでにページアップとページダウンのためのctrl-bとctrl-fを持っています(ラインアップとラインダウンのスクロールでは、セミアップとセミダウン、ctrl-eとctrl-yはctrl-uとctrl-dです) – Benoit

+0

@ベノワ私はあきらめてCtrl-b/f/u/dを使い始めましたが、Ctrlボタンは手首を常に悪くしています。 – puk

答えて

1

を機能を割り当てるん(編集 - オリジナル答えはCtrlキーを押しながらFキーとCtrl-Bネイティブ示唆したが、ここでの目標はにあるような答えを更新しましたいくつかのポイントは、我々は今のXを選んだと仮定すると、あなたに右の文字を選択する問題を残し

追加する)

Ctrlキーを使用して回避し、Shiftキーを押しながら。

map X <PageUp>はあなたのために働いていない2つの理由が考えられます。

  1. ご使用のバージョンではPageUp/PageDownをサポートしていない可能性があります。これが問題であれば、代わりにviのページジャンプにマップするようにしてください(例えば、Bは前進を伴います)。 map X <C-b>

  2. 「期待通りに」動作しないという別のオプションもあります。 vi PageUp/PageDownではカーソルではなく 'viewport'で動作します。あなたがファイルの一番上を見ているが、カーソルが一番上にないか、何もしません。カーソルが下から2行ある場合、PageDownは動作しません。

    これに対処するには、 '移動ビューポートアップ' <C-b>と 'ビューポートの上部にカーソルを移動' Hなどを組み合わせることができます。 map X <C-b>H(反対はmap X <C-f>Lである)。または自分でジャンプする行数を指定するmap X 30k(Op。map X 30j)。

次に、上書きするための正しい文字を選択する問題。 Viにはネイティブコマンドがたくさんあるので、実際には少数のキャラクターだけがネイティブに何かをしていないのです。 あなたの目標がRSIを回避することであれば、もちろん何かを上書きします。しかし、個人的には役に立たないものを上書きしてください。

ネイティブ:あなたがcurrnetlyのある行に与えられたシンボルのための Fの検索がそれ自身の上 グラム(非常に便利な、しかし、私は推測していない重要なことができることは)何もしませんが、GGは、ファイルの先頭にカーソルを移動します。 gを選択すると、vim(オリジナルのviではなく)が2つのPageUpを実行するのではなく、ファイルの先頭に2つのクイックキーを解釈するため、issusが発生する可能性があります。

+0

私はちょうどCtrl +何かの結果として私の[RSI](http://en.wikipedia.org/wiki/Repetitive_strain_injury)に対処するためにviを特別に使い始めました。私はCtrlボタンがすべての悪の根源だと思っています(シフトボタンがあるところまで移動しても)。 h、j、k、lは素晴らしいですが、私はもっと移動するオプションが必要です。助言がありますか? – puk

+0

これは少し問題です。もちろん、fを上書きすることはできますが、ネイティブのviコマンドを持たない文字のうちの1つを上書きするほうが良いかもしれません。 CTRL、SHIFT、または(一般的には、)が使われているので、ほとんどのカスタムコマンドを2つ以上のキーにするので、未使用の文字はほとんどありません。 – davur

+0

viコマンドのリスト(未使用文字を含む)はhttp://people.cis.ksu.edu/~bhoward/vi/vi60.htmlから入手できます。しかし、あなたが与えられたキャラクターをよりよく使うならば、使用されているものを上書きすることができます。しかし、多くの人は、viのページアップダウンのためにCTRL-k/jまたはShift-k/jを使用します。 Shift k(またはK)は使用されず、Shift j(J)は占有されていますが、重要ではありません。 – davur

2

これはあなたの質問に答えるものではありませんが、RSIで問題が発生した場合に役立つと思いました。スペースバーをマップして、高速移動モードと低速移動モードを切り替えます。通常jまたはkを押すと1行下にスクロールします。スペースを押すと早送りモードになり、jまたはkを押すと10行上/下にスクロールします。スペースをもう一度押すと、通常の状態に戻ります。これはvimでのみ動作します。単純なviではなく(ほとんどの "vi"プログラムはvimへのシンボリックリンクですが)。

通常の編集モードと視覚的な編集モードの両方で動作します。

あなた~/.vimrcファイルのどこかにこのコードを入れて、それを使用するには:

map <Space> :call ToggleFastMoveMode()<CR> 

vmap <Space> :call ToggleFastMoveMode()<CR>gv 

let g:fastMoveMode = 0 

function! ToggleFastMoveMode() 
    let g:fastMoveMode = 1 - g:fastMoveMode 
    if (g:fastMoveMode == 0) 
     noremap j j 
     vnoremap j j 
     noremap k k 
     vnoremap k k 
    else 
     noremap j 10j 
     vnoremap j 10j 
     noremap k 10k 
     vnoremap k 10k 
    endif 
endfunction 
+0

**これは答えです。** ''私は自力でEclipseとPyCharmによって駆動されるRSIに苦しみ、Vimのデフォルト使用を嘆いています。 「」のキーコード。 [puk](https://stackoverflow.com/users/654789/puk)が示唆しているように、他のIDEで絶え間ないキーコードによるヘルパーな手首の痛みは、私たちの多くが最初にVimを採用していました。 ''この小さなおかげでありがとう! –