5

在 Vim 中,我将进入可视模式,V然后向上移动光标(使用k)。

kak中,我可以选择一行,我可以通过多次按下或向下移动光标同时按下 来向下x扩展选择,但如果我在按下的同时向上,我会保留选择,但不是整个行,第一个选定行上的选择以某种方式跳转到第 0 列。XshiftJshiftK

4

2 回答 2

11

那是因为 Kakoune 的选择是有导向的。当您选择带有 的行时x,光标位于行尾,锚点位于行首。shiftk表示“将选择扩展到上面的字符”,但扩展表示“选择到那里,同时保持相同的锚点”,“上面的字符”是上一行的最后一个字符。

简而言之,你需要在向上延伸之前切换选择的方向:x+ alt;+ shiftk

于 2017-11-17T12:45:41.060 回答
5

这并不理想,但在这一点上,我能找到的最好的全行选择就是按照您的描述进行操作:x然后按向上滚动shiftk

只有在您完成向上滚动后,您必须通过按 扩展选择以包括所有完整的行altx

请参阅此 Github kakoune 问题中的讨论,了解一些针对此问题的出色脚本解决方案,您可以将这些解决方案添加到您的kakrc.

这些解决方案之一在 kakoune wiki 上有特色

def -hidden -params 1 extend-line-down %{
  exec "<a-:>%arg{1}X"
}
def -hidden -params 1 extend-line-up %{
  exec "<a-:><a-;>%arg{1}K<a-x>"
}
map global normal x ":extend-line-down %val{count}<ret>"
map global normal X ":extend-line-up %val{count}<ret>"
于 2017-05-29T17:02:35.623 回答