1

主なテキスト エディターとして gvim を使用することにしましたが、使い慣れた他のビジュアル エディターのように動作するようにしたいと考えています。その1つの側面は、ラップを有効にして(set linebreak)矢印キー<Up>を使用し、挿入モードで、カーソルを論理行ではなく前/次の画面<Down>行に移動したいということです。これは、マッピングを使用して実現できます。

inoremap <Up>   <C-O>gk
inoremap <Down> <C-O>gj

...そして、すべて問題ありません。

ただし、選択モードでは。を使用している間、期待どおりに機能し<S-Right>、論理的な行に関しても移動します。http://vim.wikia.comで、追加のマッピングに関する次の提案を見つけました。<S-Left><S-Up><S-Down>

noremap  <S-Up>     vgk
noremap  <S-Down>   vgj
inoremap <S-Up>     <C-O>vgk
inoremap <S-Down>   <C-O>vgj

後者の 2 つのマッピングにより、挿入モードで を押して選択を開始<S-Down>すると、前の位置から次の画面行の同じ位置まで選択できるようになりました。しかし、すでに選択している場合 (すでに選択モードになっている場合)、 を押すと<S-Down>1 行下に移動しますが、選択は失われます。

これを達成するには、選択モード ( ) に特定のマッピングが必要であると予想されますsnoremapが、その方法を理解することができませんでした。


選択モードが役に立たないかどうかについての glts との議論のため、おそらくいくつかの背景情報が適切です: 選択モードは、MS Windows、Mac OS、さらには、 IBM の CUAに触発された Linux も含まれています。付属のキーボード マッピング ^C、^X、^V でのみ実際に役立つため、mswin.vimこれらのマッピングを提供する と組み合わせて使用​​することを意図しています。私の質問は、ラップされたテキストに対しても選択モードが期待どおりに機能するように、これらのマッピングを補完しようとする試みによって動機付けられています。

4

2 に答える 2

0

これが私が思いついたものです:

前/次の画面行を作成して移動します<Up><Down>(挿入モードでは、<C-O>1 つのコマンドで通常モードに切り替わります。通常モードでは、gj と gk は「画面行ごとに移動」コマンドです。)

inoremap <Up>       <C-O>gk
inoremap <Down>     <C-O>gj

<S-Up>および挿入モードの場合と同じで<S-Down>、選択モードに入ります。(通常モードでは、v はビジュアル モードに入ります。gj と gk は、ビジュアル モードでも機能します。ビジュアル モードでは、<C-G>選択モードに入ります。)

inoremap <S-Up>     <C-O>vgk<C-G>
inoremap <S-Down>   <C-O>vgj<C-G>

<S-Up><S-Down>選択モードで同じ。(選択モードでは、<C-O>1 つのコマンドでビジュアル モードに切り替わります。)

snoremap <S-Up>     <C-O>gk
snoremap <S-Down>   <C-O>gj
于 2013-09-08T14:02:19.263 に答える