對不起,如果我的問題不是很清楚。我不確定如何對它進行描述。在Vim中移動光標通過長軟包裝線
我想使用VIM爲我所在的一些類編寫論文。我遇到的問題是在編輯器中對線條進行格式化。如果我沒有用enter鍵明確地斷開一行的末尾,當我嘗試在文本中移動光標時,如果我有一個跨越多行的句子,它會跳過多行。有什麼辦法可以讓光標能夠在文本中移動,就像在大多數文字處理器中一樣?
對不起,如果我的問題不是很清楚。我不確定如何對它進行描述。在Vim中移動光標通過長軟包裝線
我想使用VIM爲我所在的一些類編寫論文。我遇到的問題是在編輯器中對線條進行格式化。如果我沒有用enter鍵明確地斷開一行的末尾,當我嘗試在文本中移動光標時,如果我有一個跨越多行的句子,它會跳過多行。有什麼辦法可以讓光標能夠在文本中移動,就像在大多數文字處理器中一樣?
您是否嘗試過在vim以下命令行:
:set nowrap
好,這是做到了。謝謝。 –
我也推薦':設置textwidth = 80'來自動換行。 – Max
該命令似乎沒有做任何事情,但我可以看到爲什麼你會想要這樣的事情。任何想法爲什麼它可能不適合我? –
這是因爲默認j
和k
運動跨越物理線路,不可見,軟包屏線移動(當你有:set wrap
)。您可以使用gj
和gk
命令。
如果你想默認這種行爲,你可以把這個放入你的~/.vimrc
重新映射默認鍵:
noremap j gj
noremap k gk
謝謝。我會去做。 –
與經常使用
noremap j gj
noremap k gk
選項的問題是,如果您的文本中有多行,則它會打破<vcount>
的功能。
例如:您需要10k
(上行10行),因爲您在側邊欄中使用相對數字,但是這些行中包含4行高度的多行。因此,您最終會從您的相對數字中讀取的6行(6k
)以上。你必須手動計算!煩人......特別是如果你有多個多行你的當前位置和你想要的位置之間 - 不是Vim- istic!
我喜歡我的<vcount>
功能與我的:relativenumber
一起,這就是爲什麼我寫了如下功能&映射來解決與此相關的所有問題。
這些功能讓你使用像10j
或10k
命令不如預期,儘管多線存在使用gj
和gk
作爲默認運動映射的所有優點:
編輯: 我只是發現了以下的reddit,這比我自己的解決方案好得多。這是最短的版本:
nnoremap <expr> j v:count ? 'j' : 'gj'
nnoremap <expr> k v:count ? 'k' : 'gk'
「龍兒」 的版本更好地理解和完整性:
nnoremap <expr> k (v:count == 0 ? 'gk' : 'k')
nnoremap <expr> j (v:count == 0 ? 'gj' : 'j')
來源:http://www.reddit.com/r/vim/comments/2k4cbr/problem_with_gj_and_gk/
我的老辦法:
nnoremap <silent> j :<C-U>call Down(v:count)<CR>
vnoremap <silent> j gj
nnoremap <silent> k :<C-U>call Up(v:count)<CR>
vnoremap <silent> k gk
function! Down(vcount)
if a:vcount == 0
exe "normal! gj"
else
exe "normal! ". a:vcount ."j"
endif
endfunction
function! Up(vcount)
if a:vcount == 0
exe "normal! gk"
else
exe "normal! ". a:vcount ."k"
endif
endfunction
有沒有辦法做到這一點水平呢? – f1lt3r
一些更多的信息在這裏除了答案:http://vim.wikia.com/wiki/Move_cursor_by_display_lines_when_wrapping –