Есть ли способ сослаться на текущий выбранный текст в команде в Vim? - PullRequest
4 голосов
/ 15 декабря 2011

Скажите, что в моем файле C head я хочу добавить еще один файл, который еще не был создан:

#include "AnotherFile.h" /*not being created yet*/

Теперь я выбираю файл в визуальном режиме,
#include "AnotherFile.h"

Как создать новый файл с именем того, что я выбрал? Я имею в виду,

:e  {something that  refers to what I selected} 

Ответы [ 4 ]

6 голосов
/ 15 декабря 2011

Самое близкое, что я могу придумать, - это создать функцию:

function! W() range
  execute "e " .  getline("'<")[getpos("'<")[2]-1:getpos("'>")[2]] 
endfu

Затем вы можете выбрать слово и набрать :call W() + enter, что должно открыть новый буфер.

РЕДАКТИРОВАТЬ Функция выше не работает без ошибок, если буфер, содержащий #include, изменен. В таком случае лучше подходит следующая функция:

function! W() range
  let l:fileName = getline("'<")[getpos("'<")[2]-1:getpos("'>")[2]] 
  new      
  execute "w " . l:fileName
endfu

РЕДАКТИРОВАТЬ 2 Вы также можете попробовать набрать :e <cfile> (см. :help <cfile>).

РЕДАКТИРОВАТЬ 3 Наконец, под :help gf вы найдете скрытый

If you do want to edit a new file, use: >
        :e <cfile>
To make gf always work like that: 
        :map gf :e <cfile><CR>
4 голосов
/ 15 декабря 2011

В режиме командной строки CTRL-R с последующим регистром «name» вставляет содержимое указанного регистра.

Если вы только что выбрали имя файла, нажмите y : e SPACE CTRL + R " ENTER , что означает:

  • y - вернуть выбранный текст в безымянный регистр
  • :e + SPACE - войти в режим командной строки и начать вводить команду :edit
  • CTRL-R" - вставить только что выдернутый текст

См. :help c_CTRL-R, :help registers.

Кстати, CTRL-R делает то же самое в режиме вставки, я часто использую его. См :help i_CTRL_R

1 голос
/ 15 декабря 2011

Чаще всего вам нужно просто набрать правильное имя файла вокруг текущей позиции курсора. В Vim есть функция для определения правдоподобных / действительных имен файлов (isfname), и вы можете использовать ее, не выбирая ничего, набрав C-r C-f

В качестве альтернативы есть C-r C-w для текущего выбранного слова.

Как уже упоминалось другими, вы также можете обратиться к любому регистру, используя Cr <reg> (например, Cr " для регистр по умолчанию)

1 голос
/ 15 декабря 2011

Если вы выбрали имя файла в визуальном режиме:

  1. Чтобы восстановить выбранное имя файла, нажмите y
  2. Откройте окно команд, нажав q:, пока вы находитесь внормальный режим
  3. Нажмите i, чтобы перейти в режим вставки в командном окне, и введите e
  4. Esc ape в нормальном режиме и нажмите p, чтобы вставить имя файла для восстановления
  5. Нажмите Enter

Конечно, если вам нужно делать это часто, вы должны создать макрос и сопоставить его с некоторой легко запоминающейся комбинацией клавиш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...