Portál AbcLinuxu, 7. listopadu 2025 18:20
Řešení dotazu:
#include <stdio.h>
int main (void)
{
int a;
int b;
int c;
int d;
/* za tento komentar chci vlozit */
return (0);
}
po:
#include <stdio.h>
int main (void)
{
int a;
int b;
int c;
int d;
/* za tento komentar chci vlozit */
int a;
int b;return (0);
} int c;
int d;
Jde o Vim verze 7.2
INSERT INTO tab1 (name) VALUES ("abc");
INSERT INTO tab1 (name) VALUES ("def");
/* chci vytvorit novy SQL prikaz s temi stringy - mezi tyhle dva inserty */
INSERT INTO tab2 (num) VALUES (1);
INSERT INTO tab2 (num) VALUES (2);
výsledek:
INSERT INTO tab1 (name) VALUES ("abc");
INSERT INTO tab1 (name) VALUES ("def");
/* chci vytvorit novy SQL prikaz s temi stringy - mezi tyhle dva inserty */
abc
defINSERT INTO tab2 (num) VALUES (1);
INSERT INTO tab2 (num) VALUES (2);
Jasně, kdyby to byl další insert, tak si zkopíruju celé řádky a blokově přepíšu to co potřebuju (tabulka, sloupce,...), ale o to tu teď nejde. Jde o to, jestli je tohle insert-replace chování správné a pokud ano, tak jak provést čistý insert s blokem textu?
abc defa vložil ho na prázdný řádek příkazem "p" (paste). Nevím k čemu to má být dobré? Každopádně se vim zachoval standardně, odsunul vše co je na následujících řádcích doprava a vložil blok tam, kam jste chtěl. Spíš bych čekal že ho budete vkládat třeba na místo kde je "1" aby blok
1 2nahradil blokem
abc def? Tak pokud najedete na jedničku a dáte "p", tak se to vloží tam, před(nebo za) 1 a 2 se vloží abc a def. 1 a 1 pak ještě musíte blokově smazat. Pokud chcete vytvořit nový SQL příkaz, tak ho ale musíte přece nejdřív vytvořit ;), tedy napsat nějaké to nové INSERT INTO a pak až vkládat blok, ne? Nic takového (ani pokus o to) ve vašem příkladu nevidím :( Takže nevím jestli se to chová nějak opravdu divně nebo jen něco divného děláte :)
Pokud chcete vytvořit nový SQL příkaz, tak ho ale musíte přece nejdřív vytvořit ;), tedy napsat nějaké to nové INSERT INTO a pak až vkládat blok, ne? Nic takového (ani pokus o to) ve vašem příkladu nevidím :( Takže nevím jestli se to chová nějak opravdu divně nebo jen něco divného děláte :)(OT, ale...) Já bych to řešil tak, že bych si nakopíroval hodnoty a pak přes makro bych doplnil to SQL okolo. Ale tak jak píšete by to taky šlo.
INSERT INTO tab1 (name) VALUES ("abc");
INSERT INTO tab1 (name) VALUES ("def");
/* chci vytvorit novy SQL prikaz s temi stringy - opravit tyto dva inserty */
INSERT INTO tab2 (num) VALUES (1);
INSERT INTO tab2 (num) VALUES (2);
INSERT INTO tab1 (name) VALUES ("abc");
INSERT INTO tab1 (name) VALUES ("def");
/* chci vytvorit novy SQL prikaz s temi stringy - opravit tyto dva inserty */
INSERT INTO tab2 (num) VALUES (1abc);
INSERT INTO tab2 (num) VALUES (2def);
ještě smazat blokově 1 a 2 (bývalo by bylo lepší předem)
INSERT INTO tab1 (name) VALUES ("abc");
INSERT INTO tab1 (name) VALUES ("def");
/* chci vytvorit novy SQL prikaz s temi stringy - opravit tyto dva inserty */
INSERT INTO tab2 (num) VALUES (abc);
INSERT INTO tab2 (num) VALUES (def);
voilà.
Další možnost:
INSERT INTO tab1 (name) VALUES ("abc");
INSERT INTO tab1 (name) VALUES ("def");
/* chci vytvorit novy SQL prikaz s temi stringy - opravit tento jeden insert (se nevleze) */
INSERT INTO tab2 (num) VALUES (1);
DELETE * FROM tab2 where id='foo';
INSERT INTO tab1 (name) VALUES ("abc");
INSERT INTO tab1 (name) VALUES ("def");
/* chci vytvorit novy SQL prikaz s temi stringy - opravit tento jeden insert (se nevleze) */
INSERT INTO tab2 (num) VALUES (1abc);
DELETE * FROM tab2 where id='foodef';
moje chyba, neohlídal jsem si počet řádků.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.