1
0
mirror of https://github.com/m00natic/vlfi.git synced 2024-10-05 18:30:51 +01:00
vlfi/README.org

144 lines
4.4 KiB
Org Mode
Raw Normal View History

* View Large Files
2013-12-03 00:54:33 +00:00
Emacs minor mode that allows viewing, editing and searching large
files in batches. Batch size can be adjusted on the fly and bounds
the memory that is to be used for operations on the file.
2013-02-02 14:12:30 +00:00
This is development version of the GNU ELPA [[http://elpa.gnu.org/packages/vlf][vlf.el]] package. Here's
what it does in a nutshell:
2013-04-14 17:55:39 +01:00
2013-04-13 21:10:47 +01:00
- regular expression search on whole file (in constant memory
determined by current batch size)
- chunk editing (if size has changed, saving is done in constant
memory determined by current batch size)
2013-04-16 13:56:10 +01:00
- occur like indexing
2013-04-13 21:10:47 +01:00
- options to jump to beginning, end or arbitrary file chunk
2013-02-02 14:12:30 +00:00
- ability to jump/insert given number of batches at once
2013-04-13 21:10:47 +01:00
- newly added content is acknowledged if file has changed size
meanwhile
2013-04-14 17:55:39 +01:00
- automatic scrolling of batches
2013-12-11 01:21:08 +00:00
- as VLF is minor mode, font locking and functionality of the
respective major mode is also present
2013-08-25 15:57:43 +01:00
- VLF is added as an option when opening large files
2013-04-17 10:33:04 +01:00
GNU Emacs 23 and 24 are supported.
* Overview and tips
2013-08-25 15:57:43 +01:00
M-x vlf PATH-TO-FILE
2013-04-17 10:33:04 +01:00
** Unicode
2013-04-17 10:33:04 +01:00
Emacs' Unicode support is leveraged so you'll not see bare bytes but
characters decoded as if file is normally opened. This holds for
2013-04-17 10:33:04 +01:00
editing, search and indexing.
2013-05-02 12:25:39 +01:00
** 32-bit GNU Emacs
2013-05-01 00:02:28 +01:00
Regular Emacs integers are used, so if you use 32-bit Emacs without
2014-01-01 13:43:14 +00:00
bignum support, VLF will not work with files over 512 MB (maximum
integer value).
** Memory control
2013-04-17 10:33:04 +01:00
2013-08-25 15:57:43 +01:00
*vlf-batch-size* bounds the memory used for all operations.
2013-04-17 10:33:04 +01:00
* Detail usage
2013-12-11 01:21:08 +00:00
** Applicability
You can control when vlf-mode is invoked or offered as choice with the
*vlf-application* customization option. By default it will offer VLF
when opening large files. There are also options to never use it (you
can still call *vlf* command explicitly); to use it without asking for
large files or to invoke it on all files. Here's example setup such
that vlf-mode automatically launches for large files:
#+BEGIN_EXAMPLE
(custom-set-variables
'(vlf-application 'dont-ask))
#+END_EXAMPLE
*** Disable for specific mode
To disable automatic usage of VLF for a major mode, add it to
*vlf-forbidden-modes-list*.
*** Disable for specific function
To disable automatic usage of VLF for a function, for example named
*func* defined in file *file.el*:
#+BEGIN_EXAMPLE
(vlf-disable-for-function func "file.el")
#+END_EXAMPLE
2013-12-11 01:21:08 +00:00
** Keymap
All VLF operations are grouped under the *C-c C-v* prefix by default.
Here's example how to add another prefix (*C-x v*):
#+BEGIN_EXAMPLE
(eval-after-load "vlf"
'(define-key vlf-prefix-map "\C-xv" vlf-mode-map))
#+END_EXAMPLE
** Control batch size
2013-04-17 10:33:04 +01:00
2013-12-03 00:54:33 +00:00
*C-c C-v +* and *C-c C-v -* control current batch size by factors
of 2.
2013-04-17 10:33:04 +01:00
2013-08-25 15:57:43 +01:00
You can also set by hand local variable *vlf-batch-size* and then
2013-12-03 00:54:33 +00:00
refresh with *C-c C-v g*.
2013-04-17 10:33:04 +01:00
2013-04-17 11:19:37 +01:00
** Move around
2013-04-17 10:33:04 +01:00
Scrolling automatically triggers moving to previous or next chunk at
the beginning or end respectively of the current one.
2013-12-11 01:21:08 +00:00
*C-c C-v n* and *C-c C-v p* move batch by batch. With positive
2013-12-03 00:54:33 +00:00
prefix argument they move prefix number of batches. With negative -
append prefix number of batches.
2013-04-17 10:33:04 +01:00
2013-12-11 01:21:08 +00:00
*C-c C-v SPC* displays batch starting from current point.
2013-12-03 00:54:33 +00:00
*C-c C-v [* and *C-c C-v ]* take you to the beginning and end of file
respectively.
2013-04-17 10:33:04 +01:00
2013-12-03 00:54:33 +00:00
*C-c C-v j* jumps to given chunk. To see where you are in file and
how many chunks there are (using the current batch size), look at the
parenthesized part of the buffer name, batch size is also indicated at
the end.
2013-04-17 10:33:04 +01:00
** Follow point
2014-01-01 13:43:14 +00:00
Continuous chunk recenter around point in current buffer can be
toggled with *C-c C-v f*.
2013-04-17 11:19:37 +01:00
** Search whole file
2013-04-17 10:33:04 +01:00
2013-12-03 00:54:33 +00:00
*C-c C-v s* and *C-c C-v r* search forward and backward respectively
over the whole file. This is done batch by batch so if you have
really huge file - you'd better set somewhat bigger batch size
beforehand.
2013-04-17 10:33:04 +01:00
2013-05-01 00:02:28 +01:00
** Occur over whole file
*C-c C-v o* builds index for given regular expression just like
*M-x occur*. It does this batch by batch over the whole file. Note
that even if you prematurely stop it with *C-g*, it will still show
index of what's found so far.
2013-05-01 00:02:28 +01:00
2013-05-02 12:25:39 +01:00
** Jump to line
2013-12-03 00:54:33 +00:00
*C-c C-v l* jumps to given line in file. This is done by searching
from the beginning, so again the bigger current batch size, the
quicker. With negative argument, lines are counted from the end of
file.
2013-05-02 12:25:39 +01:00
2013-12-03 00:54:33 +00:00
** Edit and save
2013-04-17 10:33:04 +01:00
2013-12-03 00:54:33 +00:00
If editing doesn't change size of the chunk, only this chunk is saved.
Otherwise the remaining part of the file is adjusted batch by batch,
so again you'd better have bigger current batch size.