Vim:跳转到文件的最后一个非空白字符
我有一个ora文件,它有200000行长,但最后60000行都是空白的回车/空格 我知道G跳转到文件的末尾,但我配置vim跳转到最后一行或最后一个非空白和非回车的字符?G?\SEnter 转到文档末尾,向后搜索,查找非空白,转到。如果你需要一个映射Vim:跳转到文件的最后一个非空白字符,vim,vim-plugin,Vim,Vim Plugin,我有一个ora文件,它有200000行长,但最后60000行都是空白的回车/空格 我知道G跳转到文件的末尾,但我配置vim跳转到最后一行或最后一个非空白和非回车的字符?G?\SEnter 转到文档末尾,向后搜索,查找非空白,转到。如果你需要一个映射 nnoremap <Leader>G G?\S<CR>:noh<CR> nnoremap G?\S:noh 编辑:如果最后一行不是空的,这将不起作用。如果最后一个字符不为空,则可以进行以下修改: nnorema
nnoremap <Leader>G G?\S<CR>:noh<CR>
nnoremap G?\S:noh
编辑:如果最后一行不是空的,这将不起作用。如果最后一个字符不为空,则可以进行以下修改:
nnoremap <Leader>G G$?\S<CR>:noh<CR>
nnoremap G$?\S:noh
要解决这个问题,它变得有点复杂。我们将转到文件的最后一个字符,并测试它是否为空白。如果不是空白,我们就完了;但如果是,我们可以使用前面的解决方案。(这也避免了我们把事情搞砸的情况,因此对您的工作的干扰最小。)
函数!LastChar()
让oldsearch=@/
设oldhls=&hls
设oldz=@z
标准G$“zyl
如果匹配(@z,“\S”)
exe“norm?\\S\”
恩迪夫
让@/=oldsearch
let&hls=oldhls
让@z=oldz
端功能
nnoremap G:调用LastChar()
(count)g
将转到当前行下方行的最后一个非空字符count
行。因此,一种愚蠢的方法是:
999999999g_
作为映射:
nnoremap <leader>g_ 999999999g_
nnoremap g_9999999g_
如果最后一行不是空的,但它的末尾有空格的话,考虑一个有3行代码的文件:<代码> AAA,<代码> BBB,<代码> CCC < /Cord>。在它的末尾有尾随空格。你想移动到最后一个<代码> C >代码>,但是它不起作用。最初,光标在第一个代码> A<代码>。我按<代码>>G
,光标移动到第一个c
。我键入?\S
,然后按Enter键,光标移动到最后一个b
。这种行为是正常的。我所说的是,如果有一个能同时适用于两种情况的单一解决方案,那就太好了。也就是说,对于原始帖子中描述的情况和我描述的情况编辑:哦,我在你的最后一条评论中看到了编辑:啊,好吧,我终于明白你的意思了。对不起,太厚了:P不幸的是,如果最后一个字符是空格,我想不出什么简单的方法。在这种情况下,我们可以使用Gg
。
nnoremap <leader>g_ 999999999g_