Vim:跳转到文件的最后一个非空白字符

Vim: Jump to last non-whitespace character of a file

我有一个 200,000 行长的 ora 文件,但最后 60,000 行都是空白回车 returns/whitespace。

我知道 G 跳转到文件末尾,但我确实配置 vim 跳转到非空白的最后一行或字符,并且非运输return?

G?\S输入

转到文档末尾,向后搜索,找到一个非空格,继续。如果你需要一个映射,

nnoremap <Leader>G G?\S<CR>:noh<CR>

编辑:如果最后一行不是空白,这将不起作用。如果最后一个 字符 不为空,下面的修改将起作用:

nnoremap <Leader>G G$?\S<CR>:noh<CR>

要修复 那个,它有点复杂。我们将转到文件的最后一个字符,并测试它是否为空格。如果它不是空格,我们就完成了;但如果是,我们可以使用以前的解决方案。 (这也保存了我们搞砸的事情的状态,因此它对您的工作的干扰最小。)

function! LastChar()
  let oldsearch = @/
  let oldhls = &hls
  let oldz = @z

  norm G$"zyl
  if match(@z, '\S')
    exe "norm ?\S\<CR>"
  endif

  let @/ = oldsearch
  let &hls = oldhls
  let @z = oldz
endfunction

nnoremap <Leader>G :call LastChar()<CR>

(count)g_ 将转到当前行下方 count 行的最后一个非空白字符。所以你可以这样做的一个愚蠢的方法是:

999999999g_

作为映射:

nnoremap <leader>g_ 999999999g_