Как переместить текущую линию за линией над ней в Vim? - PullRequest
3 голосов
/ 28 октября 2011

Как бы я переместил текущую линию за линией над ней? Скажи, что у меня есть:

    function foo()
      {
      ^ Cursor is here

И хочу превратить это в:

function foo() {

Я все еще новичок в vim, так что теперь я делаю i[backspace][backspace]...etc.:)

1 Ответ

9 голосов
/ 28 октября 2011

Несколько способов:

  • В обычном режиме kJ или kgJ или VkJ или VkgJ (две последние команды делают то же самое в визуальном режиме).
    k перейдет к предыдущей строке, а J или gJ объединятся со следующей строкой (J вставляет пробел между ними, gJ просто удаляет символы EOL)
  • В командном режиме :-,j или :-,j!
    -, - это диапазон, который является аббревиатурой для .-1,., что означает «от предыдущей строки к текущей строке»
    j - это команда ex для объединения строк в диапазоне. Ударенная (с восклицательным знаком) версия действует как gJ.
  • С заменой: :-s/\s*\n\s*//
    - означает предыдущую строку
    :s вам наверняка известен, иначе вы должны запустить vimtutor. /\s*\n\s*/ - это шаблон для максимально возможного количества пробелов плюс разделитель строк (соответствует разным последовательностям байтов в соответствии с форматом файла: LF, CR или CRLF) плюс как можно больше пробелов.
    Здесь шаблон замены пуст.
  • в режиме вставки дважды нажмите CTRL-W (каждый раз, когда он удаляет слово, или пробел в начале строки, или новую строку) (как подсказывает ib. , это зависит от настройки backspace ).

Ссылки:

  • :help J
  • :help gJ
  • :help k
  • :help range
  • :help :j
  • :help pattern
  • :help i_CTRL-W
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...