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

mctunoxg  于 2023-06-23  发布在  其他
关注(0)|答案(3)|浏览(150)

我有一个200,000行的ora文件,但最后60,000行都是空白的回车符/空格。
我知道G跳到文件的末尾,但是我配置vim跳到最后一行或非空格和非回车的字符吗?

1cosmwyk

1cosmwyk1#

G?\S输入
转到文档末尾,向后搜索,找到非空格,继续。如果你需要一张Map,

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

EDIT:如果最后一行不是空白,则此操作将不起作用。如果最后一个 * 字符 * 不为空,则可以进行以下修改:

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>
xt0899hw

xt0899hw2#

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

999999999g_

作为Map:

nnoremap <leader>g_ 999999999g_
m1m5dgzv

m1m5dgzv3#

我用
nnoremap G G{}
它跳到最后一段之后的行。

相关问题