Vic*_*ell 8 vim formatting text
如果我的问题不是很明确,我很抱歉.我不确定如何表达它.
我想使用VIM为我所在的某些类编写论文.我遇到的问题是编辑器中行的格式化.如果我没有使用回车键明确地断开行的结尾,当我尝试将光标移动到文本中时,如果我有一个跨越多行的句子,它会跳过多行.是否有任何方法可以使光标能够在文本中移动,就像在大多数文字处理器中一样?
fre*_*eeo 36
经常使用的问题
noremap j gj
noremap k gk
Run Code Online (Sandbox Code Playgroud)
选项是,<vcount>
如果文本中包含跨越多行的行,它会破坏功能.
示例:您想要10k
(向上10行),因为您在侧边栏中使用相对数字,但是有4行高度的多行.因此,您最终有效地在6k
您想要的线上方6行()处,您可以从相对数字中读取.你必须手动计算!烦人...特别是如果你当前位置和你想要的位置之间有多条多线 - 而不是Vimtic!
我喜欢我和我的<vcount>
功能:relativenumber
,这就是为什么我写了下面的函数和映射来解决与此相关的所有问题.
这些函数允许您使用类似10j
或10k
预期的命令,尽管存在具有使用gj
和gk
作为默认移动映射的所有优点的多行:
编辑: 我刚刚在reddit上找到了以下内容,这比我自己的解决方案要好得多.这是最短的版本:
nnoremap <expr> j v:count ? 'j' : 'gj'
nnoremap <expr> k v:count ? 'k' : 'gk'
Run Code Online (Sandbox Code Playgroud)
"更长"版本,以便更好地理解和完整:
nnoremap <expr> k (v:count == 0 ? 'gk' : 'k')
nnoremap <expr> j (v:count == 0 ? 'gj' : 'j')
Run Code Online (Sandbox Code Playgroud)
来源: 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
Run Code Online (Sandbox Code Playgroud)
这是因为默认j
和k
运动跨物理线移动,而不是可见的,软包裹的屏幕线(当你有:set wrap
).您可以使用gj
和gk
命令.
如果您想要默认使用该行为,可以通过将其放入以下内容来重新映射默认密钥~/.vimrc
:
noremap j gj
noremap k gk
Run Code Online (Sandbox Code Playgroud)
您是否在 vim 命令行中尝试过以下操作:
:set nowrap
Run Code Online (Sandbox Code Playgroud)