2012-03-15 9 views
12

行が長すぎると、強制的に改行されます。例えば、通常、長いライン意志はVIMのウィンドウが狭すぎる場合、それはこのvimでカーソルを直感的に動かすにはどうすればいいですか?(行ではなく)

1 first line 
2 this is the long 
    second line of the file 
3 third line 

問題のように見えるから起きる、

をこの

1 first line 
2 this is the long second line of the file 
3 third line. 

のように見えますが、この。

vimカーソルが '3行目'の 't'の前にあるとしましょう。 「k」と入力すると、カーソルは「ファイルの2行目」の「s」の前に移動します。その後、「k」をもう一度入力すると、カーソルが「最初の行」の「f」に移動しますが、「これは長い」ではなく「t」です。私が望むのは、カーソルが 'これは長いです'で 't'に移動するということです。それは私にとってより直観的なプロセスです。どのように私のヴィムをこのような作品に設定できますか? Vimので

+2

あなたが記述「現在」の行動はかなり珍しいです。私はどのようにvimがそれを行うことができるかを理解しようとしています。確認するには、行3の「t」の前にカーソルを置いて、「k」を1回押すと行2の「s」の前に1行上がりますが、もう一度、1行目の "f"の前に2行上がっていますか? –

答えて

22

gjgkコマンドは、ファイル画面ではなく、ライン毎により動きます。おそらくあなたの説明に合っているようです。

あなたはこのようなあなたのキーを変更することができます

:map j gj 
:map k gk 
+6

代わりに ':noremap'や':nnoremap'を使うことをお勧めします。詳細についてはこちらをご覧ください:http://learnvimscriptthehardway.stevelosh.com/chapters/05.html –

3

をなし、いくつかの行が長すぎると、あなたは彼らにセットラップを持っている場合はそう言って、「2行」に表示されますが、それらの間に改行文字はありません。 を無効にすると、が設定され、nowrapと表示されます。

通常、kjはあなたを上下に動かします。ラップされた行を移動する場合は、gkまたはgjを使用するか、いくつかのように、たとえばカーソルキーなどにマップします。 自然方法でvimの中で移動するには

nmap <up> gk 
nmap <down> gj 
2

が可能です。私が何をしたか

があって、私はあなたが、変更(または作成)あなたの「〜/ .vimrcと」との2行を追加することをお勧め:これはあなたのコントロールアップとコントロール - をマッピングします

map <C-Up> g<Up> 
map <C-Down> g<Down> 

imap <C-Up> <C-[> g<Up> i 
imap <C-Down> <C-[> g<Down> i 
:動きコマンド(これはコントロール権及び制御左周りに長い行を移動するとコヒーレントである)

あなたはこれらの他の2行を追加する場合、あなたはinsertmodeに移動するには、同じコマンドを使用することができますまで

(VIM素晴らしいです!)

グレッグ若

+0

これは 'i'のように行の上に移動するという悪影響があります。 [Ctrl-O](http://vim.wikia.com/wiki/Use_Ctrl-O_instead_of_Esc_in_insert_mode_mappings)を使用してください。 – Pod

0

この回答はマイナーmidificationで、@mario-rossi 's answer(彼に工藤)に由来しています。

CTRL + upとCTRL + downではなく、通常のUPキーとDOWNキーを使用します。そして、どうにかして、私は、オフ・バイ・ワンの振る舞いを避けるために、INSERTモード・マッピングで1つの余分なスペースを削除する必要があります。

あなた~/.vimrcに次を置き:

" When a long line is wrapped, the "gk" and "gj" allow you to move up and down 
" a visual line, while normal "k" and "j" move a physical line. 
" The following settings map "gk" and "gj" to cursor <up> and <down>. 
map <up> gk 
map <down> gj 
" And the following lines enables same <up> and <down> behavior in INSERT mode 
imap <up> <C-[> <up>i 
imap <down> <C-[> <down>i 
関連する問題