Das Paket `listings` verwendet intern diverse sogenannte Haken (engl. *hook*), um bei bestimmten Verarbeitungszuständen zusätzliche Befehle auszuführen. Einer dieser Haken ist `PreSet` und wird ausgeführt, bevor das Listing verarbeitet wird. In diesem Haken setzt `listings` normalerweise `\lst@firstline` auf 0 und `\lst@lastline` auf 9999999. Die beiden Makros geben an, welche Zeilen des Listings ausgegeben werden sollen. Man kann über den genannten Haken die beiden Zähler natürlich auch auf andere Werte setzen:
\documentclass{scrartcl}
\usepackage{listings}
\makeatletter
\lst@AddToHook{PreSet}{\def\lst@firstline{10000000\relax}%
\def\lst@lastline{0\relax}\let\lst@linerange\@empty}
\makeatother
\begin{document}
\begin{lstlisting}
#...
\end{lstlisting}% Hier hattest Du einen Fehler in Deinem angeblichen Minimalbeispiel!
Hallo Welt!
\end{document}
Allerdings funktioniert das nicht mehr, wenn man die zugehörigen Optionen bei `lstlisting` angegeben hat:
\documentclass{scrartcl}
\usepackage{listings}
\makeatletter
\lst@AddToHook{PreSet}{\def\lst@firstline{10000000\relax}%
\def\lst@lastline{0\relax}\let\lst@linerange\@empty}
\makeatother
\begin{document}
\begin{lstlisting}[firstline=1,lastline=10]
#...
\end{lstlisting}% Hier hattest Du einen Fehler in Deinem angeblichen Minimalbeispiel!
Hallo Welt!
\end{document}
Es gibt aber einen weiteren Haken, der nach den Optionen ausgewertet wird:
\documentclass{scrartcl}
\usepackage{listings}
\makeatletter
\lst@AddToHook{Init}{\def\lst@firstline{10000000\relax}%
\def\lst@lastline{0\relax}\let\lst@linerange\@empty}
\makeatother
\begin{document}
\begin{lstlisting}[firstline=1,lastline=10]
#...
\end{lstlisting}% Hier hattest Du einen Fehler in Deinem angeblichen Minimalbeispiel!
Hallo Welt!
\end{document}
Zwar wird die `listlisting`-Umgebung so auch noch immer verarbeitet. Es werden aber keine Listings mehr ausgegeben. Für Listings mit `caption` oder `frame` o. ä. erhält man aber weiterhin den Titel bzw. den Kasten:
\documentclass{scrartcl}
\usepackage{listings}
\makeatletter
\lst@AddToHook{Init}{\def\lst@firstline{10000000\relax}%
\def\lst@lastline{0\relax}\let\lst@linerange\@empty}
\makeatother
\begin{document}
\begin{lstlisting}[firstline=1,lastline=10,caption=Test,frame=tlrb]
#...
\end{lstlisting}% Hier hattest Du einen Fehler in Deinem angeblichen Minimalbeispiel!
Hallo Welt!
\end{document}
Will man auch das nicht, müsste man sich etwas komplett anderes ausdenken, beispielsweise:
\documentclass{scrartcl}
\usepackage{listings}
\usepackage{filecontents}
\renewcommand*\lstlisting[1][]{\filecontents{dummy.tex}}
\def\endlstlisting{\endfilecontents}
\begin{document}
\begin{lstlisting}[firstline=1,lastline=10,caption=Test,frame=tlrb]
#...
\end{lstlisting}% Hier hattest Du einen Fehler in Deinem angeblichen Minimalbeispiel!
Hallo Welt!
\end{document}
Dabei wird die `lstlisting`-Umgebung letztlich in eine `filecontents`-Umgebung umdefiniert. Meine Versuche, ähnliches mit Hilfe des `comment`-Pakets zu erreichen, ist hingegen nicht gelungen. In diesem Fall werden dann aber auch Optionen wie `label` nicht mehr ausgewertet, so dass ggf. Querverweise (beispielsweise mit `\ref` oder `\pageref`) auf Listings dann nicht mehr aufgelöst werden können.
Man könnte sich natürlich auch eine schönere Lösung basteln, die zwar grundsätzlich wie der letzte Vorschlag funktioniert, bei der aber die dummy-Datei nicht geschrieben wird. Diese Obige Lösung war jedoch so schön einfach und relativ leicht zu verstehen. Daher habe ich darauf verzichtet, tiefer einzusteigen.
Welche Lösung, am ehesten in Deinem Sinn ist, kann ich mit den gegebenen Informationen leider nicht beurteilen.