Вам нужно привести данные так, чтобы компилятор знал, где найти элементы структуры, вот полный пример:
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
typedef struct s_list
{
void *content;
size_t content_size;
struct s_list *next;
}t_list;
typedef struct s_entry
{
char *filename;
struct stat filestat;
}t_entry;
int main(void)
{
t_list *foo = malloc(sizeof *foo);
t_entry *bar = malloc(sizeof *bar);
bar->filename = malloc(10);
foo->content = bar;
free(((t_entry *)foo->content)->filename);
free(foo->content);
free(foo);
return 0;
}
:%s/$/\*/g
должен работать. Так должен :%s/$/*/g
как , MrWiggles указывает правильно.
Еще короче, чем: поисковая команда:
:%norm A*
Это - то, что это означает:
% = for every line
norm = type the following commands
A* = append '*' to the end of current line
Также:
:g/$/norm A*
Также:
gg<Ctrl-v>G$A*<Esc>
Одна опция:
:g/$/s//*
Это найдет каждую привязку к концу строки и заменит ею с *
. Я говорю "замену", но на самом деле это - больше добавления, так как привязка является специальной вещью, а не регулярным символом. Для получения дополнительной информации см. Питание g - Примеры .
:%s/\n/*\r/g
Ваш первый корректен где-либо еще, но Vim должен иметь другую новую строку, обрабатывающую по некоторым причинам.
%s/\s*$/\*/g
это добьется цели и гарантирует, что ведущие пробелы проигнорированы.