使用{
和}
我可以跳转到段落的开头/结尾(空行),但是如何转到段落的第一行/最后一行呢?
答案 0 :(得分:6)
映射一些新命令:
段落第一行的开头:
:map f {)
段落最后一行的开头:
:map l }(
然后使用f
和l
进行导航。您可能想要选择备用键。
答案 1 :(得分:3)
转到段落第一个单词的开头:TADOConnection
转到段落的最后一个单词的末尾:public interface InterfaceName<T> {
T functionName(..., ...);
}
答案 2 :(得分:1)
我只能建议
set whichwrap+=b,s
set virtualedit=onemore
nnoremap { k{<Space>0
vnoremap { k{<Space>0
nnoremap } j}<BS>0
vnoremap } j}<BS>0
(编辑)。
答案 3 :(得分:0)
我希望能够使用Vimscript进行类似的操作(以编程方式将当前段落的行转换为有序列表或无序列表)。处理当前段落的第一行也是当前缓冲区的第一行(或者该段落的最后一行是缓冲区的最后一行)的情况是有问题的,需要花费几个小时才能解决。
为回答这个问题,我修改了想出的功能,通过修改它们以移动光标而不返回行号来解决我的问题。请注意,我的解决方案保留了光标的列位置,但这可能不是必需的。
function! MoveParagraphFirstLine()
let column = col(".")
let first_line = line("'{")
" Detect if the first line of the current paragraph is also the first line
" of the current buffer and move cursor position accordingly.
if first_line == 1
call cursor(1, column)
else
call cursor(first_line + 1, column)
endif
endfunction
function! MoveParagraphLastLine()
let column = col(".")
let last_line = line("'}")
" Detect if the last line of the paragraph is also last line of the buffer.
if line("$") == last_line
call cursor(last_line, column)
else
call cursor(last_line - 1, column)
endif
endfunction
nnoremap <leader>f :call MoveParagraphFirstLine()<CR>
nnoremap <leader>l :call MoveParagraphLastLine()<CR>