I know of three ways:
1) Create a column made from other columns and use the virtual_libraries() function. This will populate the column with the names of the VLs a book is in. You can then use #column:false (where #column is your column's lookup name) to find books in no VL.
This method can be slow if your library is large (thousands of books) and/or if you have lots of virtual libraries. If the performance is unacceptable then method 2 will be better.
2) Use either or both of the plugins
Save Virtual Libraries To Column (GUI) and
Save Virtual Libraries To Column. Both of these compute the column values on demand and save the results in a standard custom tags-like column, so the performance penalty is minimal.
3) if you have only a few VLs then you can use a saved search. Assuming you have virtual librarys Lib1, Lib2, and Storage, the search expression to save would be
Code:
not (vl:"Lib1" or vl:"Lib2" or vl:"Storage")
The downside of this technique is that you must maintain the saved search. Using the "Save Virtual Libraries To Column (GUI)" plugin gives you equivalent functionality without the maintenance.