0

我想编写一个函数来对 Scala 导入进行排序。

我已经成功找到了导入的开始和结束的地方。现在我只需要进行实际排序。

function! SortScalaImport()
  call cursor(1, 1)
  let start = search('^import') "find first line with import
  let end = search('^\(import\|\n\)\@!') "find first non-import line
  let end = end - 1
  execute 'normal '.start.','.end.'sort'
endfunction

函数的最后一行应该这样做,但什么也不做。我哪里错了?

4

2 回答 2

2

因为 Vim 是基于模式的编辑器,所以在编写脚本时还需要考虑模式。

:normal用于普通模式命令,即用于导航 ( j, w) 或更改 ( x, gUU) 文本的简短内容。使用:,您进入命令行模式,其中执行 Ex 命令(如:substitute或您的:sort)。通常,您可以将这些原样放入您的 Vimscript 函数中(例如%delete _),但是当您想将变量(在您的情况下:行号)放入其中时,您需要:execute它,除了 variables 之外的所有内容'quoted'

于 2013-02-08T16:09:57.767 回答
1

我不知道你为什么添加normal你的执行?

这对你有用吗?

execute start.','.end.' sort'
于 2013-02-08T15:38:15.023 回答